/*
* This software is distributed under the terms of the FSF
* Gnu Lesser General Public License (see lgpl.txt).
*
* This program is distributed WITHOUT ANY WARRANTY. See the
* GNU General Public License for more details.
*/
package com.scooterframework.tools.connection;
import java.io.File;
import java.util.HashMap;
import com.scooterframework.admin.ApplicationConfig;
import com.scooterframework.tools.common.AbstractGenerator;
import com.scooterframework.tools.common.ToolsUtil;
/**
* This is a utility to test database connections.
*
* <p>
* Usage examples:
* <pre>
Usage:
java -jar tools/connection-test.jar [app_path] [connection name]
Examples:
This page:
java -jar tools/connection-test.jar -help
Test blog app's default connection:
java -jar tools/connection-test.jar blog
Test blog app's db connection named oracle_db:
java -jar tools/connection-test.jar blog oracle_db
* </pre>
* </p>
*
* @author (Fei) John Chen
*/
public class ConnectionCheck {
/**
* @param args
*/
public static void main(String[] args) {
if (args.length > 2 || args.length == 1
&& args[0].equalsIgnoreCase("-help")) {
usage();
return;
}
try {
doTheWork(args);
}
catch(Throwable ex) {
log("ERROR ERROR ERROR: " + ex.getMessage());
ex.printStackTrace();
}
if (AbstractGenerator.frameworkInitiated)
ApplicationConfig.configInstanceForApp().endApplication();
}
private static void doTheWork(String[] args) throws Exception {
String connectionName = "";
String scooterHome = ToolsUtil.setSystemProperty("scooter.home", ToolsUtil.detectRootPath());
String defaultWebappsName = ToolsUtil.setSystemProperty("webapps.name", "webapps");
String appName = "";
String webappsPath = "";
String webappPath = "";
if (args.length == 0) {//use implicit app name
webappsPath = scooterHome + File.separator + defaultWebappsName;
appName = ToolsUtil.detectImplicitAppName(webappsPath);
webappPath = webappsPath + File.separator + appName;
}
else if (args.length > 0) {
String firstArg = args[0];
if (ToolsUtil.containsPath(firstArg)) {
String[] ss = ToolsUtil.getPathAndName(firstArg);
webappsPath = ss[0];
webappPath = ss[1];
appName = ss[2];
}
else {
appName = firstArg;
webappsPath = scooterHome + File.separator + defaultWebappsName;
webappPath = webappsPath + File.separator + appName;
}
if (args.length == 2) {
connectionName = args[1];
}
}
appName = appName.toLowerCase();
System.setProperty("app.name", appName);
webappsPath = ToolsUtil.setSystemProperty("webapps.path", webappsPath);
ToolsUtil.validatePathExistence(webappsPath);
webappPath = ToolsUtil.setSystemProperty("app.path", webappPath);
ToolsUtil.validatePathExistence(webappPath);
String appLogs = ToolsUtil.setSystemProperty("app.logs", (scooterHome + File.separator + "logs"));
ToolsUtil.validatePathExistence(appLogs);
String classFiles = webappPath + File.separator + "WEB-INF" + File.separator + "classes";
System.setProperty(ApplicationConfig.SYSTEM_KEY_CLASSFILE, classFiles);
ToolsUtil.validatePathExistence(classFiles);
String propertyFiles = webappPath + File.separator + "WEB-INF" + File.separator + "config";
System.setProperty(ApplicationConfig.SYSTEM_KEY_PROPERTYFILE, propertyFiles);
ToolsUtil.validatePathExistence(propertyFiles);
String sourceFiles = webappPath + File.separator + "WEB-INF" + File.separator + "src";
System.setProperty(ApplicationConfig.SYSTEM_KEY_SOURCEFILE, sourceFiles);
ToolsUtil.validatePathExistence(sourceFiles);
String referenceFiles = scooterHome + File.separator + "lib";
System.setProperty(ApplicationConfig.SYSTEM_KEY_REFERENCEFILE, referenceFiles);
ToolsUtil.validatePathExistence(referenceFiles);
String pluginFiles = scooterHome + File.separator + "plugins";
System.setProperty(ApplicationConfig.SYSTEM_KEY_PLUGINFILE, pluginFiles);
ToolsUtil.validatePathExistence(pluginFiles);
new ConnectionGenerator(connectionName, new HashMap<String, String>());
}
private static void log(Object o) {
System.out.println(o);
}
private static void usage() {
log("Usage:");
log(" java -jar tools/connection-test.jar [app_path] [connection name]");
log("");
log("Examples:");
log(" This page:");
log(" java -jar tools/connection-test.jar -help");
log("");
log(" Test blog app's default connection:");
log(" java -jar tools/connection-test.jar blog");
log("");
log(" Test blog app's db connection named oracle_db:");
log(" java -jar tools/connection-test.jar blog oracle_db");
log("");
}
}