--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java Mon Dec 16 15:29:02 2013 +0100
@@ -1,6 +1,7 @@
package info.globalcode.sql.dk;
import static info.globalcode.sql.dk.Functions.isNotEmpty;
+import static info.globalcode.sql.dk.Functions.isEmpty;
import static info.globalcode.sql.dk.Functions.equalz;
import java.util.ArrayList;
import java.util.Collection;
@@ -16,6 +17,7 @@
public static final String DEFAULT_NAME_PREFIX = ":";
private String sql;
private String databaseName;
+ private String databaseNameToTest;
private String namePrefix = DEFAULT_NAME_PREFIX;
private String formatterName;
private boolean batch;
@@ -34,7 +36,9 @@
VERSION,
LICENSE,
FORMATTERS,
- TYPES
+ TYPES,
+ DATABASES,
+ CONNECTION
}
public enum COMMAND_TYPE {
@@ -77,6 +81,9 @@
if (!equalz(namePrefix, DEFAULT_NAME_PREFIX)) {
e.addProblem(new InvalidOptionsException.OptionProblem("Do not specify name prefix if just showing info."));
}
+ if (showInfo.contains(INFO_TYPE.CONNECTION) && isEmpty(databaseNameToTest, false)) {
+ e.addProblem(new InvalidOptionsException.OptionProblem("Please specify which database should be tested."));
+ }
}
if (!namedParameters.isEmpty() && !numberedParameters.isEmpty()) {
@@ -182,4 +189,12 @@
public EnumSet<INFO_TYPE> getShowInfo() {
return showInfo;
}
+
+ public String getDatabaseNameToTest() {
+ return databaseNameToTest;
+ }
+
+ public void setDatabaseNameToTest(String databaseNameToTest) {
+ this.databaseNameToTest = databaseNameToTest;
+ }
}
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java Mon Dec 16 15:29:02 2013 +0100
@@ -114,6 +114,13 @@
case Tokens.INFO_VERSION:
options.addShowInfo(CLIOptions.INFO_TYPE.VERSION);
break;
+ case Tokens.INFO_DATABASES:
+ options.addShowInfo(CLIOptions.INFO_TYPE.DATABASES);
+ break;
+ case Tokens.INFO_CONNECTION:
+ options.addShowInfo(CLIOptions.INFO_TYPE.CONNECTION);
+ options.setDatabaseNameToTest(fetchNext(args, ++i));
+ break;
default:
throw new CLIParserException("Unknown option: " + arg);
}
@@ -145,6 +152,8 @@
public static final String INFO_LICENSE = "--license";
public static final String INFO_FORMATTERS = "--list-formatters";
public static final String INFO_TYPES = "--list-types";
+ public static final String INFO_DATABASES = "--list-databases";
+ public static final String INFO_CONNECTION = "--test-connection";
private Tokens() {
}
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Mon Dec 16 15:29:02 2013 +0100
@@ -23,7 +23,7 @@
/** Show info */
if (!options.getShowInfo().isEmpty()) {
InfoLister infoLister = new InfoLister();
- infoLister.showInfo(options.getShowInfo(), System.err);
+ infoLister.showInfo(options, System.err);
}
} catch (CLIParserException e) {
--- a/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Mon Dec 16 15:29:02 2013 +0100
@@ -10,7 +10,8 @@
*/
public class InfoLister {
- public void showInfo(EnumSet<CLIOptions.INFO_TYPE> infoTypes, PrintStream out) {
+ public void showInfo(CLIOptions options, PrintStream out) {
+ EnumSet<CLIOptions.INFO_TYPE> infoTypes = options.getShowInfo();
for (CLIOptions.INFO_TYPE infoType : infoTypes) {
switch (infoType) {
/**
@@ -31,6 +32,12 @@
case VERSION:
out.println("TODO: show version");
break;
+ case DATABASES:
+ out.println("TODO: list databases");
+ break;
+ case CONNECTION:
+ out.println("TODO: test database connection: " + options.getDatabaseNameToTest());
+ break;
default:
throw new IllegalArgumentException("Unsupported INFO_TYPE: " + infoType);
}