view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ManagedFacet.java @ 4753:a310aceb2e51

Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 03 Jan 2013 14:19:45 +0100
parents b195fede1c3b
children
line wrap: on
line source
package de.intevation.flys.artifacts.model;

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

import de.intevation.artifactdatabase.state.DefaultFacet;
import de.intevation.artifactdatabase.state.Facet;
import de.intevation.artifacts.ArtifactNamespaceContext;
import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;


/**
 * Facet with user-supplied theme-control-information (pos in list,
 * active/disabled etc) attached.
 */
public class ManagedFacet extends DefaultFacet implements Comparable {

    /** The uuid of the owner artifact. */
    protected String uuid;

    /** A property that determines the position of this facet. */
    protected int position;

    /** A property that determines if this facet is active or not. */
    protected int active;

    /** A property that determines if this facet is visible or not. */
    protected int visible;

    public ManagedFacet() {
    }

    public ManagedFacet(String name, int index, String desc, String uuid,
        int pos, int active, int visible) {
        super(index, name, desc);

        this.uuid = uuid;
        this.position = pos;
        this.active = active;
        this.visible = visible;
    }

    /**
     * Sets position (will be merged to position in ThemeList).
     */
    public void setPosition(int pos) {
        this.position = pos;
    }

    public int getPosition() {
        return position;
    }

    public void setActive(int active) {
        this.active = active;
    }

    public int getActive() {
        return active;
    }

    public void setVisible(int visible) {
        this.visible = visible;
    }

    public int getVisible() {
        return visible;
    }

    /**
     * Get uuid of related artifact.
     *
     * @return uuid of related artifact.
     */
    public String getArtifact() {
        return uuid;
    }

    public Node toXML(Document doc) {
        ElementCreator ec = new ElementCreator(doc,
            ArtifactNamespaceContext.NAMESPACE_URI,
            ArtifactNamespaceContext.NAMESPACE_PREFIX);

        Element facet = ec.create("theme");
        ec.addAttr(facet, "artifact", getArtifact(), true);
        ec.addAttr(facet, "facet", getName(), true);
        ec.addAttr(facet, "pos", String.valueOf(getPosition()), true);
        ec.addAttr(facet, "active", String.valueOf(getActive()), true);
        ec.addAttr(facet, "index", String.valueOf(getIndex()), true);
        ec.addAttr(facet, "description", getDescription(), true);
        ec.addAttr(facet, "visible", String.valueOf(getVisible()), true);

        return facet;
    }

    public void set(ManagedFacet other) {
        uuid = other.uuid;
        position = other.position;
        active = other.active;
    }

    @Override
    public Facet deepCopy() {
        ManagedFacet copy = new ManagedFacet();
        copy.set((DefaultFacet) this);
        copy.set((ManagedFacet) this);
        return copy;
    }

    @Override
    public int compareTo(Object o) {
        if (!(o instanceof ManagedFacet)) {
            return -1;
        }

        ManagedFacet other = (ManagedFacet) o;

        if (position < other.position) {
            return -1;
        }
        else if (position > other.position) {
            return 1;
        }
        else {
            return 0;
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org