--- 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);
}
}