15 * You should have received a copy of the GNU General Public License |
15 * You should have received a copy of the GNU General Public License |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 */ |
17 */ |
18 package info.globalcode.sql.dk.configuration; |
18 package info.globalcode.sql.dk.configuration; |
19 |
19 |
|
20 import static info.globalcode.sql.dk.Constants.XMLNS_CONFIGURATION; |
|
21 import static info.globalcode.sql.dk.Functions.findByName; |
|
22 import info.globalcode.sql.dk.formatting.SilentFormatter; |
|
23 import info.globalcode.sql.dk.formatting.XmlFormatter; |
20 import java.util.ArrayList; |
24 import java.util.ArrayList; |
|
25 import java.util.Collection; |
|
26 import java.util.Collections; |
21 import java.util.List; |
27 import java.util.List; |
|
28 import javax.xml.bind.annotation.XmlElement; |
22 import javax.xml.bind.annotation.XmlRootElement; |
29 import javax.xml.bind.annotation.XmlRootElement; |
23 |
30 |
24 /** |
31 /** |
25 * |
32 * |
26 * @author Ing. František Kučera (frantovo.cz) |
33 * @author Ing. František Kučera (frantovo.cz) |
27 */ |
34 */ |
28 @XmlRootElement |
35 @XmlRootElement(name = "configuration", namespace = XMLNS_CONFIGURATION) |
29 public class Configuration { |
36 public class Configuration { |
30 |
37 |
31 private List<DatabaseDefinition> databases = new ArrayList<>(); |
38 private List<DatabaseDefinition> databases = new ArrayList<>(); |
32 private List<FormatterDefinition> formatters = new ArrayList<>(); |
39 private List<FormatterDefinition> formatters = new ArrayList<>(); |
|
40 private String defaultFormatter; |
|
41 /** |
|
42 * Default list of formatters. Is used if particular name is not found in user configuration. |
|
43 */ |
|
44 private static final Collection<FormatterDefinition> buildInFormatters; |
33 |
45 |
|
46 static { |
|
47 Collection<FormatterDefinition> l = new ArrayList<>(); |
|
48 l.add(new FormatterDefinition(SilentFormatter.NAME, SilentFormatter.class.getName())); |
|
49 l.add(new FormatterDefinition(XmlFormatter.NAME, XmlFormatter.class.getName())); |
|
50 buildInFormatters = Collections.unmodifiableCollection(l); |
|
51 } |
|
52 |
|
53 @XmlElement(name = "database", namespace = XMLNS_CONFIGURATION) |
34 public List<DatabaseDefinition> getDatabases() { |
54 public List<DatabaseDefinition> getDatabases() { |
35 return databases; |
55 return databases; |
36 } |
56 } |
37 |
57 |
38 public void setDatabases(List<DatabaseDefinition> databases) { |
58 public void setDatabases(List<DatabaseDefinition> databases) { |
39 this.databases = databases; |
59 this.databases = databases; |
40 } |
60 } |
41 |
61 |
|
62 public DatabaseDefinition getDatabase(String name) { |
|
63 return findByName(databases, name); |
|
64 } |
|
65 |
|
66 @XmlElement(name = "formatter", namespace = XMLNS_CONFIGURATION) |
42 public List<FormatterDefinition> getFormatters() { |
67 public List<FormatterDefinition> getFormatters() { |
43 return formatters; |
68 return formatters; |
44 } |
69 } |
45 |
70 |
46 public void setFormatters(List<FormatterDefinition> formatters) { |
71 public void setFormatters(List<FormatterDefinition> formatters) { |
47 this.formatters = formatters; |
72 this.formatters = formatters; |
48 } |
73 } |
|
74 |
|
75 public FormatterDefinition getFormatter(String name) { |
|
76 FormatterDefinition fd = findByName(formatters, name); |
|
77 return fd == null ? findByName(buildInFormatters, name) : fd; |
|
78 } |
|
79 |
|
80 /** |
|
81 * @return name of default formatter, is used if name is not specified on CLI |
|
82 */ |
|
83 @XmlElement(name = "defaultFormatter", namespace = XMLNS_CONFIGURATION) |
|
84 public String getDefaultFormatter() { |
|
85 return defaultFormatter; |
|
86 } |
|
87 |
|
88 public void setDefaultFormatter(String defaultFormatter) { |
|
89 this.defaultFormatter = defaultFormatter; |
|
90 } |
49 } |
91 } |