Author: solomax
Date: Wed Aug 14 07:03:21 2013
New Revision: 1513742

URL: http://svn.apache.org/r1513742
Log:
[OPENMEETINGS-763] drop seems to be fixed

Modified:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionProperties.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java?rev=1513742&r1=1513741&r2=1513742&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java 
(original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java 
Wed Aug 14 07:03:21 2013
@@ -40,7 +40,11 @@ import org.apache.commons.cli.ParseExcep
 import org.apache.commons.cli.Parser;
 import org.apache.commons.cli.PosixParser;
 import org.apache.commons.transaction.util.FileHelper;
-import org.apache.openjpa.jdbc.meta.MappingTool;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.schema.SchemaTool;
+import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.log.LogFactoryImpl.LogImpl;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.data.file.dao.FileExplorerItemDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingDao;
@@ -244,7 +248,7 @@ public class Admin {
                                        if (!conf.exists() || 
cmdl.hasOption("db-type") || cmdl.hasOption("db-host") || 
cmdl.hasOption("db-port") || cmdl.hasOption("db-name") || 
cmdl.hasOption("db-user") || cmdl.hasOption("db-pass")) {
                                                String dbType = 
cmdl.getOptionValue("db-type", "derby");
                                                File srcConf = new 
File(OmFileHelper.getWebinfDir(), "classes/META-INF/" + dbType + 
"_persistence.xml");
-                                               
ConnectionPropertiesPatcher.getPatcher(dbType).patch(
+                                               
ConnectionPropertiesPatcher.getPatcher(dbType, connectionProperties).patch(
                                                                srcConf
                                                                , conf
                                                                , 
cmdl.getOptionValue("db-host", "localhost")
@@ -252,7 +256,6 @@ public class Admin {
                                                                , 
cmdl.getOptionValue("db-name", null)
                                                                , 
cmdl.getOptionValue("db-user", null)
                                                                , 
cmdl.getOptionValue("db-pass", null)
-                                                               , 
connectionProperties
                                                                );
                                        } else {
                                                //get properties from existent 
persistence.xml
@@ -578,18 +581,31 @@ public class Admin {
                }
        }
        
+       private static LogImpl getLogImpl(JDBCConfiguration conf) {
+               return (LogImpl)conf.getLog(JDBCConfiguration.LOG_SCHEMA);
+       }
+
        private static void immediateDropDB(ConnectionProperties props) throws 
Exception {
-               String[] args = {
-                               "-schemaAction", "retain,drop"
-                               , "-properties", new 
File(OmFileHelper.getWebinfDir(), PERSISTENCE_NAME).getCanonicalPath()
-                               , "-connectionDriverName", props.getDriver()
-                               , "-connectionURL", props.getURL()
-                               , "-connectionUserName", props.getLogin()
-                               , "-connectionPassword", props.getPassword()
-                               , "-ignoreErrors", "true"};
-               MappingTool.main(args);
+       JDBCConfigurationImpl conf = new JDBCConfigurationImpl();
+        try {
+               conf.setPropertiesFile(new File(OmFileHelper.getWebinfDir(), 
PERSISTENCE_NAME));
+               conf.setConnectionDriverName(props.getDriver());
+               conf.setConnectionURL(props.getURL());
+               conf.setConnectionUserName(props.getLogin());
+               conf.setConnectionPassword(props.getPassword());
+               //HACK to suppress all warnings
+               getLogImpl(conf).setLevel(Log.INFO);
+               SchemaTool st = new SchemaTool(conf, SchemaTool.ACTION_DROPDB);
+               st.setIgnoreErrors(true);
+               st.setOpenJPATables(true);
+               st.setIndexes(false);
+               st.setPrimaryKeys(false);
+               st.run();
+        } finally {
+            conf.close();
+        }
        }
-       
+
        private File checkRestoreFile(String file) {
                File backup = new File(file);
                if (!cmdl.hasOption("file") || !backup.exists() || 
!backup.isFile()) {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionProperties.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionProperties.java?rev=1513742&r1=1513741&r2=1513742&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionProperties.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionProperties.java
 Wed Aug 14 07:03:21 2013
@@ -19,11 +19,19 @@
 package org.apache.openmeetings.cli;
 
 public class ConnectionProperties {
+       public enum DbType {
+               db2
+               , derby
+               , mysql
+               , oracle
+               , postgresql
+       }
 
        private String driver = "org.apache.derby.jdbc.ClientDriver";
        private String url = "jdbc:derby:openmeetings";
        private String login = "user";
        private String password = "secret";
+       private DbType dbType = DbType.derby;
 
        public String getDriver() {
                return driver;
@@ -57,9 +65,17 @@ public class ConnectionProperties {
                this.password = connectionPass;
        }
 
+       public DbType getDbType() {
+               return dbType;
+       }
+
+       public void setDbType(DbType dbType) {
+               this.dbType = dbType;
+       }
+       
        @Override
        public String toString() {
-               return "ConnectionProperties [driver=" + driver + ", url=" + url
+               return "ConnectionProperties [type=" + dbType + ", driver=" + 
driver + ", url=" + url
                                + ", login=" + login + ", password=" + password 
+ "]";
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java?rev=1513742&r1=1513741&r2=1513742&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
 Wed Aug 14 07:03:21 2013
@@ -33,6 +33,7 @@ import javax.xml.xpath.XPathFactory;
 
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.cli.ConnectionProperties.DbType;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -41,16 +42,8 @@ public abstract class ConnectionProperti
        protected static final String URL_PREFIX = "Url=";
        protected ConnectionProperties connectionProperties;
        
-       public enum PatcherType {
-               db2
-               , derby
-               , mysql
-               , oracle
-               , postgres
-       }
-       
-       static ConnectionPropertiesPatcher getPatcher(String _dbType) {
-               PatcherType dbType = PatcherType.valueOf(_dbType);
+       static ConnectionPropertiesPatcher getPatcher(String _dbType, 
ConnectionProperties connectionProperties) {
+               DbType dbType = DbType.valueOf(_dbType);
                ConnectionPropertiesPatcher patcher = null;
                switch (dbType) {
                        case db2:
@@ -62,7 +55,7 @@ public abstract class ConnectionProperti
                        case oracle:
                                patcher = new OraclePatcher();
                                break;
-                       case postgres:
+                       case postgresql:
                                patcher = new PostgresPatcher();
                                break;
                        case derby:
@@ -70,6 +63,7 @@ public abstract class ConnectionProperti
                                patcher = new DerbyPatcher();
                                break;
                }
+               patcher.connectionProperties = connectionProperties;
                return patcher;
        }
        
@@ -98,8 +92,7 @@ public abstract class ConnectionProperti
                return element.getAttributeNode("value");
        }
        
-       public void patch(File srcXml, File destXml, String host, String port, 
String db, String user, String pass, ConnectionProperties connectionProperties) 
throws Exception {
-               this.connectionProperties = connectionProperties;
+       public void patch(File srcXml, File destXml, String host, String port, 
String db, String user, String pass) throws Exception {
                Document doc = getDocument(srcXml);
                
                Attr val = getConnectionProperties(doc);
@@ -157,6 +150,13 @@ public abstract class ConnectionProperti
                        }
                        prop = getPropFromPersistence(tokens, i, "Url");
                        if (prop != null) {
+                               try {
+                                       //will try to "guess" dbType
+                                       String[] parts = prop.split(":");
+                                       
connectionProperties.setDbType(DbType.valueOf(parts[1]));
+                               } catch (Exception e) {
+                                       //ignore
+                               }
                                connectionProperties.setURL(prop);
                        }
                }


Reply via email to