java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java
branchv_0
changeset 29 d66858b4b563
parent 26 4ec8e5534eb9
child 30 b7ea47b2d4ca
--- a/java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java	Sat Dec 21 22:22:30 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java	Sun Dec 22 18:19:38 2013 +0100
@@ -17,20 +17,40 @@
  */
 package info.globalcode.sql.dk.configuration;
 
+import static info.globalcode.sql.dk.Constants.XMLNS_CONFIGURATION;
+import static info.globalcode.sql.dk.Functions.findByName;
+import info.globalcode.sql.dk.formatting.SilentFormatter;
+import info.globalcode.sql.dk.formatting.XmlFormatter;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
  *
  * @author Ing. František Kučera (frantovo.cz)
  */
-@XmlRootElement
+@XmlRootElement(name = "configuration", namespace = XMLNS_CONFIGURATION)
 public class Configuration {
 
 	private List<DatabaseDefinition> databases = new ArrayList<>();
 	private List<FormatterDefinition> formatters = new ArrayList<>();
+	private String defaultFormatter;
+	/**
+	 * Default list of formatters. Is used if particular name is not found in user configuration.
+	 */
+	private static final Collection<FormatterDefinition> buildInFormatters;
 
+	static {
+		Collection<FormatterDefinition> l = new ArrayList<>();
+		l.add(new FormatterDefinition(SilentFormatter.NAME, SilentFormatter.class.getName()));
+		l.add(new FormatterDefinition(XmlFormatter.NAME, XmlFormatter.class.getName()));
+		buildInFormatters = Collections.unmodifiableCollection(l);
+	}
+
+	@XmlElement(name = "database", namespace = XMLNS_CONFIGURATION)
 	public List<DatabaseDefinition> getDatabases() {
 		return databases;
 	}
@@ -39,6 +59,11 @@
 		this.databases = databases;
 	}
 
+	public DatabaseDefinition getDatabase(String name) {
+		return findByName(databases, name);
+	}
+
+	@XmlElement(name = "formatter", namespace = XMLNS_CONFIGURATION)
 	public List<FormatterDefinition> getFormatters() {
 		return formatters;
 	}
@@ -46,4 +71,21 @@
 	public void setFormatters(List<FormatterDefinition> formatters) {
 		this.formatters = formatters;
 	}
+
+	public FormatterDefinition getFormatter(String name) {
+		FormatterDefinition fd = findByName(formatters, name);
+		return fd == null ? findByName(buildInFormatters, name) : fd;
+	}
+
+	/**
+	 * @return name of default formatter, is used if name is not specified on CLI
+	 */
+	@XmlElement(name = "defaultFormatter", namespace = XMLNS_CONFIGURATION)
+	public String getDefaultFormatter() {
+		return defaultFormatter;
+	}
+
+	public void setDefaultFormatter(String defaultFormatter) {
+		this.defaultFormatter = defaultFormatter;
+	}
 }