Author: solomax
Date: Mon Apr 23 11:15:46 2012
New Revision: 1329184
URL: http://svn.apache.org/viewvc?rev=1329184&view=rev
Log:
OPENMEETINGS-194 patch proposed by Dmitry Zamula implementing --drop
command-line installer option is commited
Added:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionProperties.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Admin.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionPropertiesPatcher.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Db2Patcher.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/DerbyPatcher.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/MysqlPatcher.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/OraclePatcher.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/PostgresPatcher.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Admin.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Admin.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Admin.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Admin.java
Mon Apr 23 11:15:46 2012
@@ -25,6 +25,7 @@ import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.Parser;
import org.apache.commons.cli.PosixParser;
+import org.apache.openjpa.jdbc.meta.MappingTool;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.dao.OmTimeZoneDaoImpl;
import org.openmeetings.app.data.file.FileUtils;
@@ -90,6 +91,8 @@ public class Admin {
options.addOption(new OmOption("i", null, "db-name", true, "The
name of Openmeetings database", true));
options.addOption(new OmOption("i", null, "db-user", true,
"User with write access to the DB specified", true));
options.addOption(new OmOption("i", null, "db-pass", true,
"Password of the user with write access to the DB specified", true));
+ options.addOption(new OmOption("i", null, "drop", false, "Drop
database before installation", true));
+ options.addOption(new OmOption("i", null, "force", false,
"Install without checking the existence of old data in the database.", true));
return options;
}
@@ -271,6 +274,7 @@ public class Admin {
String login =
cmdl.getOptionValue("user");
String email =
cmdl.getOptionValue("email");
String group =
cmdl.getOptionValue("group");
+ //TODO commented for now, since not in
use boolean force = cmdl.hasOption("force");
if
(cmdl.hasOption("skip-default-rooms")) {
cfg.createDefaultRooms = "0";
}
@@ -322,6 +326,7 @@ public class Admin {
System.exit(1);
}
}
+ ConnectionProperties
connectionProperties = new ConnectionProperties();
if (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(omHome,
"WEB-INF/classes/META-INF/" + dbType + "_persistence.xml");
@@ -334,8 +339,16 @@ public class Admin {
,
cmdl.getOptionValue("db-name", null)
,
cmdl.getOptionValue("db-user", null)
,
cmdl.getOptionValue("db-pass", null)
+ ,
connectionProperties
);
}
+
+ if(cmdl.hasOption("drop")) {
+ String[] mappingToolArgs =
{"-sa", "drop", "-p", omHome.getPath() +
"/WEB-INF/classes/META-INF/persistence.xml",
+
"-connectionDriverName", connectionProperties.getDriverName(),
"-connectionURL", connectionProperties.getConnectionURL(),
+
"-connectionUserName", connectionProperties.getConnectionLogin(),
"-connectionPassword", connectionProperties.getConnectionPass()};
+
MappingTool.main(mappingToolArgs);
+ }
ClassPathXmlApplicationContext ctx =
getApplicationContext(ctxName);
OmTimeZoneDaoImpl tzDao =
ctx.getBean(OmTimeZoneDaoImpl.class);
Added:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionProperties.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionProperties.java?rev=1329184&view=auto
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionProperties.java
(added)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionProperties.java
Mon Apr 23 11:15:46 2012
@@ -0,0 +1,41 @@
+package org.openmeetings.cli;
+
+public class ConnectionProperties {
+
+ private String driverName = "org.apache.derby.jdbc.ClientDriver";
+ private String connectionURL = "jdbc:derby:openmeetings";
+ private String connectionLogin = "user";
+ private String connectionPass = "secret";
+
+ public String getDriverName() {
+ return driverName;
+ }
+
+ public void setDriverName(String driverName) {
+ this.driverName = driverName;
+ }
+
+ public String getConnectionURL() {
+ return connectionURL;
+ }
+
+ public void setConnectionURL(String connectionURL) {
+ this.connectionURL = connectionURL;
+ }
+
+ public String getConnectionLogin() {
+ return connectionLogin;
+ }
+
+ public void setConnectionLogin(String connectionLogin) {
+ this.connectionLogin = connectionLogin;
+ }
+
+ public String getConnectionPass() {
+ return connectionPass;
+ }
+
+ public void setConnectionPass(String connectionPass) {
+ this.connectionPass = connectionPass;
+ }
+}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionPropertiesPatcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionPropertiesPatcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionPropertiesPatcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/ConnectionPropertiesPatcher.java
Mon Apr 23 11:15:46 2012
@@ -20,6 +20,9 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
public abstract class ConnectionPropertiesPatcher {
+
+ ConnectionProperties connectionProperties;
+
public enum PatcherType {
db2
, derby
@@ -52,7 +55,8 @@ public abstract class ConnectionProperti
return patcher;
}
- public void patch(File srcXml, File destXml, String host, String port,
String db, String user, String pass) throws Exception {
+ public void patch(File srcXml, File destXml, String host, String port,
String db, String user, String pass, ConnectionProperties connectionProperties)
throws Exception {
+ this.connectionProperties = connectionProperties;
DocumentBuilderFactory dbFactory =
DocumentBuilderFactory.newInstance();
//dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
@@ -73,7 +77,7 @@ public abstract class ConnectionProperti
protected Attr patchAttribute(Attr attr, String host, String port,
String db, String user, String pass) {
String[] tokens = attr.getValue().split(",");
- patchUser(tokens, user, pass);
+ patchUserPassDriver(tokens, user, pass);
patchDb(tokens, host, port, db);
attr.setValue(StringUtils.join(tokens, ","));
return attr;
@@ -87,16 +91,42 @@ public abstract class ConnectionProperti
}
}
- protected void patchUser(String[] tokens, String user, String pass) {
+ protected void patchUserPassDriver(String[] tokens, String user,
+ String pass) {
+ String prop;
for (int i = 0; i < tokens.length; ++i) {
+ prop = getPropFromPersistence(tokens, i,
"DriverClassName");
+ if (prop != null)
+ connectionProperties.setDriverName(prop);
+
if (user != null) {
patchProp(tokens, i, "Username", user);
+ connectionProperties.setConnectionLogin(user);
+ } else {
+ prop = getPropFromPersistence(tokens, i,
"Username");
+ if (prop != null)
+
connectionProperties.setConnectionLogin(prop);
}
+
if (pass != null) {
patchProp(tokens, i, "Password", pass);
+ connectionProperties.setConnectionPass(pass);
+ } else {
+ prop = getPropFromPersistence(tokens, i,
"Password");
+ if (prop != null)
+
connectionProperties.setConnectionPass(prop);
}
}
}
+ protected String getPropFromPersistence(String[] tokens, int idx,
String name){
+ String prop = tokens[idx].trim();
+ if (prop.startsWith(name)) {
+ //From "Username=root" getting only "root"
+ return prop.substring(prop.indexOf("=") + 1);
+ }
+ return null;
+ }
+
protected abstract void patchDb(String[] tokens, String host, String
port, String db);
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Db2Patcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Db2Patcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Db2Patcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/Db2Patcher.java
Mon Apr 23 11:15:46 2012
@@ -8,7 +8,9 @@ public class Db2Patcher extends Connecti
for (int i = 0; i < tokens.length; ++i) {
String prop = tokens[i].trim();
if (prop.startsWith("Url")) {
- String url = "Url=jdbc:db2://" + host + ":" +
port + "/" + db;
+ String connectionURL = "jdbc:db2://" + host +
":" + port + "/" + db;
+
connectionProperties.setConnectionURL(connectionURL);
+ String url = "Url=" + connectionURL;
tokens[i] = url;
}
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/DerbyPatcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/DerbyPatcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/DerbyPatcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/DerbyPatcher.java
Mon Apr 23 11:15:46 2012
@@ -8,7 +8,9 @@ public class DerbyPatcher extends Connec
String prop = tokens[i].trim();
if (prop.startsWith("Url")) {
String suffix =
prop.substring(prop.indexOf(';'));
- String url = "Url=jdbc:derby" + ":" + db +
suffix;
+ String connectionURL = "jdbc:derby" + ":" + db;
+
connectionProperties.setConnectionURL(connectionURL);
+ String url = "Url=" + connectionURL + suffix;
tokens[i] = url;
}
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/MysqlPatcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/MysqlPatcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/MysqlPatcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/MysqlPatcher.java
Mon Apr 23 11:15:46 2012
@@ -9,7 +9,9 @@ public class MysqlPatcher extends Connec
String prop = tokens[i].trim();
if (prop.startsWith("Url")) {
String suffix =
prop.substring(prop.indexOf('?'));
- String url = "Url=jdbc:mysql://" + host + ":" +
port + "/" + db + suffix;
+ String connectionURL = "jdbc:mysql://" + host +
":" + port + "/" + db;
+
connectionProperties.setConnectionURL(connectionURL);
+ String url = "Url=" + connectionURL + suffix;
tokens[i] = url;
}
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/OraclePatcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/OraclePatcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/OraclePatcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/OraclePatcher.java
Mon Apr 23 11:15:46 2012
@@ -8,7 +8,9 @@ public class OraclePatcher extends Conne
for (int i = 0; i < tokens.length; ++i) {
String prop = tokens[i].trim();
if (prop.startsWith("Url")) {
- String url = "Url=jdbc:oracle:thin:@" + host +
":" + port + ":" + db;
+ String connectionURL = "jdbc:oracle:thin:@" +
host + ":" + port + ":" + db;
+
connectionProperties.setConnectionURL(connectionURL);
+ String url = "Url=" + connectionURL;
tokens[i] = url;
}
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/PostgresPatcher.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/PostgresPatcher.java?rev=1329184&r1=1329183&r2=1329184&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/PostgresPatcher.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/cli/PostgresPatcher.java
Mon Apr 23 11:15:46 2012
@@ -8,7 +8,9 @@ public class PostgresPatcher extends Con
for (int i = 0; i < tokens.length; ++i) {
String prop = tokens[i].trim();
if (prop.startsWith("Url")) {
- String url = "Url=jdbc:postgresql://" + host +
":" + port + "/" + db;
+ String connectionURL = "jdbc:postgresql://" +
host + ":" + port + "/" + db;
+
connectionProperties.setConnectionURL(connectionURL);
+ String url = "Url=" + connectionURL;
tokens[i] = url;
}
}