allow multiple databases connection test in --test-connection v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Thu, 26 Dec 2013 22:39:38 +0100
branchv_0
changeset 74 a8444f6a54f3
parent 73 d32fd50d3c2c
child 75 43aa4625ab7e
allow multiple databases connection test in --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/InfoLister.java
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java	Thu Dec 26 22:32:06 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIOptions.java	Thu Dec 26 22:39:38 2013 +0100
@@ -18,14 +18,15 @@
 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 info.globalcode.sql.dk.InfoLister.InfoType;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.EnumSet;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -39,7 +40,7 @@
 	public static final String DEFAULT_NAME_SUFFIX = "(?=([^\\w]|$))";
 	private String sql;
 	private String databaseName;
-	private String databaseNameToTest;
+	private Set<String> databaseNameToTest = new HashSet<>();
 	private String namePrefix = DEFAULT_NAME_PREFIX;
 	private String nameSuffix = DEFAULT_NAME_SUFFIX;
 	private String formatterName;
@@ -84,7 +85,7 @@
 			if (!equalz(nameSuffix, DEFAULT_NAME_SUFFIX)) {
 				e.addProblem(new InvalidOptionsException.OptionProblem("Do not specify name suffix if just showing info."));
 			}
-			if (showInfo.contains(InfoType.CONNECTION) && isEmpty(databaseNameToTest, false)) {
+			if (showInfo.contains(InfoType.CONNECTION) && databaseNameToTest.isEmpty()) {
 				e.addProblem(new InvalidOptionsException.OptionProblem("Please specify which database should be tested."));
 			}
 		}
@@ -210,12 +211,12 @@
 		return showInfo;
 	}
 
-	public String getDatabaseNameToTest() {
+	public Set<String> getDatabaseNameToTest() {
 		return databaseNameToTest;
 	}
 
-	public void setDatabaseNameToTest(String databaseNameToTest) {
-		this.databaseNameToTest = databaseNameToTest;
+	public void addDatabaseNameToTest(String databaseNameToTest) {
+		this.databaseNameToTest.add(databaseNameToTest);
 	}
 
 	public SQLCommand getSQLCommand() {
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Thu Dec 26 22:32:06 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Thu Dec 26 22:39:38 2013 +0100
@@ -120,7 +120,7 @@
 					break;
 				case Tokens.INFO_CONNECTION:
 					options.addShowInfo(InfoType.CONNECTION);
-					options.setDatabaseNameToTest(fetchNext(args, ++i));
+					options.addDatabaseNameToTest(fetchNext(args, ++i));
 					break;
 				default:
 					throw new CLIParserException("Unknown option: " + arg);
--- a/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java	Thu Dec 26 22:32:06 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java	Thu Dec 26 22:39:38 2013 +0100
@@ -61,7 +61,7 @@
 
 		for (InfoType infoType : commands) {
 			switch (infoType) {
-				// only these needs formatted output
+				// only these need formatted output
 				case CONNECTION:
 				case DATABASES:
 				case FORMATTERS:
@@ -135,14 +135,13 @@
 	public void testConnection() throws FormatterException, ConfigurationException {
 		ColumnsHeader header = constructHeader(
 				new HeaderField("database_name", SQLType.VARCHAR),
-				new HeaderField("configured", SQLType.VARCHAR),
-				new HeaderField("connected", SQLType.VARCHAR));
+				new HeaderField("configured", SQLType.BOOLEAN),
+				new HeaderField("connected", SQLType.BOOLEAN));
 		List<Object[]> data = new ArrayList<>();
 
-		/** TODO: support multiple DB to test */
-		String dbName = options.getDatabaseNameToTest();
-
-		data.add(testConnection(dbName));
+		for (String dbName : options.getDatabaseNameToTest()) {
+			data.add(testConnection(dbName));
+		}
 
 		printTable(formatter, header, data);
 	}