--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java Sun Dec 15 19:20:50 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java Sun Dec 15 20:16:27 2013 +0100
@@ -14,7 +14,13 @@
private String sql;
private String databaseName;
private boolean batch;
-
+
+ public enum MODE {
+
+ QUERY_NOW,
+ PREPARE_BATCH,
+ EXECUTE_BATCH
+ }
public enum COMMAND_TYPE {
@@ -30,12 +36,7 @@
public void validate() throws InvalidOptionsException {
InvalidOptionsException e = new InvalidOptionsException();
- if ( //
- (hasDb() ? 1 : 0) + //
- (hasSql() ? 1 : 0) + //
- (hasBatch() ? 1 : 0)
- != 2) //
- {
+ if (getMode() == null) {
e.addProblem(new InvalidOptionsException.OptionProblem("Invalid combination of DB, SQL and BATCH – please specify just 2 of this 3 options"));
}
@@ -49,15 +50,73 @@
}
}
- public boolean hasSql() {
- return isNotEmpty(sql, true);
+ private boolean hasSql() {
+ return isNotEmpty(getSql(), true);
+ }
+
+ private boolean hasDb() {
+ return isNotEmpty(getDatabaseName(), true);
+ }
+
+ /**
+ * Depends on options: DB, BATCH, SQL
+ *
+ * @return mode | or null if options are not yet initialized or combination of options is
+ * invalid
+ */
+ public MODE getMode() {
+ if (hasDb() && !batch && hasSql()) {
+ return MODE.QUERY_NOW;
+ } else if (!hasDb() && batch && hasSql()) {
+ return MODE.PREPARE_BATCH;
+ } else if (hasDb() && batch && !hasSql()) {
+ return MODE.EXECUTE_BATCH;
+ } else {
+ return null;
+ }
+ }
+
+ public String getSql() {
+ return sql;
+ }
+
+ public void setSql(String sql) {
+ this.sql = sql;
}
- public boolean hasDb() {
- return isNotEmpty(databaseName, true);
+ public String getDatabaseName() {
+ return databaseName;
+ }
+
+ public void setDatabaseName(String databaseName) {
+ this.databaseName = databaseName;
+ }
+
+ public void setBatch(boolean batch) {
+ this.batch = batch;
+ }
+
+ public COMMAND_TYPE getCommandType() {
+ return commandType;
}
- public boolean hasBatch() {
- return batch;
+ public void setCommandType(COMMAND_TYPE commandType) {
+ this.commandType = commandType;
+ }
+
+ public Collection<NamedParameter> getNamedParameters() {
+ return namedParameters;
+ }
+
+ public List<Parameter> getNumberedParameters() {
+ return numberedParameters;
+ }
+
+ public void addNumberedParameter(Parameter p) {
+ numberedParameters.add(p);
+ }
+
+ public void addNamedParameter(NamedParameter p) {
+ namedParameters.add(p);
}
}
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Sun Dec 15 19:20:50 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Sun Dec 15 20:16:27 2013 +0100
@@ -6,36 +6,59 @@
*/
public class CLIStarter {
+ public static final String DEFAULT_NAME_PREFIX = ":";
+
public static void main(String[] args) {
-
+
args = new String[]{"--sql", "SELECT * FROM tabulka;", "--db", "databáze_1"};
-
+
CLIOptions options = parseOptions(args);
}
private static CLIOptions parseOptions(String[] args) {
CLIOptions options = new CLIOptions();
+ String typesString = null;
+ String namePrefix = DEFAULT_NAME_PREFIX;
+
+
for (int i = 0; i < args.length; i++) {
String arg = args[i];
+ switch (arg) {
+ case Tokens.TYPES:
+ typesString = args[++i];
+ break;
+ case Tokens.NAME_PREFIX:
+ namePrefix = args[++i];
+ break;
+ }
+ }
+
+ for (int i = 0; i < args.length; i++) {
+ String arg = args[i];
switch (arg) {
+ case Tokens.TYPES:
+ case Tokens.NAME_PREFIX:
+ i++;
+ break;
case Tokens.DB:
- String db = args[++i];
- System.out.println("DB: " + db);
+ options.setDatabaseName(args[++i]);
break;
case Tokens.SQL:
- String sql = args[++i];
- System.out.println("SQL: " + sql);
+ options.setSql(args[++i]);
+ options.setCommandType(CLIOptions.COMMAND_TYPE.QUERY);
break;
case Tokens.SQL_UPDATE:
+ case Tokens.SQL_INSERT:
+ options.setSql(args[++i]);
+ options.setCommandType(CLIOptions.COMMAND_TYPE.UPDATE);
break;
case Tokens.BATCH:
+ options.setBatch(true);
break;
case Tokens.DATA:
break;
- case Tokens.TYPES:
- break;
}
}
@@ -48,8 +71,10 @@
public static final String DB = "--db";
public static final String SQL = "--sql";
public static final String SQL_UPDATE = "--sql-update";
+ public static final String SQL_INSERT = "--sql-insert";
public static final String BATCH = "--batch";
public static final String DATA = "--data";
+ public static final String NAME_PREFIX = "--name-prefix";
public static final String TYPES = "--types";
private Tokens() {