18 package info.globalcode.sql.dk.configuration; |
18 package info.globalcode.sql.dk.configuration; |
19 |
19 |
20 import static info.globalcode.sql.dk.Xmlns.CONFIGURATION; |
20 import static info.globalcode.sql.dk.Xmlns.CONFIGURATION; |
21 import static info.globalcode.sql.dk.Functions.findByName; |
21 import static info.globalcode.sql.dk.Functions.findByName; |
22 import info.globalcode.sql.dk.formatting.SilentFormatter; |
22 import info.globalcode.sql.dk.formatting.SilentFormatter; |
|
23 import info.globalcode.sql.dk.formatting.TabularFormatter; |
23 import info.globalcode.sql.dk.formatting.XmlFormatter; |
24 import info.globalcode.sql.dk.formatting.XmlFormatter; |
24 import java.util.ArrayList; |
25 import java.util.ArrayList; |
25 import java.util.Collection; |
26 import java.util.Collection; |
26 import java.util.Collections; |
27 import java.util.Collections; |
27 import java.util.List; |
28 import java.util.List; |
35 @XmlRootElement(name = "configuration", namespace = CONFIGURATION) |
36 @XmlRootElement(name = "configuration", namespace = CONFIGURATION) |
36 public class Configuration { |
37 public class Configuration { |
37 |
38 |
38 private List<DatabaseDefinition> databases = new ArrayList<>(); |
39 private List<DatabaseDefinition> databases = new ArrayList<>(); |
39 private List<FormatterDefinition> formatters = new ArrayList<>(); |
40 private List<FormatterDefinition> formatters = new ArrayList<>(); |
|
41 /** |
|
42 * is used if no formatter is specified on CLI nor in user configuration |
|
43 */ |
|
44 public static final String DEFAULT_FORMATTER = TabularFormatter.NAME; |
40 private String defaultFormatter; |
45 private String defaultFormatter; |
41 /** |
46 /** |
42 * Default list of formatters. Is used if particular name is not found in user configuration. |
47 * Default list of formatters. Is used if particular name is not found in user configuration. |
43 */ |
48 */ |
44 private static final Collection<FormatterDefinition> buildInFormatters; |
49 private static final Collection<FormatterDefinition> buildInFormatters; |
45 |
50 |
46 static { |
51 static { |
47 Collection<FormatterDefinition> l = new ArrayList<>(); |
52 Collection<FormatterDefinition> l = new ArrayList<>(); |
48 l.add(new FormatterDefinition(SilentFormatter.NAME, SilentFormatter.class.getName())); |
53 l.add(new FormatterDefinition(SilentFormatter.NAME, SilentFormatter.class.getName())); |
49 l.add(new FormatterDefinition(XmlFormatter.NAME, XmlFormatter.class.getName())); |
54 l.add(new FormatterDefinition(XmlFormatter.NAME, XmlFormatter.class.getName())); |
|
55 l.add(new FormatterDefinition(TabularFormatter.NAME, TabularFormatter.class.getName())); |
50 buildInFormatters = Collections.unmodifiableCollection(l); |
56 buildInFormatters = Collections.unmodifiableCollection(l); |
51 } |
57 } |
52 |
58 |
53 @XmlElement(name = "database", namespace = CONFIGURATION) |
59 @XmlElement(name = "database", namespace = CONFIGURATION) |
54 public List<DatabaseDefinition> getDatabases() { |
60 public List<DatabaseDefinition> getDatabases() { |
70 |
76 |
71 public void setFormatters(List<FormatterDefinition> formatters) { |
77 public void setFormatters(List<FormatterDefinition> formatters) { |
72 this.formatters = formatters; |
78 this.formatters = formatters; |
73 } |
79 } |
74 |
80 |
|
81 /** |
|
82 * @param name name of desired formatter. Looking for this name in user configuration, then in |
|
83 * buil-in formatters. If null, default from configuration or (if not configured) built-in |
|
84 * default is used. |
|
85 * @return formatter definition or null if none for this name is found |
|
86 */ |
75 public FormatterDefinition getFormatter(String name) { |
87 public FormatterDefinition getFormatter(String name) { |
76 FormatterDefinition fd = findByName(formatters, name); |
88 if (name == null) { |
77 return fd == null ? findByName(buildInFormatters, name) : fd; |
89 if (defaultFormatter == null) { |
|
90 return getFormatter(DEFAULT_FORMATTER); |
|
91 } else { |
|
92 return getFormatter(defaultFormatter); |
|
93 } |
|
94 } else { |
|
95 FormatterDefinition fd = findByName(formatters, name); |
|
96 return fd == null ? findByName(buildInFormatters, name) : fd; |
|
97 } |
78 } |
98 } |
79 |
99 |
80 /** |
100 /** |
81 * @return name of default formatter, is used if name is not specified on CLI |
101 * @return name of default formatter, is used if name is not specified on CLI |
82 */ |
102 */ |