author | František Kučera <franta-hg@frantovo.cz> |
Sun, 24 May 2015 19:10:25 +0200 | |
branch | v_0 |
changeset 200 | 2e351d7c26c4 |
parent 197 | 7a2f535017e4 |
child 201 | d3db5a72a089 |
permissions | -rw-r--r-- |
16
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
1 |
/** |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
2 |
* SQL-DK |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
3 |
* Copyright © 2013 František Kučera (frantovo.cz) |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
4 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
5 |
* This program is free software: you can redistribute it and/or modify |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
6 |
* it under the terms of the GNU General Public License as published by |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
7 |
* the Free Software Foundation, either version 3 of the License, or |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
8 |
* (at your option) any later version. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
9 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
13 |
* GNU General Public License for more details. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
14 |
* |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
16 |
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
5b8fcd35d4d6
license: GNU GPLv3+
František Kučera <franta-hg@frantovo.cz>
parents:
15
diff
changeset
|
17 |
*/ |
14 | 18 |
package info.globalcode.sql.dk; |
19 |
||
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
20 |
import info.globalcode.sql.dk.configuration.Configuration; |
65
f05be87239ad
option --test-connection – tests connection to given database
František Kučera <franta-hg@frantovo.cz>
parents:
26
diff
changeset
|
21 |
import info.globalcode.sql.dk.configuration.ConfigurationException; |
26
4ec8e5534eb9
configuration basics
František Kučera <franta-hg@frantovo.cz>
parents:
20
diff
changeset
|
22 |
import info.globalcode.sql.dk.configuration.ConfigurationProvider; |
65
f05be87239ad
option --test-connection – tests connection to given database
František Kučera <franta-hg@frantovo.cz>
parents:
26
diff
changeset
|
23 |
import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
24 |
import info.globalcode.sql.dk.configuration.FormatterDefinition; |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
25 |
import info.globalcode.sql.dk.configuration.Properties; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
26 |
import info.globalcode.sql.dk.configuration.Property; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
27 |
import info.globalcode.sql.dk.formatting.ColumnsHeader; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
28 |
import info.globalcode.sql.dk.formatting.FakeSqlArray; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
29 |
import info.globalcode.sql.dk.formatting.Formatter; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
30 |
import info.globalcode.sql.dk.formatting.FormatterContext; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
31 |
import info.globalcode.sql.dk.formatting.FormatterException; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
32 |
import java.io.BufferedReader; |
160
84ea4a819fb2
InfoLister: option --list-formatters also tests, if formatter class can be instantiated (thus is valid)
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
33 |
import java.io.ByteArrayOutputStream; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
34 |
import java.io.InputStreamReader; |
14 | 35 |
import java.io.PrintStream; |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
36 |
import java.sql.Array; |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
37 |
import java.sql.Driver; |
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
|
38 |
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
|
39 |
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
|
40 |
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
|
41 |
import java.util.ArrayList; |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
42 |
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
|
43 |
import java.util.HashSet; |
66
6e28893eaada
option --list-databases list configured databases
František Kučera <franta-hg@frantovo.cz>
parents:
65
diff
changeset
|
44 |
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
|
45 |
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
|
46 |
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
|
47 |
import java.util.Set; |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
48 |
import java.util.concurrent.ExecutorService; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
49 |
import java.util.concurrent.Executors; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
50 |
import java.util.concurrent.TimeUnit; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
51 |
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
|
52 |
import java.util.logging.LogRecord; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
53 |
import java.util.logging.Logger; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
54 |
import javax.sql.rowset.RowSetMetaDataImpl; |
14 | 55 |
|
56 |
/** |
|
57 |
* Displays info like help, version etc. |
|
58 |
* |
|
59 |
* @author Ing. František Kučera (frantovo.cz) |
|
60 |
*/ |
|
61 |
public class InfoLister { |
|
62 |
||
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
63 |
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
|
64 |
/** |
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
|
65 |
* 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
|
66 |
*/ |
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
|
67 |
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
|
68 |
private final PrintStream out; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
69 |
private final ConfigurationProvider configurationProvider; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
70 |
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
|
71 |
private Formatter formatter; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
72 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
73 |
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
|
74 |
this.out = out; |
20
e225bdcd260e
refactor, configuration
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
75 |
this.configurationProvider = configurationProvider; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
76 |
this.options = options; |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
77 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
78 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
79 |
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
|
80 |
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
|
81 |
|
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
82 |
boolean formattinNeeded = false; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
83 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
84 |
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
|
85 |
switch (infoType) { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
86 |
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
|
87 |
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
|
88 |
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
|
89 |
case DATABASES: |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
90 |
case FORMATTERS: |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
91 |
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
|
92 |
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
|
93 |
case ENVIRONMENT_VARIABLES: |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
94 |
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
|
95 |
break; |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
96 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
97 |
} |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
98 |
|
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
99 |
if (formattinNeeded) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
100 |
try (Formatter f = getFormatter()) { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
101 |
formatter = f; |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
102 |
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
|
103 |
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
|
104 |
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
|
105 |
formatter.writeStartDatabase(dd); |
139
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
106 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
107 |
formatter.writeEndDatabase(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
108 |
formatter.writeEndBatch(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
109 |
formatter.close(); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
110 |
} |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
111 |
} else { |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
112 |
showInfos(commands); |
5c0e344c3b60
fix InfoLister: squared infos
František Kučera <franta-hg@frantovo.cz>
parents:
106
diff
changeset
|
113 |
} |
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
|
114 |
} |
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
115 |
|
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
|
116 |
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
|
117 |
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
|
118 |
infoType.showInfo(this); |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
119 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
120 |
} |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
121 |
|
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
122 |
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
|
123 |
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
|
124 |
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
|
125 |
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
|
126 |
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
|
127 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
128 |
printTable(formatter, header, "-- Java system properties", null, data); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
129 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
130 |
|
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
131 |
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
|
132 |
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
|
133 |
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
|
134 |
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
|
135 |
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
|
136 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
137 |
printTable(formatter, header, "-- environment variables", null, data); |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
138 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
139 |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
140 |
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
|
141 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
142 |
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
|
143 |
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
|
144 |
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
|
145 |
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
|
146 |
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
|
147 |
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
|
148 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
149 |
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
|
150 |
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
|
151 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
152 |
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
|
153 |
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
|
154 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
155 |
|
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
156 |
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
|
157 |
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
|
158 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
159 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
160 |
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
|
161 |
} |
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
162 |
|
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
|
163 |
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
|
164 |
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
|
165 |
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
|
166 |
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
|
167 |
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
|
168 |
} |
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 |
} 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
|
170 |
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
|
171 |
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
|
172 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
173 |
} |
67
10c9b9e54622
option --list-formatters – list configured and built-in formatters
František Kučera <franta-hg@frantovo.cz>
parents:
66
diff
changeset
|
174 |
|
70
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
175 |
public void listTypes() throws FormatterException, ConfigurationException { |
02c8eaa425e8
use formatter also for printing info! --list-types
František Kučera <franta-hg@frantovo.cz>
parents:
69
diff
changeset
|
176 |
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
|
177 |
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
|
178 |
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
|
179 |
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
|
180 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
181 |
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
|
182 |
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
|
183 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
184 |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
185 |
public void listDatabases() throws ConfigurationException, FormatterException { |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
186 |
ColumnsHeader header = constructHeader( |
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
187 |
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
|
188 |
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
|
189 |
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
|
190 |
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
|
191 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
192 |
final List<DatabaseDefinition> configuredDatabases = configurationProvider.getConfiguration().getDatabases(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
193 |
if (configuredDatabases.isEmpty()) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
194 |
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
|
195 |
} else { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
196 |
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
|
197 |
data.add(new Object[]{dd.getName(), dd.getUserName(), dd.getUrl()}); |
14 | 198 |
} |
199 |
} |
|
72
fc9fc1f26b88
formatted output for: --list-formatters --list-databases
František Kučera <franta-hg@frantovo.cz>
parents:
70
diff
changeset
|
200 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
201 |
printTable(formatter, header, "-- configured databases", null, data); |
14 | 202 |
} |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
203 |
|
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
204 |
public void listJdbcDrivers() throws FormatterException, ConfigurationException { |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
205 |
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
|
206 |
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
|
207 |
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
|
208 |
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
|
209 |
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
|
210 |
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
|
211 |
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
|
212 |
|
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
213 |
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
|
214 |
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
|
215 |
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
|
216 |
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
|
217 |
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
|
218 |
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
|
219 |
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
|
220 |
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
|
221 |
}); |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
222 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
223 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
224 |
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
|
225 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
226 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
227 |
public void listJdbcProperties() throws FormatterException, ConfigurationException { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
228 |
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
|
229 |
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
|
230 |
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
|
231 |
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
|
232 |
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
|
233 |
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
|
234 |
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
|
235 |
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
|
236 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
237 |
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
|
238 |
|
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
|
239 |
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
|
240 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
241 |
if (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
|
242 |
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
|
243 |
} 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
|
244 |
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
|
245 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
246 |
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
|
247 |
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
|
248 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
249 |
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
|
250 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
251 |
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
|
252 |
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
|
253 |
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
|
254 |
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
|
255 |
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
|
256 |
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
|
257 |
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
|
258 |
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
|
259 |
}); |
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 |
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
|
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 |
|
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
|
263 |
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
|
264 |
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
|
265 |
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
|
266 |
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
|
267 |
"", |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
268 |
"", |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
269 |
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
|
270 |
"" |
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 |
}); |
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 |
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
|
273 |
} |
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 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
275 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
276 |
} catch (SQLException e) { |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
277 |
log.log(Level.WARNING, "Error during 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
|
278 |
} |
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
279 |
|
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
158
diff
changeset
|
280 |
List<Parameter> parameters = new ArrayList<>(); |
197
7a2f535017e4
fix typo: databgase → database
František Kučera <franta-hg@frantovo.cz>
parents:
196
diff
changeset
|
281 |
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
|
282 |
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
|
283 |
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
|
284 |
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
|
285 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
286 |
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
|
287 |
} |
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 |
|
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 |
|
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 |
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
|
293 |
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
|
294 |
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
|
295 |
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
|
296 |
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
|
297 |
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
|
298 |
} |
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 |
} 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
|
300 |
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
|
301 |
} |
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
|
302 |
} |
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 |
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
|
304 |
} |
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
305 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
306 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
307 |
* 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
|
308 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
309 |
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
|
310 |
/** |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
311 |
* 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
|
312 |
* much smaller. |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
313 |
*/ |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
314 |
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
|
315 |
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
|
316 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
317 |
public void testConnections() throws FormatterException, ConfigurationException { |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
318 |
ColumnsHeader header = constructHeader( |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
319 |
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
|
320 |
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
|
321 |
new HeaderField("connected", SQLType.BOOLEAN)); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
322 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
323 |
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
|
324 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
325 |
ExecutorService es = Executors.newFixedThreadPool(TESTING_THREAD_COUNT); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
326 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
327 |
final Formatter currentFormatter = formatter; |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
328 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
329 |
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
|
330 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
331 |
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
|
332 |
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
|
333 |
} |
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
|
334 |
|
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
|
335 |
for (final String dbName : options.getDatabaseNamesToTest()) { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
336 |
es.submit(new Runnable() { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
337 |
// TODO: Java 8 – lambda |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
338 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
339 |
public void run() { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
340 |
final Object[] row = testConnection(dbName); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
341 |
synchronized (currentFormatter) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
342 |
printRow(currentFormatter, row); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
343 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
344 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
345 |
}); |
74
a8444f6a54f3
allow multiple databases connection test in --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
73
diff
changeset
|
346 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
347 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
348 |
es.shutdown(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
349 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
350 |
try { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
351 |
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
|
352 |
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
|
353 |
if (finished) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
354 |
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
|
355 |
} else { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
356 |
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
|
357 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
358 |
} catch (InterruptedException e) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
359 |
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
|
360 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
361 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
362 |
printFooter(currentFormatter); |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
363 |
} |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
364 |
|
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
|
365 |
/** |
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
|
366 |
* 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
|
367 |
* {@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
|
368 |
* |
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
|
369 |
* @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
|
370 |
*/ |
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
|
371 |
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
|
372 |
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
|
373 |
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
|
374 |
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
|
375 |
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
|
376 |
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
|
377 |
} 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
|
378 |
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
|
379 |
} |
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
|
380 |
} 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
|
381 |
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
|
382 |
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
|
383 |
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
|
384 |
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
|
385 |
} |
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
|
386 |
} |
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
|
387 |
|
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
388 |
public Object[] testConnection(String dbName) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
389 |
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
|
390 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
391 |
boolean succesfullyConnected = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
392 |
boolean succesfullyConfigured = false; |
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
393 |
|
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
394 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
395 |
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
|
396 |
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
|
397 |
succesfullyConfigured = true; |
106
e9c3583580c8
use database properties
František Kučera <franta-hg@frantovo.cz>
parents:
104
diff
changeset
|
398 |
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
|
399 |
succesfullyConnected = dc.test(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
400 |
} |
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
|
401 |
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
|
402 |
} catch (ConfigurationException | SQLException | RuntimeException e) { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
403 |
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
|
404 |
} |
73
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
405 |
|
d32fd50d3c2c
formatted output for: --test-connection
František Kučera <franta-hg@frantovo.cz>
parents:
72
diff
changeset
|
406 |
return new Object[]{dbName, succesfullyConfigured, succesfullyConnected}; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
407 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
408 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
409 |
public void printResource(String fileName) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
410 |
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
|
411 |
while (true) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
412 |
String line = reader.readLine(); |
17
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
413 |
if (line == null) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
414 |
break; |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
415 |
} else { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
416 |
println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
417 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
418 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
419 |
} catch (Exception e) { |
18
7900bb1666f6
version info: option --version
František Kučera <franta-hg@frantovo.cz>
parents:
17
diff
changeset
|
420 |
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
|
421 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
422 |
} |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
423 |
|
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
424 |
private void println(String line) { |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
425 |
out.println(line); |
d8ab8aece6f2
license option: --license
František Kučera <franta-hg@frantovo.cz>
parents:
16
diff
changeset
|
426 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
427 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
428 |
private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data) throws ConfigurationException, FormatterException { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
429 |
printHeader(formatter, header, sql, parameters); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
430 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
431 |
for (Object[] row : data) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
432 |
printRow(formatter, row); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
433 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
434 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
435 |
printFooter(formatter); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
436 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
437 |
|
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
438 |
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
|
439 |
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
|
440 |
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
|
441 |
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
|
442 |
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
|
443 |
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
|
444 |
} |
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
|
445 |
} |
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
|
446 |
formatter.writeStartResultSet(header); |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
447 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
448 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
449 |
private void printRow(Formatter formatter, Object[] row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
450 |
formatter.writeStartRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
451 |
for (Object cell : row) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
452 |
formatter.writeColumnValue(cell); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
453 |
} |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
454 |
formatter.writeEndRow(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
455 |
} |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
456 |
|
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
457 |
private void printFooter(Formatter formatter) { |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
458 |
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
|
459 |
formatter.writeEndStatement(); |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
460 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
461 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
462 |
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
|
463 |
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
|
464 |
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
|
465 |
FormatterDefinition fd = configurationProvider.getConfiguration().getFormatter(formatterName); |
104
245f1b88a3e6
formatter/database properties
František Kučera <franta-hg@frantovo.cz>
parents:
101
diff
changeset
|
466 |
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
|
467 |
return fd.getInstance(context); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
468 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
469 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
470 |
private ColumnsHeader constructHeader(HeaderField... fields) throws FormatterException { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
471 |
try { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
472 |
RowSetMetaDataImpl metaData = new RowSetMetaDataImpl(); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
473 |
metaData.setColumnCount(fields.length); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
474 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
475 |
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
|
476 |
HeaderField hf = fields[i]; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
477 |
int sqlIndex = i + 1; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
478 |
metaData.setColumnName(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
479 |
metaData.setColumnLabel(sqlIndex, hf.name); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
480 |
metaData.setColumnType(sqlIndex, hf.type.getCode()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
481 |
metaData.setColumnTypeName(sqlIndex, hf.type.name()); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
482 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
483 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
484 |
return new ColumnsHeader(metaData); |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
485 |
} catch (SQLException e) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
486 |
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
|
487 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
488 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
489 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
490 |
private static class HeaderField { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
491 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
492 |
String name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
493 |
SQLType type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
494 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
495 |
public HeaderField(String name, SQLType type) { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
496 |
this.name = name; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
497 |
this.type = type; |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
498 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
499 |
} |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
500 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
501 |
public enum InfoType { |
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
502 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
503 |
HELP { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
504 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
505 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
506 |
infoLister.printResource(Constants.HELP_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
507 |
} |
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 |
VERSION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
510 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
511 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
512 |
infoLister.printResource(Constants.VERSION_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
513 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
514 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
515 |
LICENSE { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
516 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
517 |
public void showInfo(InfoLister infoLister) { |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
518 |
infoLister.printResource(Constants.LICENSE_FILE); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
519 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
520 |
}, |
200
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
521 |
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
|
522 |
@Override |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
523 |
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
|
524 |
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
|
525 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
526 |
}, |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
527 |
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
|
528 |
@Override |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
529 |
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
|
530 |
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
|
531 |
} |
2e351d7c26c4
InfoLister: new listings: --list-java-properties and --list-environment-variables
František Kučera <franta-hg@frantovo.cz>
parents:
197
diff
changeset
|
532 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
533 |
FORMATTERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
534 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
535 |
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
|
536 |
infoLister.listFormatters(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
537 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
538 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
539 |
TYPES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
540 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
541 |
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
|
542 |
infoLister.listTypes(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
543 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
544 |
}, |
158
770b5009ec42
InfoLister: print list of available JDBC drivers: --list-jdbc-drivers
František Kučera <franta-hg@frantovo.cz>
parents:
155
diff
changeset
|
545 |
JDBC_DRIVERS { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
546 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
547 |
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
|
548 |
infoLister.listJdbcDrivers(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
549 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
550 |
}, |
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
|
551 |
JDBC_PROPERTIES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
552 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
553 |
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
|
554 |
infoLister.listJdbcProperties(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
555 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
556 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
557 |
DATABASES { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
558 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
559 |
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
|
560 |
infoLister.listDatabases(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
561 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
562 |
}, |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
563 |
CONNECTION { |
183
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
564 |
@Override |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
565 |
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
|
566 |
infoLister.testConnections(); |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
567 |
} |
1bb5abfb0655
parallelized DB connection testing
František Kučera <franta-hg@frantovo.cz>
parents:
161
diff
changeset
|
568 |
}; |
69
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
569 |
|
0befec5034c2
InfoLister, InfoType: switch → enum
František Kučera <franta-hg@frantovo.cz>
parents:
67
diff
changeset
|
570 |
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
|
571 |
} |
14 | 572 |
} |