view artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java @ 405:e1738650bfca

FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active. artifacts/trunk@5154 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 29 Jul 2012 11:38:40 +0000
parents 71ff234713a6
children
line wrap: on
line source
package de.intevation.artifactdatabase.state;

import java.util.List;

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

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.ArtifactNamespaceContext;
import de.intevation.artifacts.CallContext;

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


/**
 * The default implementation of a Facet.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class DefaultFacet implements Facet {

    /** The index of this facet. */
    protected int index;

    /** The name of this facet. */
    protected String name;

    /** The description of this facet. */
    protected String description;


    /** Trivial, empty constructor. */
    public DefaultFacet() {
    }


    /**
     * The default constructor to create new Facet objects.
     *
     * @param name The name of this new facet.
     * @param description The description of this new facet.
     */
    public DefaultFacet(String name, String description) {
        this(0, name, description);
    }


    /**
     * The default constructor to create new Facet objects.
     *
     * @param index The index of this new facet.
     * @param name The name of this new facet.
     * @param description The description of this new facet.
     */
    public DefaultFacet(int index, String name, String description) {
        this.index       = index;
        this.name        = name;
        this.description = description;
    }


    /** Get index. */
    public int getIndex() {
        return index;
    }


    /** Returns the name ('type'). */
    public String getName() {
        return name;
    }


    /** Returns the description (e.g. displayed in gui). */
    public String getDescription() {
        return description;
    }


    /**
     * @return null
     */
    public Object getData(Artifact artifact, CallContext context) {
        return null;
    }


    /**
     * (Do not) provide data.
     * Override to allow other facets to access your data.
     * @return always null.
     */
    public Object provideBlackboardData(
        Artifact artifact,
        Object key,
        Object param,
        CallContext context
    ) {
        return null;
    }


    /*
     * Return list of keys (objects) for which this facet can provide data
     * ("external parameterization"), for other facets, via blackboard.
     * These are the keys that are independent from the current call (thus
     * 'static').
     * @param artifact that this facet belongs to.
     */
    public List getStaticDataProviderKeys(Artifact artifact) {
        return null;
    }

    /**
     * Return list of keys (objects) for which this facet can provide data
     * ("external parameterization"), for other facets, via blackboard.
     * @param artifact that this facet belongs to.
     */
    public List getDataProviderKeys(Artifact artifact, CallContext context) {
        return getStaticDataProviderKeys(artifact);
    }


    /** Create a xml represantation. */
    public Node toXML(Document doc) {
        ElementCreator ec = new ElementCreator(
            doc,
            ArtifactNamespaceContext.NAMESPACE_URI,
            ArtifactNamespaceContext.NAMESPACE_PREFIX);

        Element facet = ec.create("facet");
        ec.addAttr(facet, "description", description, true);
        ec.addAttr(facet, "name", name, true);
        ec.addAttr(facet, "index", String.valueOf(index), true);

        return facet;
    }


    /** Create a string representation. */
    public String toString() {
        return new StringBuilder("name = '")
            .append(name).append("', index = ")
            .append(index).append(", description = '")
            .append(description).append("'")
            .toString();
    }


    /**
     * Copies name, index and description of other facet.
     */
    public void set(Facet other) {
        index       = other.getIndex();
        name        = other.getName();
        description = other.getDescription();
    }


    /** Create a deep copy of this facet. */
    public Facet deepCopy() {
        DefaultFacet copy = new DefaultFacet();
        copy.set(this);
        return copy;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org