java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java
branchv_0
changeset 29 d66858b4b563
parent 26 4ec8e5534eb9
child 30 b7ea47b2d4ca
     1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java	Sat Dec 21 22:22:30 2013 +0100
     1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/configuration/Configuration.java	Sun Dec 22 18:19:38 2013 +0100
     1.3 @@ -17,20 +17,40 @@
     1.4   */
     1.5  package info.globalcode.sql.dk.configuration;
     1.6  
     1.7 +import static info.globalcode.sql.dk.Constants.XMLNS_CONFIGURATION;
     1.8 +import static info.globalcode.sql.dk.Functions.findByName;
     1.9 +import info.globalcode.sql.dk.formatting.SilentFormatter;
    1.10 +import info.globalcode.sql.dk.formatting.XmlFormatter;
    1.11  import java.util.ArrayList;
    1.12 +import java.util.Collection;
    1.13 +import java.util.Collections;
    1.14  import java.util.List;
    1.15 +import javax.xml.bind.annotation.XmlElement;
    1.16  import javax.xml.bind.annotation.XmlRootElement;
    1.17  
    1.18  /**
    1.19   *
    1.20   * @author Ing. František Kučera (frantovo.cz)
    1.21   */
    1.22 -@XmlRootElement
    1.23 +@XmlRootElement(name = "configuration", namespace = XMLNS_CONFIGURATION)
    1.24  public class Configuration {
    1.25  
    1.26  	private List<DatabaseDefinition> databases = new ArrayList<>();
    1.27  	private List<FormatterDefinition> formatters = new ArrayList<>();
    1.28 +	private String defaultFormatter;
    1.29 +	/**
    1.30 +	 * Default list of formatters. Is used if particular name is not found in user configuration.
    1.31 +	 */
    1.32 +	private static final Collection<FormatterDefinition> buildInFormatters;
    1.33  
    1.34 +	static {
    1.35 +		Collection<FormatterDefinition> l = new ArrayList<>();
    1.36 +		l.add(new FormatterDefinition(SilentFormatter.NAME, SilentFormatter.class.getName()));
    1.37 +		l.add(new FormatterDefinition(XmlFormatter.NAME, XmlFormatter.class.getName()));
    1.38 +		buildInFormatters = Collections.unmodifiableCollection(l);
    1.39 +	}
    1.40 +
    1.41 +	@XmlElement(name = "database", namespace = XMLNS_CONFIGURATION)
    1.42  	public List<DatabaseDefinition> getDatabases() {
    1.43  		return databases;
    1.44  	}
    1.45 @@ -39,6 +59,11 @@
    1.46  		this.databases = databases;
    1.47  	}
    1.48  
    1.49 +	public DatabaseDefinition getDatabase(String name) {
    1.50 +		return findByName(databases, name);
    1.51 +	}
    1.52 +
    1.53 +	@XmlElement(name = "formatter", namespace = XMLNS_CONFIGURATION)
    1.54  	public List<FormatterDefinition> getFormatters() {
    1.55  		return formatters;
    1.56  	}
    1.57 @@ -46,4 +71,21 @@
    1.58  	public void setFormatters(List<FormatterDefinition> formatters) {
    1.59  		this.formatters = formatters;
    1.60  	}
    1.61 +
    1.62 +	public FormatterDefinition getFormatter(String name) {
    1.63 +		FormatterDefinition fd = findByName(formatters, name);
    1.64 +		return fd == null ? findByName(buildInFormatters, name) : fd;
    1.65 +	}
    1.66 +
    1.67 +	/**
    1.68 +	 * @return name of default formatter, is used if name is not specified on CLI
    1.69 +	 */
    1.70 +	@XmlElement(name = "defaultFormatter", namespace = XMLNS_CONFIGURATION)
    1.71 +	public String getDefaultFormatter() {
    1.72 +		return defaultFormatter;
    1.73 +	}
    1.74 +
    1.75 +	public void setDefaultFormatter(String defaultFormatter) {
    1.76 +		this.defaultFormatter = defaultFormatter;
    1.77 +	}
    1.78  }