equal
deleted
inserted
replaced
27 import info.globalcode.sql.dk.configuration.ConfigurationException; |
27 import info.globalcode.sql.dk.configuration.ConfigurationException; |
28 import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
28 import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
29 import info.globalcode.sql.dk.configuration.FormatterDefinition; |
29 import info.globalcode.sql.dk.configuration.FormatterDefinition; |
30 import info.globalcode.sql.dk.configuration.Loader; |
30 import info.globalcode.sql.dk.configuration.Loader; |
31 import info.globalcode.sql.dk.configuration.NameIdentified; |
31 import info.globalcode.sql.dk.configuration.NameIdentified; |
|
32 import info.globalcode.sql.dk.configuration.PropertyDeclaration; |
32 import info.globalcode.sql.dk.formatting.Formatter; |
33 import info.globalcode.sql.dk.formatting.Formatter; |
33 import info.globalcode.sql.dk.formatting.FormatterContext; |
34 import info.globalcode.sql.dk.formatting.FormatterContext; |
34 import info.globalcode.sql.dk.formatting.FormatterException; |
35 import info.globalcode.sql.dk.formatting.FormatterException; |
35 import info.globalcode.sql.dk.jmx.ConnectionManagement; |
36 import info.globalcode.sql.dk.jmx.ConnectionManagement; |
36 import info.globalcode.sql.dk.jmx.ManagementUtils; |
37 import info.globalcode.sql.dk.jmx.ManagementUtils; |
39 import java.io.IOException; |
40 import java.io.IOException; |
40 import java.io.PrintStream; |
41 import java.io.PrintStream; |
41 import java.io.PrintWriter; |
42 import java.io.PrintWriter; |
42 import java.sql.SQLException; |
43 import java.sql.SQLException; |
43 import java.util.Collection; |
44 import java.util.Collection; |
|
45 import java.util.Collections; |
|
46 import java.util.List; |
44 import java.util.logging.Level; |
47 import java.util.logging.Level; |
45 import java.util.logging.LogRecord; |
48 import java.util.logging.LogRecord; |
46 import java.util.logging.Logger; |
49 import java.util.logging.Logger; |
47 |
50 |
48 /** |
51 /** |
213 try { |
216 try { |
214 File dir = new File(Constants.DIR, "bash-completion"); |
217 File dir = new File(Constants.DIR, "bash-completion"); |
215 dir.mkdir(); |
218 dir.mkdir(); |
216 writeBashCompletionHelperFile(configuration.getDatabases(), new File(dir, "databases")); |
219 writeBashCompletionHelperFile(configuration.getDatabases(), new File(dir, "databases")); |
217 writeBashCompletionHelperFile(configuration.getAllFormatters(), new File(dir, "formatters")); |
220 writeBashCompletionHelperFile(configuration.getAllFormatters(), new File(dir, "formatters")); |
|
221 writeBashCompletionHelperFileForFormatterProperties(new File(dir, "formatter-properties")); |
218 } catch (Exception e) { |
222 } catch (Exception e) { |
219 log.log(Level.WARNING, "Unable to generate Bash completion helper files", e); |
223 log.log(Level.WARNING, "Unable to generate Bash completion helper files", e); |
220 } |
224 } |
221 } |
225 } |
222 } |
226 } |
232 } |
236 } |
233 } else { |
237 } else { |
234 log.log(Level.FINER, "Not writing Bash completion helper file: {0} because configuration {1} has not been changed", new Object[]{target, Constants.CONFIG_FILE}); |
238 log.log(Level.FINER, "Not writing Bash completion helper file: {0} because configuration {1} has not been changed", new Object[]{target, Constants.CONFIG_FILE}); |
235 } |
239 } |
236 } |
240 } |
|
241 |
|
242 private void writeBashCompletionHelperFileForFormatterProperties(File formattersDir) throws ClassNotFoundException { |
|
243 if (Constants.CONFIG_FILE.lastModified() > formattersDir.lastModified()) { |
|
244 // TODO: delete old directory |
|
245 formattersDir.mkdir(); |
|
246 for (FormatterDefinition fd : configuration.getAllFormatters()) { |
|
247 File formatterDir = new File(formattersDir, fd.getName()); |
|
248 formatterDir.mkdir(); |
|
249 |
|
250 Class<Formatter> formatterClass = (Class<Formatter>) Class.forName(fd.getClassName()); |
|
251 List<Class<? extends Formatter>> hierarchy = Functions.getClassHierarchy(formatterClass, Formatter.class); |
|
252 Collections.reverse(hierarchy); |
|
253 hierarchy.stream().forEach((c) -> { |
|
254 for (PropertyDeclaration p : Functions.getPropertyDeclarations(c)) { |
|
255 File propertyDir = new File(formatterDir, p.name()); |
|
256 propertyDir.mkdir(); |
|
257 } |
|
258 }); |
|
259 } |
|
260 log.log(Level.FINE, "Bash completion helper files was written in: {0}", formattersDir); |
|
261 } else { |
|
262 log.log(Level.FINER, "Not writing Bash completion helper directory: {0} because configuration {1} has not been changed", new Object[]{formattersDir, Constants.CONFIG_FILE}); |
|
263 } |
|
264 |
|
265 } |
237 } |
266 } |