author | František Kučera <franta-hg@frantovo.cz> |
Sat, 15 Aug 2015 11:07:50 +0200 | |
branch | v_0 |
changeset 211 | b5148f646278 |
parent 210 | f8aa3686d512 |
child 212 | d154d6012cbe |
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 |
||
203
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
20 |
import info.globalcode.sql.dk.configuration.CommandArgument; |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
21 |
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
|
22 |
import info.globalcode.sql.dk.configuration.ConfigurationException; |
26
4ec8e5534eb9
configuration basics
František Kučera <franta-hg@frantovo.cz>
parents:
20
diff
changeset
|
23 |
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
|
24 |
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
|
25 |
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
|
26 |
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
|
27 |
import info.globalcode.sql.dk.configuration.Property; |
203
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
28 |
import info.globalcode.sql.dk.configuration.TunnelDefinition; |
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.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
|
30 |
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
|
31 |
import info.globalcode.sql.dk.formatting.Formatter; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
32 |
import info.globalcode.sql.dk.formatting.FormatterContext; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
33 |
import info.globalcode.sql.dk.formatting.FormatterException; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
34 |
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
|
35 |
import java.io.ByteArrayOutputStream; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
36 |
import java.io.InputStreamReader; |
14 | 37 |
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
|
38 |
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
|
39 |
import java.sql.Driver; |
196
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
40 |
import java.sql.DriverManager; |
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
|
41 |
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
|
42 |
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
|
43 |
import java.util.ArrayList; |
201
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
44 |
import java.util.Collections; |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
45 |
import java.util.Comparator; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
46 |
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
|
47 |
import java.util.HashSet; |
66
6e28893eaada
option --list-databases list configured databases
František Kučera <franta-hg@frantovo.cz>
parents:
65
diff
changeset
|
48 |
import java.util.List; |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
49 |
import java.util.Map.Entry; |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
50 |
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
|
51 |
import java.util.Set; |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
52 |
import java.util.concurrent.ExecutorService; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
53 |
import java.util.concurrent.Executors; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
54 |
import java.util.concurrent.TimeUnit; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
55 |
import java.util.logging.Level; |
196
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
56 |
import java.util.logging.LogRecord; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
57 |
import java.util.logging.Logger; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
58 |
import javax.sql.rowset.RowSetMetaDataImpl; |
14 | 59 |
|
60 |
/** |
|
61 |
* Displays info like help, version etc. |
|
62 |
* |
|
63 |
* @author Ing. František Kučera (frantovo.cz) |
|
64 |
*/ |
|
65 |
public class InfoLister { |
|
66 |
||
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
67 |
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
|
68 |
/** |
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
|
69 |
* 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
|
70 |
*/ |
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
|
71 |
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
|
72 |
private final PrintStream out; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
73 |
private final ConfigurationProvider configurationProvider; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
74 |
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
|
75 |
private Formatter formatter; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
76 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
77 |
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
|
78 |
this.out = out; |
20
e225bdcd260e
refactor, configuration
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
79 |
this.configurationProvider = configurationProvider; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
80 |
this.options = options; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
81 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
82 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
83 |
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
|
84 |
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
|
85 |
|
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
86 |
boolean formattinNeeded = false; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
87 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
88 |
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
|
89 |
switch (infoType) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
90 |
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
|
91 |
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
|
92 |
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
|
93 |
case DATABASES: |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
94 |
case FORMATTERS: |
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
95 |
case FORMATTER_PROPERTIES: |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
96 |
case TYPES: |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
97 |
case JAVA_PROPERTIES: |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
98 |
case ENVIRONMENT_VARIABLES: |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
99 |
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
|
100 |
break; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
101 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
102 |
} |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
103 |
|
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
104 |
if (formattinNeeded) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
105 |
try (Formatter f = getFormatter()) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
106 |
formatter = f; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
107 |
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
|
108 |
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
|
109 |
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
|
110 |
formatter.writeStartDatabase(dd); |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
111 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
112 |
formatter.writeEndDatabase(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
113 |
formatter.writeEndBatch(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
114 |
formatter.close(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
115 |
} |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
116 |
} else { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
117 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
118 |
} |
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
|
119 |
} |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
120 |
|
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
|
121 |
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
|
122 |
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
|
123 |
infoType.showInfo(this); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
124 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
125 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
126 |
|
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
127 |
private void listJavaProperties() throws FormatterException, ConfigurationException { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
128 |
ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
129 |
List<Object[]> data = new ArrayList<>(); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
130 |
for (Entry<Object, Object> e : System.getProperties().entrySet()) { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
131 |
data.add(new Object[]{e.getKey(), e.getValue()}); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
132 |
} |
201
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
133 |
printTable(formatter, header, "-- Java system properties", null, data, 0); |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
134 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
135 |
|
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
136 |
private void listEnvironmentVariables() throws FormatterException, ConfigurationException { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
137 |
ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
138 |
List<Object[]> data = new ArrayList<>(); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
139 |
for (Entry<String, String> e : System.getenv().entrySet()) { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
140 |
data.add(new Object[]{e.getKey(), e.getValue()}); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
141 |
} |
201
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
142 |
printTable(formatter, header, "-- environment variables", null, data, 0); |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
143 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
144 |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
145 |
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
|
146 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
147 |
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
|
148 |
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
|
149 |
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
|
150 |
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
|
151 |
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
|
152 |
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
|
153 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
154 |
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
|
155 |
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
|
156 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
157 |
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
|
158 |
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
|
159 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
160 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
161 |
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
|
162 |
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
|
163 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
164 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
165 |
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
|
166 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
167 |
|
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
|
168 |
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
|
169 |
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
|
170 |
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
|
171 |
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
|
172 |
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
|
173 |
} |
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
|
174 |
} 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
|
175 |
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
|
176 |
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
|
177 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
178 |
} |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
179 |
|
211
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
180 |
private void listFormatterProperties() throws FormatterException, ConfigurationException { |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
181 |
for (String formatterName : options.getFormatterNamesToListProperties()) { |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
182 |
listFormatterProperties(formatterName); |
209
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
183 |
} |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
184 |
} |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
185 |
|
211
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
186 |
private void listFormatterProperties(String formatterName) throws FormatterException, ConfigurationException { |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
187 |
ColumnsHeader header = constructHeader( |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
188 |
new HeaderField("name", SQLType.VARCHAR), |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
189 |
new HeaderField("type", SQLType.VARCHAR), |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
190 |
new HeaderField("default", SQLType.VARCHAR), |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
191 |
new HeaderField("description", SQLType.VARCHAR) |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
192 |
); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
193 |
List<Object[]> data = new ArrayList<>(); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
194 |
|
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
195 |
data.add(new Object[]{"TODO", "a", "b", "c"}); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
196 |
data.add(new Object[]{"TODO", "a", "b", "c"}); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
197 |
data.add(new Object[]{"TODO", "a", "b", "c"}); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
198 |
data.add(new Object[]{"TODO", "a", "b", "c"}); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
199 |
|
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
200 |
List<Parameter> parameters = new ArrayList<>(); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
201 |
parameters.add(new NamedParameter("formatter", formatterName, SQLType.VARCHAR)); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
202 |
|
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
203 |
printTable(formatter, header, "-- formatter properties", parameters, data); |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
204 |
} |
b5148f646278
property annotations: dummy InfoLister table
František Kučera <franta-hg@frantovo.cz>
parents:
210
diff
changeset
|
205 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
206 |
private void listTypes() throws FormatterException, ConfigurationException { |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
207 |
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
|
208 |
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
|
209 |
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
|
210 |
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
|
211 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
212 |
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
|
213 |
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
|
214 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
215 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
216 |
private void listDatabases() throws ConfigurationException, FormatterException { |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
217 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
218 |
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
|
219 |
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
|
220 |
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
|
221 |
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
|
222 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
223 |
final List<DatabaseDefinition> configuredDatabases = configurationProvider.getConfiguration().getDatabases(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
224 |
if (configuredDatabases.isEmpty()) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
225 |
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
|
226 |
} else { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
227 |
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
|
228 |
data.add(new Object[]{dd.getName(), dd.getUserName(), dd.getUrl()}); |
203
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
229 |
|
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
230 |
final TunnelDefinition tunnel = dd.getTunnel(); |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
231 |
if (tunnel != null) { |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
232 |
log.log(Level.INFO, "Tunnel command: {0}", tunnel.getCommand()); |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
233 |
for (CommandArgument ca : Functions.notNull(tunnel.getArguments())) { |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
234 |
log.log(Level.INFO, "\targument: {0}/{1}", new Object[]{ca.getType(), ca.getValue()}); |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
235 |
} |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
236 |
} |
504c4ba56d1c
connection tunnelling: configuration and logging
František Kučera <franta-hg@frantovo.cz>
parents:
201
diff
changeset
|
237 |
|
14 | 238 |
} |
239 |
} |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
240 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
241 |
printTable(formatter, header, "-- configured databases", null, data); |
14 | 242 |
} |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
243 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
244 |
private void listJdbcDrivers() throws FormatterException, ConfigurationException { |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
245 |
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
|
246 |
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
|
247 |
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
|
248 |
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
|
249 |
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
|
250 |
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
|
251 |
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
|
252 |
|
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
253 |
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
|
254 |
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
|
255 |
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
|
256 |
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
|
257 |
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
|
258 |
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
|
259 |
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
|
260 |
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
|
261 |
}); |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
262 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
263 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
264 |
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
|
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 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
267 |
private void listJdbcProperties() throws FormatterException, ConfigurationException { |
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
|
268 |
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
|
269 |
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
|
270 |
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
|
271 |
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
|
272 |
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
|
273 |
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
|
274 |
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
|
275 |
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
|
276 |
|
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 |
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
|
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 |
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
|
280 |
|
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
|
281 |
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
|
282 |
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
|
283 |
} 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
|
284 |
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
|
285 |
|
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
|
286 |
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
|
287 |
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
|
288 |
|
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
|
289 |
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
|
290 |
|
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
|
291 |
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
|
292 |
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
|
293 |
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
|
294 |
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
|
295 |
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
|
296 |
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
|
297 |
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
|
298 |
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
|
299 |
}); |
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
|
300 |
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
|
301 |
} |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
302 |
|
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
|
303 |
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
|
304 |
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
|
305 |
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
|
306 |
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
|
307 |
"", |
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
|
308 |
"", |
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
|
309 |
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
|
310 |
"" |
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
|
311 |
}); |
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
|
312 |
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
|
313 |
} |
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
|
314 |
} |
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
|
315 |
|
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
|
316 |
} 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
|
317 |
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
|
318 |
} |
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
|
319 |
|
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
|
320 |
List<Parameter> parameters = new ArrayList<>(); |
197
7a2f535017e4
fix typo: databgase → database
František Kučera <franta-hg@frantovo.cz>
parents:
196
diff
changeset
|
321 |
parameters.add(new NamedParameter("database", dbName, SQLType.VARCHAR)); |
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
|
322 |
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
|
323 |
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
|
324 |
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
|
325 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
326 |
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
|
327 |
} |
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
|
328 |
} |
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
|
329 |
|
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
|
330 |
} |
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
|
331 |
|
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
|
332 |
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
|
333 |
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
|
334 |
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
|
335 |
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
|
336 |
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
|
337 |
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
|
338 |
} |
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
|
339 |
} 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
|
340 |
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
|
341 |
} |
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
|
342 |
} |
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
|
343 |
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
|
344 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
345 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
346 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
347 |
* 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
|
348 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
349 |
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
|
350 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
351 |
* 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
|
352 |
* much smaller. |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
353 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
354 |
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
|
355 |
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
|
356 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
357 |
private void testConnections() throws FormatterException, ConfigurationException { |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
358 |
ColumnsHeader header = constructHeader( |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
359 |
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
|
360 |
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
|
361 |
new HeaderField("connected", SQLType.BOOLEAN)); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
362 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
363 |
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
|
364 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
365 |
ExecutorService es = Executors.newFixedThreadPool(TESTING_THREAD_COUNT); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
366 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
367 |
final Formatter currentFormatter = formatter; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
368 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
369 |
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
|
370 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
371 |
for (final String dbName : options.getDatabaseNamesToTest()) { |
196
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
372 |
preloadDriver(dbName); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
373 |
} |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
374 |
|
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
375 |
for (final String dbName : options.getDatabaseNamesToTest()) { |
209
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
376 |
es.submit(() -> { |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
377 |
final Object[] row = testConnection(dbName); |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
378 |
synchronized (currentFormatter) { |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
379 |
printRow(currentFormatter, row); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
380 |
} |
209
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
381 |
} |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
382 |
); |
74
a8444f6a54f3
allow multiple databases connection test in --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
73
diff
changeset
|
383 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
384 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
385 |
es.shutdown(); |
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 |
try { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
388 |
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
|
389 |
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
|
390 |
if (finished) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
391 |
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
|
392 |
} else { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
393 |
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
|
394 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
395 |
} catch (InterruptedException e) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
396 |
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
|
397 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
398 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
399 |
printFooter(currentFormatter); |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
400 |
} |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
401 |
|
196
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
402 |
/** |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
403 |
* JDBC driver classes should be preloaded in single thread to avoid deadlocks while doing |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
404 |
* {@linkplain DriverManager#registerDriver(java.sql.Driver)} during parallel connections. |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
405 |
* |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
406 |
* @param dbName |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
407 |
*/ |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
408 |
private void preloadDriver(String dbName) { |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
409 |
try { |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
410 |
DatabaseDefinition dd = configurationProvider.getConfiguration().getDatabase(dbName); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
411 |
Driver driver = findDriver(dd); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
412 |
if (driver == null) { |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
413 |
log.log(Level.WARNING, "No Driver found for DB: {0}", dbName); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
414 |
} else { |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
415 |
log.log(Level.FINEST, "Driver preloading for DB: {0} was successfull", dbName); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
416 |
} |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
417 |
} catch (Exception e) { |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
418 |
LogRecord r = new LogRecord(Level.WARNING, "Failed to preload the Driver for DB: {0}"); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
419 |
r.setParameters(new Object[]{dbName}); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
420 |
r.setThrown(e); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
421 |
log.log(r); |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
422 |
} |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
423 |
} |
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
424 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
425 |
private Object[] testConnection(String dbName) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
426 |
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
|
427 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
428 |
boolean succesfullyConnected = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
429 |
boolean succesfullyConfigured = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
430 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
431 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
432 |
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
|
433 |
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
|
434 |
succesfullyConfigured = true; |
106
e9c3583580c8
use database properties
František Kučera <franta-hg@frantovo.cz>
parents:
104
diff
changeset
|
435 |
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
|
436 |
succesfullyConnected = dc.test(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
437 |
} |
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
|
438 |
log.log(Level.FINE, "Database connection test was successful"); |
196
76da38d49e81
parallel connection testing: avoid deadlocks – preload drivers + better exception handling and logging
František Kučera <franta-hg@frantovo.cz>
parents:
183
diff
changeset
|
439 |
} catch (ConfigurationException | SQLException | RuntimeException e) { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
440 |
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
|
441 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
442 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
443 |
return new Object[]{dbName, succesfullyConfigured, succesfullyConnected}; |
69
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 |
|
210
f8aa3686d512
InfoLister: private methods + formatter for formatter properties
František Kučera <franta-hg@frantovo.cz>
parents:
209
diff
changeset
|
446 |
private void printResource(String fileName) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
447 |
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
|
448 |
while (true) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
449 |
String line = reader.readLine(); |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
450 |
if (line == null) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
451 |
break; |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
452 |
} else { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
453 |
println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
454 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
455 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
456 |
} catch (Exception e) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
457 |
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
|
458 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
459 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
460 |
|
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
461 |
private void println(String line) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
462 |
out.println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
463 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
464 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
465 |
private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data) throws ConfigurationException, FormatterException { |
201
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
466 |
printTable(formatter, header, sql, parameters, data, null); |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
467 |
} |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
468 |
|
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
469 |
private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data, final Integer sortByColumn) throws ConfigurationException, FormatterException { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
470 |
printHeader(formatter, header, sql, parameters); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
471 |
|
201
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
472 |
if (sortByColumn != null) { |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
473 |
Collections.sort(data, new Comparator<Object[]>() { |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
474 |
|
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
475 |
@Override |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
476 |
public int compare(Object[] o1, Object[] o2) { |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
477 |
String s1 = String.valueOf(o1[sortByColumn]); |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
478 |
String s2 = String.valueOf(o2[sortByColumn]); |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
479 |
return s1.compareTo(s2); |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
480 |
} |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
481 |
}); |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
482 |
} |
d3db5a72a089
InfoLister: sort rows in --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
200
diff
changeset
|
483 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
484 |
for (Object[] row : data) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
485 |
printRow(formatter, row); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
486 |
} |
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 |
printFooter(formatter); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
489 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
490 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
491 |
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
|
492 |
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
|
493 |
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
|
494 |
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
|
495 |
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
|
496 |
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
|
497 |
} |
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
|
498 |
} |
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
|
499 |
formatter.writeStartResultSet(header); |
183
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 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
502 |
private void printRow(Formatter formatter, Object[] row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
503 |
formatter.writeStartRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
504 |
for (Object cell : row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
505 |
formatter.writeColumnValue(cell); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
506 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
507 |
formatter.writeEndRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
508 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
509 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
510 |
private void printFooter(Formatter formatter) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
511 |
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
|
512 |
formatter.writeEndStatement(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
513 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
514 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
515 |
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
|
516 |
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
|
517 |
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
|
518 |
FormatterDefinition fd = configurationProvider.getConfiguration().getFormatter(formatterName); |
104
245f1b88a3e6
formatter/database properties
František Kučera <franta-hg@frantovo.cz>
parents:
101
diff
changeset
|
519 |
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
|
520 |
return fd.getInstance(context); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
521 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
522 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
523 |
private ColumnsHeader constructHeader(HeaderField... fields) throws FormatterException { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
524 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
525 |
RowSetMetaDataImpl metaData = new RowSetMetaDataImpl(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
526 |
metaData.setColumnCount(fields.length); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
527 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
528 |
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
|
529 |
HeaderField hf = fields[i]; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
530 |
int sqlIndex = i + 1; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
531 |
metaData.setColumnName(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
532 |
metaData.setColumnLabel(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
533 |
metaData.setColumnType(sqlIndex, hf.type.getCode()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
534 |
metaData.setColumnTypeName(sqlIndex, hf.type.name()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
535 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
536 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
537 |
return new ColumnsHeader(metaData); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
538 |
} catch (SQLException e) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
539 |
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
|
540 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
541 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
542 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
543 |
private static class HeaderField { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
544 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
545 |
String name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
546 |
SQLType type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
547 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
548 |
public HeaderField(String name, SQLType type) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
549 |
this.name = name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
550 |
this.type = type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
551 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
552 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
553 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
554 |
public enum InfoType { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
555 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
556 |
HELP { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
557 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
558 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
559 |
infoLister.printResource(Constants.HELP_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
560 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
561 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
562 |
VERSION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
563 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
564 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
565 |
infoLister.printResource(Constants.VERSION_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
566 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
567 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
568 |
LICENSE { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
569 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
570 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
571 |
infoLister.printResource(Constants.LICENSE_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
572 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
573 |
}, |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
574 |
JAVA_PROPERTIES { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
575 |
@Override |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
576 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
577 |
infoLister.listJavaProperties(); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
578 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
579 |
}, |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
580 |
ENVIRONMENT_VARIABLES { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
581 |
@Override |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
582 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
583 |
infoLister.listEnvironmentVariables(); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
584 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
585 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
586 |
FORMATTERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
587 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
588 |
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
|
589 |
infoLister.listFormatters(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
590 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
591 |
}, |
209
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
592 |
FORMATTER_PROPERTIES { |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
593 |
@Override |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
594 |
public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException { |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
595 |
infoLister.listFormatterProperties(); |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
596 |
} |
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
203
diff
changeset
|
597 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
598 |
TYPES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
599 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
600 |
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
|
601 |
infoLister.listTypes(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
602 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
603 |
}, |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
604 |
JDBC_DRIVERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
605 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
606 |
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
|
607 |
infoLister.listJdbcDrivers(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
608 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
609 |
}, |
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
|
610 |
JDBC_PROPERTIES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
611 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
612 |
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
|
613 |
infoLister.listJdbcProperties(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
614 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
615 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
616 |
DATABASES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
617 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
618 |
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
|
619 |
infoLister.listDatabases(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
620 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
621 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
622 |
CONNECTION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
623 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
624 |
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
|
625 |
infoLister.testConnections(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
626 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
627 |
}; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
628 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
629 |
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
|
630 |
} |
14 | 631 |
} |