show info basics: list databases + test connection v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Mon, 16 Dec 2013 15:29:02 +0100
branchv_0
changeset 15 bbd335b5410c
parent 14 189b1260b942
child 16 5b8fcd35d4d6
show info basics: list databases + test connection
java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java
java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java
java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java
java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java	Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java	Mon Dec 16 15:29:02 2013 +0100
@@ -1,6 +1,7 @@
 package info.globalcode.sql.dk;
 
 import static info.globalcode.sql.dk.Functions.isNotEmpty;
+import static info.globalcode.sql.dk.Functions.isEmpty;
 import static info.globalcode.sql.dk.Functions.equalz;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -16,6 +17,7 @@
 	public static final String DEFAULT_NAME_PREFIX = ":";
 	private String sql;
 	private String databaseName;
+	private String databaseNameToTest;
 	private String namePrefix = DEFAULT_NAME_PREFIX;
 	private String formatterName;
 	private boolean batch;
@@ -34,7 +36,9 @@
 		VERSION,
 		LICENSE,
 		FORMATTERS,
-		TYPES
+		TYPES,
+		DATABASES,
+		CONNECTION
 	}
 
 	public enum COMMAND_TYPE {
@@ -77,6 +81,9 @@
 			if (!equalz(namePrefix, DEFAULT_NAME_PREFIX)) {
 				e.addProblem(new InvalidOptionsException.OptionProblem("Do not specify name prefix if just showing info."));
 			}
+			if (showInfo.contains(INFO_TYPE.CONNECTION) && isEmpty(databaseNameToTest, false)) {
+				e.addProblem(new InvalidOptionsException.OptionProblem("Please specify which database should be tested."));
+			}
 		}
 
 		if (!namedParameters.isEmpty() && !numberedParameters.isEmpty()) {
@@ -182,4 +189,12 @@
 	public EnumSet<INFO_TYPE> getShowInfo() {
 		return showInfo;
 	}
+
+	public String getDatabaseNameToTest() {
+		return databaseNameToTest;
+	}
+
+	public void setDatabaseNameToTest(String databaseNameToTest) {
+		this.databaseNameToTest = databaseNameToTest;
+	}
 }
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Mon Dec 16 15:29:02 2013 +0100
@@ -114,6 +114,13 @@
 				case Tokens.INFO_VERSION:
 					options.addShowInfo(CLIOptions.INFO_TYPE.VERSION);
 					break;
+				case Tokens.INFO_DATABASES:
+					options.addShowInfo(CLIOptions.INFO_TYPE.DATABASES);
+					break;
+				case Tokens.INFO_CONNECTION:
+					options.addShowInfo(CLIOptions.INFO_TYPE.CONNECTION);
+					options.setDatabaseNameToTest(fetchNext(args, ++i));
+					break;
 				default:
 					throw new CLIParserException("Unknown option: " + arg);
 			}
@@ -145,6 +152,8 @@
 		public static final String INFO_LICENSE = "--license";
 		public static final String INFO_FORMATTERS = "--list-formatters";
 		public static final String INFO_TYPES = "--list-types";
+		public static final String INFO_DATABASES = "--list-databases";
+		public static final String INFO_CONNECTION = "--test-connection";
 
 		private Tokens() {
 		}
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java	Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java	Mon Dec 16 15:29:02 2013 +0100
@@ -23,7 +23,7 @@
 			/** Show info */
 			if (!options.getShowInfo().isEmpty()) {
 				InfoLister infoLister = new InfoLister();
-				infoLister.showInfo(options.getShowInfo(), System.err);
+				infoLister.showInfo(options, System.err);
 			}
 
 		} catch (CLIParserException e) {
--- a/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java	Mon Dec 16 15:15:32 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java	Mon Dec 16 15:29:02 2013 +0100
@@ -10,7 +10,8 @@
  */
 public class InfoLister {
 
-	public void showInfo(EnumSet<CLIOptions.INFO_TYPE> infoTypes, PrintStream out) {
+	public void showInfo(CLIOptions options, PrintStream out) {
+		EnumSet<CLIOptions.INFO_TYPE> infoTypes = options.getShowInfo();
 		for (CLIOptions.INFO_TYPE infoType : infoTypes) {
 			switch (infoType) {
 				/**
@@ -31,6 +32,12 @@
 				case VERSION:
 					out.println("TODO: show version");
 					break;
+				case DATABASES:
+					out.println("TODO: list databases");
+					break;
+				case CONNECTION:
+					out.println("TODO: test database connection: " + options.getDatabaseNameToTest());
+					break;
 				default:
 					throw new IllegalArgumentException("Unsupported INFO_TYPE: " + infoType);
 			}