java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java
branchv_0
changeset 2 72da10f632b5
parent 1 f32dac78d13a
child 3 efdf2b886feb
--- 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);
 	}
 }