diff -r f32dac78d13a -r 72da10f632b5 java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java --- 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 getNamedParameters() { + return namedParameters; + } + + public List getNumberedParameters() { + return numberedParameters; + } + + public void addNumberedParameter(Parameter p) { + numberedParameters.add(p); + } + + public void addNamedParameter(NamedParameter p) { + namedParameters.add(p); } }