more code v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 15 Dec 2013 20:16:27 +0100
branchv_0
changeset 2 72da10f632b5
parent 1 f32dac78d13a
child 3 efdf2b886feb
more code
java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java
java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.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<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() {