author | František Kučera <franta-hg@frantovo.cz> |
Sat, 06 Dec 2014 14:38:41 +0100 | |
branch | v_0 |
changeset 183 | 1bb5abfb0655 |
parent 161 | 385929a50dd9 |
child 196 | 76da38d49e81 |
permissions | -rw-r--r-- |
16
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
1 |
/** |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
2 |
* SQL-DK |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
3 |
* Copyright © 2013 František Kučera (frantovo.cz) |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
4 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
5 |
* This program is free software: you can redistribute it and/or modify |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
6 |
* it under the terms of the GNU General Public License as published by |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
7 |
* the Free Software Foundation, either version 3 of the License, or |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
8 |
* (at your option) any later version. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
9 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
13 |
* GNU General Public License for more details. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
14 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
16 |
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
17 |
*/ |
14 | 18 |
package info.globalcode.sql.dk; |
19 |
||
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
20 |
import info.globalcode.sql.dk.configuration.Configuration; |
65
f05be87239ad
option --test-connection – tests connection to given database
František Kučera <franta-hg@frantovo.cz>
parents:
26
diff
changeset
|
21 |
import info.globalcode.sql.dk.configuration.ConfigurationException; |
26
4ec8e5534eb9
configuration basics
František Kučera <franta-hg@frantovo.cz>
parents:
20
diff
changeset
|
22 |
import info.globalcode.sql.dk.configuration.ConfigurationProvider; |
65
f05be87239ad
option --test-connection – tests connection to given database
František Kučera <franta-hg@frantovo.cz>
parents:
26
diff
changeset
|
23 |
import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
24 |
import info.globalcode.sql.dk.configuration.FormatterDefinition; |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
25 |
import info.globalcode.sql.dk.configuration.Properties; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
26 |
import info.globalcode.sql.dk.configuration.Property; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
27 |
import info.globalcode.sql.dk.formatting.ColumnsHeader; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
28 |
import info.globalcode.sql.dk.formatting.FakeSqlArray; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
29 |
import info.globalcode.sql.dk.formatting.Formatter; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
30 |
import info.globalcode.sql.dk.formatting.FormatterContext; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
31 |
import info.globalcode.sql.dk.formatting.FormatterException; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
32 |
import java.io.BufferedReader; |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
33 |
import java.io.ByteArrayOutputStream; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
34 |
import java.io.InputStreamReader; |
14 | 35 |
import java.io.PrintStream; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
36 |
import java.sql.Array; |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
37 |
import java.sql.Driver; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
38 |
import java.sql.DriverPropertyInfo; |
65
f05be87239ad
option --test-connection – tests connection to given database
František Kučera <franta-hg@frantovo.cz>
parents:
26
diff
changeset
|
39 |
import java.sql.SQLException; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
40 |
import java.util.ArrayList; |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
41 |
import java.util.EnumSet; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
42 |
import java.util.HashSet; |
66
6e28893eaada
option --list-databases list configured databases
František Kučera <franta-hg@frantovo.cz>
parents:
65
diff
changeset
|
43 |
import java.util.List; |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
44 |
import java.util.ServiceLoader; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
45 |
import java.util.Set; |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
46 |
import java.util.concurrent.ExecutorService; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
47 |
import java.util.concurrent.Executors; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
48 |
import java.util.concurrent.TimeUnit; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
49 |
import java.util.logging.Level; |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
50 |
import java.util.logging.Logger; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
51 |
import javax.sql.rowset.RowSetMetaDataImpl; |
14 | 52 |
|
53 |
/** |
|
54 |
* Displays info like help, version etc. |
|
55 |
* |
|
56 |
* @author Ing. František Kučera (frantovo.cz) |
|
57 |
*/ |
|
58 |
public class InfoLister { |
|
59 |
||
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
60 |
private static final Logger log = Logger.getLogger(InfoLister.class.getName()); |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
61 |
/** |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
62 |
* Fake database name for output formatting |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
63 |
*/ |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
64 |
public static final String CONFIG_DB_NAME = "sqldk_configuration"; |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
65 |
private final PrintStream out; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
66 |
private final ConfigurationProvider configurationProvider; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
67 |
private final CLIOptions options; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
68 |
private Formatter formatter; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
69 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
70 |
public InfoLister(PrintStream out, ConfigurationProvider configurationProvider, CLIOptions options) { |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
71 |
this.out = out; |
20
e225bdcd260e
refactor, configuration
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
72 |
this.configurationProvider = configurationProvider; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
73 |
this.options = options; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
74 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
75 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
76 |
public void showInfo() throws ConfigurationException, FormatterException { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
77 |
EnumSet<InfoType> commands = options.getShowInfo(); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
78 |
|
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
79 |
boolean formattinNeeded = false; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
80 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
81 |
for (InfoType infoType : commands) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
82 |
switch (infoType) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
83 |
case CONNECTION: |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
84 |
case JDBC_DRIVERS: |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
85 |
case JDBC_PROPERTIES: |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
86 |
case DATABASES: |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
87 |
case FORMATTERS: |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
88 |
case TYPES: |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
89 |
formattinNeeded = true; |
101
97b0d9069133
Formatter is now AutoCloseable – so have chance to do some clean up and close the stream, if some error occurs (e.g. lost connection during result set reading)
František Kučera <franta-hg@frantovo.cz>
parents:
93
diff
changeset
|
90 |
break; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
91 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
92 |
} |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
93 |
|
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
94 |
if (formattinNeeded) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
95 |
try (Formatter f = getFormatter()) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
96 |
formatter = f; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
97 |
formatter.writeStartBatch(); |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
98 |
DatabaseDefinition dd = new DatabaseDefinition(); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
99 |
dd.setName(CONFIG_DB_NAME); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
100 |
formatter.writeStartDatabase(dd); |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
101 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
102 |
formatter.writeEndDatabase(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
103 |
formatter.writeEndBatch(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
104 |
formatter.close(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
105 |
} |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
106 |
} else { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
107 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
108 |
} |
101
97b0d9069133
Formatter is now AutoCloseable – so have chance to do some clean up and close the stream, if some error occurs (e.g. lost connection during result set reading)
František Kučera <franta-hg@frantovo.cz>
parents:
93
diff
changeset
|
109 |
} |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
110 |
|
101
97b0d9069133
Formatter is now AutoCloseable – so have chance to do some clean up and close the stream, if some error occurs (e.g. lost connection during result set reading)
František Kučera <franta-hg@frantovo.cz>
parents:
93
diff
changeset
|
111 |
private void showInfos(EnumSet<InfoType> commands) throws ConfigurationException, FormatterException { |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
112 |
for (InfoType infoType : commands) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
113 |
infoType.showInfo(this); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
114 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
115 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
116 |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
117 |
private void listFormatters() throws ConfigurationException, FormatterException { |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
118 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
119 |
new HeaderField("name", SQLType.VARCHAR), |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
120 |
new HeaderField("built_in", SQLType.BOOLEAN), |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
121 |
new HeaderField("default", SQLType.BOOLEAN), |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
122 |
new HeaderField("class_name", SQLType.VARCHAR), |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
123 |
new HeaderField("valid", SQLType.BOOLEAN)); |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
124 |
List<Object[]> data = new ArrayList<>(); |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
125 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
126 |
String defaultFormatter = configurationProvider.getConfiguration().getDefaultFormatter(); |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
127 |
defaultFormatter = defaultFormatter == null ? Configuration.DEFAULT_FORMATTER : defaultFormatter; |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
128 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
129 |
for (FormatterDefinition fd : configurationProvider.getConfiguration().getBuildInFormatters()) { |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
130 |
data.add(new Object[]{fd.getName(), true, defaultFormatter.equals(fd.getName()), fd.getClassName(), isInstantiable(fd)}); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
131 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
132 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
133 |
for (FormatterDefinition fd : configurationProvider.getConfiguration().getFormatters()) { |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
134 |
data.add(new Object[]{fd.getName(), false, defaultFormatter.equals(fd.getName()), fd.getClassName(), isInstantiable(fd)}); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
135 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
136 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
137 |
printTable(formatter, header, "-- configured and built-in output formatters", null, data); |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
138 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
139 |
|
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
140 |
private boolean isInstantiable(FormatterDefinition fd) { |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
141 |
try { |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
142 |
try (ByteArrayOutputStream testStream = new ByteArrayOutputStream()) { |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
143 |
fd.getInstance(new FormatterContext(testStream, new Properties(0))); |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
144 |
return true; |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
145 |
} |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
146 |
} catch (Exception e) { |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
147 |
log.log(Level.SEVERE, "Unable to create an instance of formatter: " + fd.getName(), e); |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
148 |
return false; |
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
149 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
150 |
} |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
151 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
152 |
public void listTypes() throws FormatterException, ConfigurationException { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
153 |
ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("code", SQLType.INTEGER)); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
154 |
List<Object[]> data = new ArrayList<>(); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
155 |
for (SQLType sqlType : SQLType.values()) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
156 |
data.add(new Object[]{sqlType.name(), sqlType.getCode()}); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
157 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
158 |
printTable(formatter, header, "-- data types", null, data); |
93
5a4dbe6f962c
Type names in --types option are case insensitive
František Kučera <franta-hg@frantovo.cz>
parents:
91
diff
changeset
|
159 |
log.log(Level.INFO, "Type names in --types option are case insensitive"); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
160 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
161 |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
162 |
public void listDatabases() throws ConfigurationException, FormatterException { |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
163 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
164 |
new HeaderField("database_name", SQLType.VARCHAR), |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
165 |
new HeaderField("user_name", SQLType.VARCHAR), |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
166 |
new HeaderField("database_url", SQLType.VARCHAR)); |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
167 |
List<Object[]> data = new ArrayList<>(); |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
168 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
169 |
final List<DatabaseDefinition> configuredDatabases = configurationProvider.getConfiguration().getDatabases(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
170 |
if (configuredDatabases.isEmpty()) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
171 |
log.log(Level.WARNING, "No databases are configured."); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
172 |
} else { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
173 |
for (DatabaseDefinition dd : configuredDatabases) { |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
174 |
data.add(new Object[]{dd.getName(), dd.getUserName(), dd.getUrl()}); |
14 | 175 |
} |
176 |
} |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
177 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
178 |
printTable(formatter, header, "-- configured databases", null, data); |
14 | 179 |
} |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
180 |
|
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
181 |
public void listJdbcDrivers() throws FormatterException, ConfigurationException { |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
182 |
ColumnsHeader header = constructHeader( |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
183 |
new HeaderField("class", SQLType.VARCHAR), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
184 |
new HeaderField("version", SQLType.VARCHAR), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
185 |
new HeaderField("major", SQLType.INTEGER), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
186 |
new HeaderField("minor", SQLType.INTEGER), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
187 |
new HeaderField("jdbc_compliant", SQLType.BOOLEAN)); |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
188 |
List<Object[]> data = new ArrayList<>(); |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
189 |
|
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
190 |
final ServiceLoader<Driver> drivers = ServiceLoader.load(Driver.class); |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
191 |
for (Driver d : drivers) { |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
192 |
data.add(new Object[]{ |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
193 |
d.getClass().getName(), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
194 |
d.getMajorVersion() + "." + d.getMinorVersion(), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
195 |
d.getMajorVersion(), |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
196 |
d.getMinorVersion(), |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
197 |
d.jdbcCompliant() |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
198 |
}); |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
199 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
200 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
201 |
printTable(formatter, header, "-- discovered JDBC drivers (available on the CLASSPATH)", null, data); |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
202 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
203 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
204 |
public void listJdbcProperties() throws FormatterException, ConfigurationException { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
205 |
for (String dbName : options.getDatabaseNamesToListProperties()) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
206 |
ColumnsHeader header = constructHeader( |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
207 |
new HeaderField("property_name", SQLType.VARCHAR), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
208 |
new HeaderField("required", SQLType.BOOLEAN), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
209 |
new HeaderField("choices", SQLType.ARRAY), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
210 |
new HeaderField("configured_value", SQLType.VARCHAR), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
211 |
new HeaderField("description", SQLType.VARCHAR)); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
212 |
List<Object[]> data = new ArrayList<>(); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
213 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
214 |
DatabaseDefinition dd = configurationProvider.getConfiguration().getDatabase(dbName); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
215 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
216 |
Driver driver = findDriver(dd); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
217 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
218 |
if (driver == null) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
219 |
log.log(Level.WARNING, "No JDBC driver was found for DB: {0} with URL: {1}", new Object[]{dd.getName(), dd.getUrl()}); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
220 |
} else { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
221 |
log.log(Level.INFO, "For DB: {0} was found JDBC driver: {1}", new Object[]{dd.getName(), driver.getClass().getName()}); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
222 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
223 |
try { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
224 |
DriverPropertyInfo[] propertyInfos = driver.getPropertyInfo(dd.getUrl(), dd.getProperties().getJavaProperties()); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
225 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
226 |
Set<String> standardProperties = new HashSet<>(); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
227 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
228 |
for (DriverPropertyInfo pi : propertyInfos) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
229 |
Array choices = new FakeSqlArray(pi.choices, SQLType.VARCHAR); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
230 |
data.add(new Object[]{ |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
231 |
pi.name, |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
232 |
pi.required, |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
233 |
choices.getArray() == null ? "" : choices, |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
234 |
pi.value == null ? "" : pi.value, |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
235 |
pi.description |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
236 |
}); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
237 |
standardProperties.add(pi.name); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
238 |
} |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
239 |
|
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
240 |
for (Property p : dd.getProperties()) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
241 |
if (!standardProperties.contains(p.getName())) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
242 |
data.add(new Object[]{ |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
243 |
p.getName(), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
244 |
"", |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
245 |
"", |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
246 |
p.getValue(), |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
247 |
"" |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
248 |
}); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
249 |
log.log(Level.WARNING, "Your configuration contains property „{0}“ not declared by the JDBC driver.", p.getName()); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
250 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
251 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
252 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
253 |
} catch (SQLException e) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
254 |
log.log(Level.WARNING, "Error during getting property infos.", e); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
255 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
256 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
257 |
List<Parameter> parameters = new ArrayList<>(); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
258 |
parameters.add(new NamedParameter("databgase", dbName, SQLType.VARCHAR)); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
259 |
parameters.add(new NamedParameter("driver_class", driver.getClass().getName(), SQLType.VARCHAR)); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
260 |
parameters.add(new NamedParameter("driver_major_version", driver.getMajorVersion(), SQLType.INTEGER)); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
261 |
parameters.add(new NamedParameter("driver_minor_version", driver.getMinorVersion(), SQLType.INTEGER)); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
262 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
263 |
printTable(formatter, header, "-- configured and configurable JDBC driver properties", parameters, data); |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
264 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
265 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
266 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
267 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
268 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
269 |
private Driver findDriver(DatabaseDefinition dd) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
270 |
final ServiceLoader<Driver> drivers = ServiceLoader.load(Driver.class); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
271 |
for (Driver d : drivers) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
272 |
try { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
273 |
if (d.acceptsURL(dd.getUrl())) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
274 |
return d; |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
275 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
276 |
} catch (SQLException e) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
277 |
log.log(Level.WARNING, "Error during finding JDBC driver for: " + dd.getName(), e); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
278 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
279 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
280 |
return null; |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
281 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
282 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
283 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
284 |
* Parallelism for connection testing – maximum concurrent database connections. |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
285 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
286 |
private static final int TESTING_THREAD_COUNT = 64; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
287 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
288 |
* Time limit for all connection testing threads – particular timeouts per connection will be |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
289 |
* much smaller. |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
290 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
291 |
private static final long TESTING_AWAIT_LIMIT = 1; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
292 |
private static final TimeUnit TESTING_AWAIT_UNIT = TimeUnit.DAYS; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
293 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
294 |
public void testConnections() throws FormatterException, ConfigurationException { |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
295 |
ColumnsHeader header = constructHeader( |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
296 |
new HeaderField("database_name", SQLType.VARCHAR), |
74
a8444f6a54f3
allow multiple databases connection test in --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
73
diff
changeset
|
297 |
new HeaderField("configured", SQLType.BOOLEAN), |
a8444f6a54f3
allow multiple databases connection test in --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
73
diff
changeset
|
298 |
new HeaderField("connected", SQLType.BOOLEAN)); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
299 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
300 |
log.log(Level.FINE, "Testing DB connections in {0} threads", TESTING_THREAD_COUNT); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
301 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
302 |
ExecutorService es = Executors.newFixedThreadPool(TESTING_THREAD_COUNT); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
303 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
304 |
final Formatter currentFormatter = formatter; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
305 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
306 |
printHeader(currentFormatter, header, "-- database configuration and connectivity test", null); |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
307 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
308 |
for (final String dbName : options.getDatabaseNamesToTest()) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
309 |
es.submit(new Runnable() { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
310 |
// TODO: Java 8 – lambda |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
311 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
312 |
public void run() { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
313 |
final Object[] row = testConnection(dbName); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
314 |
synchronized (currentFormatter) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
315 |
printRow(currentFormatter, row); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
316 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
317 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
318 |
}); |
74
a8444f6a54f3
allow multiple databases connection test in --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
73
diff
changeset
|
319 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
320 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
321 |
es.shutdown(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
322 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
323 |
try { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
324 |
log.log(Level.FINEST, "Waiting for test results: {0} {1}", new Object[]{TESTING_AWAIT_LIMIT, TESTING_AWAIT_UNIT.name()}); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
325 |
boolean finished = es.awaitTermination(TESTING_AWAIT_LIMIT, TESTING_AWAIT_UNIT); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
326 |
if (finished) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
327 |
log.log(Level.FINEST, "All testing threads finished in time limit."); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
328 |
} else { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
329 |
throw new FormatterException("Exceeded total time limit for test threads – this should never happen"); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
330 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
331 |
} catch (InterruptedException e) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
332 |
throw new FormatterException("Interrupted while waiting for test results", e); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
333 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
334 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
335 |
printFooter(currentFormatter); |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
336 |
} |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
337 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
338 |
public Object[] testConnection(String dbName) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
339 |
log.log(Level.FINE, "Testing connection to database: {0}", dbName); |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
340 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
341 |
boolean succesfullyConnected = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
342 |
boolean succesfullyConfigured = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
343 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
344 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
345 |
DatabaseDefinition dd = configurationProvider.getConfiguration().getDatabase(dbName); |
75
43aa4625ab7e
throw ConfigurationException instead of returning null, if database or formatter of given name is not configured
František Kučera <franta-hg@frantovo.cz>
parents:
74
diff
changeset
|
346 |
log.log(Level.FINE, "Database definition was loaded from configuration"); |
43aa4625ab7e
throw ConfigurationException instead of returning null, if database or formatter of given name is not configured
František Kučera <franta-hg@frantovo.cz>
parents:
74
diff
changeset
|
347 |
succesfullyConfigured = true; |
106
e9c3583580c8
use database properties
František Kučera <franta-hg@frantovo.cz>
parents:
104
diff
changeset
|
348 |
try (DatabaseConnection dc = dd.connect(options.getDatabaseProperties())) { |
75
43aa4625ab7e
throw ConfigurationException instead of returning null, if database or formatter of given name is not configured
František Kučera <franta-hg@frantovo.cz>
parents:
74
diff
changeset
|
349 |
succesfullyConnected = dc.test(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
350 |
} |
75
43aa4625ab7e
throw ConfigurationException instead of returning null, if database or formatter of given name is not configured
František Kučera <franta-hg@frantovo.cz>
parents:
74
diff
changeset
|
351 |
log.log(Level.FINE, "Database connection test was successful"); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
352 |
} catch (ConfigurationException | SQLException e) { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
353 |
log.log(Level.SEVERE, "Error during testing connection " + dbName, e); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
354 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
355 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
356 |
return new Object[]{dbName, succesfullyConfigured, succesfullyConnected}; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
357 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
358 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
359 |
public void printResource(String fileName) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
360 |
try (BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(fileName)))) { |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
361 |
while (true) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
362 |
String line = reader.readLine(); |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
363 |
if (line == null) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
364 |
break; |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
365 |
} else { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
366 |
println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
367 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
368 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
369 |
} catch (Exception e) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
370 |
log.log(Level.SEVERE, "Unable to print this info. Please see our website for it: " + Constants.WEBSITE, e); |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
371 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
372 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
373 |
|
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
374 |
private void println(String line) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
375 |
out.println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
376 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
377 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
378 |
private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data) throws ConfigurationException, FormatterException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
379 |
printHeader(formatter, header, sql, parameters); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
380 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
381 |
for (Object[] row : data) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
382 |
printRow(formatter, row); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
383 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
384 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
385 |
printFooter(formatter); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
386 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
387 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
388 |
private void printHeader(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters) { |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
389 |
formatter.writeStartStatement(); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
390 |
if (sql != null) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
391 |
formatter.writeQuery(sql); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
392 |
if (parameters != null) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
393 |
formatter.writeParameters(parameters); |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
394 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
395 |
} |
142
da1e38386d84
Formatters: structural change – new level „statement“ → query and parameters are no more duplicated into each result set or updates result
František Kučera <franta-hg@frantovo.cz>
parents:
139
diff
changeset
|
396 |
formatter.writeStartResultSet(header); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
397 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
398 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
399 |
private void printRow(Formatter formatter, Object[] row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
400 |
formatter.writeStartRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
401 |
for (Object cell : row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
402 |
formatter.writeColumnValue(cell); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
403 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
404 |
formatter.writeEndRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
405 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
406 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
407 |
private void printFooter(Formatter formatter) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
408 |
formatter.writeEndResultSet(); |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
409 |
formatter.writeEndStatement(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
410 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
411 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
412 |
private Formatter getFormatter() throws ConfigurationException, FormatterException { |
89
98d18e9a357b
InfoLister (configuration listings) will use TabularPrefetchingFormatter as default
František Kučera <franta-hg@frantovo.cz>
parents:
75
diff
changeset
|
413 |
String formatterName = options.getFormatterName(); |
98d18e9a357b
InfoLister (configuration listings) will use TabularPrefetchingFormatter as default
František Kučera <franta-hg@frantovo.cz>
parents:
75
diff
changeset
|
414 |
formatterName = formatterName == null ? Configuration.DEFAULT_FORMATTER_PREFETCHING : formatterName; |
98d18e9a357b
InfoLister (configuration listings) will use TabularPrefetchingFormatter as default
František Kučera <franta-hg@frantovo.cz>
parents:
75
diff
changeset
|
415 |
FormatterDefinition fd = configurationProvider.getConfiguration().getFormatter(formatterName); |
104
245f1b88a3e6
formatter/database properties
František Kučera <franta-hg@frantovo.cz>
parents:
101
diff
changeset
|
416 |
FormatterContext context = new FormatterContext(out, options.getFormatterProperties()); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
417 |
return fd.getInstance(context); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
418 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
419 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
420 |
private ColumnsHeader constructHeader(HeaderField... fields) throws FormatterException { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
421 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
422 |
RowSetMetaDataImpl metaData = new RowSetMetaDataImpl(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
423 |
metaData.setColumnCount(fields.length); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
424 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
425 |
for (int i = 0; i < fields.length; i++) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
426 |
HeaderField hf = fields[i]; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
427 |
int sqlIndex = i + 1; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
428 |
metaData.setColumnName(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
429 |
metaData.setColumnLabel(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
430 |
metaData.setColumnType(sqlIndex, hf.type.getCode()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
431 |
metaData.setColumnTypeName(sqlIndex, hf.type.name()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
432 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
433 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
434 |
return new ColumnsHeader(metaData); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
435 |
} catch (SQLException e) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
436 |
throw new FormatterException("Error while constructing table headers", e); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
437 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
438 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
439 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
440 |
private static class HeaderField { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
441 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
442 |
String name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
443 |
SQLType type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
444 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
445 |
public HeaderField(String name, SQLType type) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
446 |
this.name = name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
447 |
this.type = type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
448 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
449 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
450 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
451 |
public enum InfoType { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
452 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
453 |
HELP { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
454 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
455 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
456 |
infoLister.printResource(Constants.HELP_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
457 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
458 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
459 |
VERSION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
460 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
461 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
462 |
infoLister.printResource(Constants.VERSION_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
463 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
464 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
465 |
LICENSE { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
466 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
467 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
468 |
infoLister.printResource(Constants.LICENSE_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
469 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
470 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
471 |
FORMATTERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
472 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
473 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
474 |
infoLister.listFormatters(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
475 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
476 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
477 |
TYPES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
478 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
479 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
480 |
infoLister.listTypes(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
481 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
482 |
}, |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
483 |
JDBC_DRIVERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
484 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
485 |
public void showInfo(InfoLister infoLister) throws ConfigurationException, FormatterException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
486 |
infoLister.listJdbcDrivers(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
487 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
488 |
}, |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
489 |
JDBC_PROPERTIES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
490 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
491 |
public void showInfo(InfoLister infoLister) throws ConfigurationException, FormatterException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
492 |
infoLister.listJdbcProperties(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
493 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
494 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
495 |
DATABASES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
496 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
497 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
498 |
infoLister.listDatabases(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
499 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
500 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
501 |
CONNECTION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
502 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
503 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
504 |
infoLister.testConnections(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
505 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
506 |
}; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
507 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
508 |
public abstract void showInfo(InfoLister infoLister) throws ConfigurationException, FormatterException; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
509 |
} |
14 | 510 |
} |