view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ManagedDomFacet.java @ 1779:2fe270661b20

Let Output and Attribute Parsers collect Facets during processing. flys-artifacts/trunk@3101 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 28 Oct 2011 09:08:48 +0000
parents a70e0cbc5e02
children b3a67d946568
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import org.apache.log4j.Logger;

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

import de.intevation.artifacts.ArtifactNamespaceContext;


/** 
 * Use an Element (DOM) to store the information about a facet.
 * The intent of this facet type is to represent a facet
 * stored in an Collection attribute. Different facets can have different
 * attributes that we need to parse, but the only thing ManagedFacets need
 * to do, is to adjust the attributes "active" and "position". So, those
 * values are set directly on the Element, the other attributes aren't
 * touched.
 */
public class ManagedDomFacet extends ManagedFacet {

    protected Element facet;

    private static Logger logger = Logger.getLogger(ManagedDomFacet.class);


    public ManagedDomFacet(Element facet) {
        super(null, -1, null, null, -1, -1, -1);

        this.facet = facet;
    }


    @Override
    public int getIndex() {
        if (this.index < 0) {
            String index = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "index");

            if (index != null && index.length() > 0) {
                this.index = Integer.parseInt(index);
            }
        }

        return this.index;
    }


    @Override
    public String getName() {
        if (this.name == null || this.name.length() == 0) {
            String name = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "facet");

            this.name = name;
        }

        return this.name;
    }


    @Override
    public String getDescription() {
        if (this.description == null || this.description.length() == 0) {
            String description = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "description");

            this.description = description;
        }

        return this.description;
    }


    @Override
    public int getPosition() {
        if (this.position < 0) {
            String position = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI,
                "pos");

            if (position != null && position.length() > 0) {
                this.position = Integer.parseInt(position);
            }
        }

        return this.position;
    }


    @Override
    public void setPosition(int position) {
        this.position = position;

        // TODO Evaluate whether other set/getAttributes also need
        // to use the NAMESPACE_PREFIX.
        facet.setAttributeNS(
            ArtifactNamespaceContext.NAMESPACE_URI,
            ArtifactNamespaceContext.NAMESPACE_PREFIX + ":" + "pos",
            String.valueOf(position));
    }


    @Override
    public int getActive() {
        if (this.active < 0) {
            String active = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "active");

            if (active != null && active.length() > 0) {
                this.active = Integer.parseInt(active);
            }
        }

        return this.active;
    }


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

        facet.setAttributeNS(
            ArtifactNamespaceContext.NAMESPACE_URI,
            "active",
            String.valueOf(active));
    }


    @Override
    public int getVisible() {
        if (this.visible < 0) {
            String visible = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "visible");

            if (visible != null && visible.length() > 0) {
                this.visible = Integer.parseInt(visible);
            }
        }

        return this.visible;
    }


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

        facet.setAttributeNS(
            ArtifactNamespaceContext.NAMESPACE_URI,
            "visible",
            String.valueOf(getVisible()));
    }


    @Override
    public String getArtifact() {
        if (this.uuid == null || this.uuid.length() == 0) {
            String uuid = facet.getAttributeNS(
                ArtifactNamespaceContext.NAMESPACE_URI, "artifact");

            this.uuid = uuid;
        }

        return this.uuid;
    }


    @Override
    public Node toXML(Document doc) {
        return doc.importNode(facet, true);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org