view flys-artifacts/src/main/java/de/intevation/flys/themes/DefaultTheme.java @ 4282:8b4988815974

Added marker for Ws and Qs in Historical Discharge WQ charts. Therefore, the XYChartGenerator got two new methods addDomainMarker(Marker, boolean) and addValueMarker(Marker, boolean). The boolean parameters determine, if the marker should be visible or not. This is analogous to addAxisSeries(XYSeries, int, boolean).
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 29 Oct 2012 05:59:27 +0100
parents 8e66293c5369
children
line wrap: on
line source
package de.intevation.flys.themes;

import java.util.HashMap;
import java.util.Map;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import de.intevation.artifacts.common.utils.XMLUtils;
import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;


/**
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class DefaultTheme implements Theme {

    /** The name of the theme.*/
    protected String name;

    /** The description of the theme.*/
    protected String description;

    protected String facet;

    protected int index;


    /** The map storing the fields of this theme.*/
    protected Map<String, ThemeField> fields;

    /** The map storing the attributes of this theme.*/
    protected Map<String, String> attr;


    /**
     * Initializes the components of this Theme.
     */
    public DefaultTheme(String name, String description) {
        this.name        = name;
        this.description = description;
        this.fields      = new HashMap<String, ThemeField>();
        this.attr        = new HashMap<String, String>();
    }


    public void init(Node config) {
    }


    public String getName() {
        return name;
    }


    public String getDescription() {
        return description;
    }


    public String getFacet() {
        return facet;
    }


    public void setFacet(String facet) {
        this.facet = facet;
    }


    public int getIndex() {
        return index;
    }


    public void setIndex(int index) {
        this.index = index;
    }


    public void addAttribute(String name, String value) {
        if (name != null && value != null) {
            attr.put(name, value);
        }
    }


    public String getAttribute(String name) {
        return attr.get(name);
    }


    public void addField(String name, ThemeField field) {
        if (name != null && field != null) {
            fields.put(name, field);
        }
    }


    public void setFieldValue(String name, Object value) {
        if (name != null && value != null) {
            ThemeField field = fields.get(name);

            if (field != null) {
                field.setValue(value);
            }
        }
    }


    public ThemeField getField(String name) {
        return fields.get(name);
    }


    public String getFieldType(String name) {
        ThemeField field = fields.get(name);

        return field != null ? field.getType() : null;
    }


    public Object getFieldValue(String name) {
        ThemeField field = fields.get(name);

        return field != null ? field.getValue() : null;
    }


    public Document toXML() {
        Document doc = XMLUtils.newDocument();

        ElementCreator cr = new ElementCreator(doc, null, null);

        Element theme = cr.create("theme");
        theme.setAttribute("facet", facet);
        theme.setAttribute("index", String.valueOf(index));

        appendAttributes(cr, theme);
        appendFields(cr, theme);

        doc.appendChild(theme);

        return doc;
    }


    /**
     * Appends the attributes configured for this theme.
     *
     * @param cr The ElementCreator.
     * @param theme The document root element.
     */
    protected void appendAttributes(ElementCreator cr, Element theme) {

        for (Map.Entry<String, String> entry: attr.entrySet()) {
            String key = entry.getKey();
            String val = entry.getValue();

            if (key != null && val != null) {
                cr.addAttr(theme, key, val);
            }
        }
    }


    /**
     * Appends the fields configured for this theme.
     *
     * @param cr The ElementCreator.
     * @param theme The document root element.
     */
    protected void appendFields(ElementCreator cr, Element theme) {

        for (ThemeField field: fields.values()) {
            Document doc = field.toXML();
            Node    root = doc.getFirstChild();

            theme.appendChild(theme.getOwnerDocument().importNode(root, true));
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org