diff artifact-database/src/main/java/org/dive4elements/artifactdatabase/state/DefaultFacet.java @ 473:d0ac790a6c89 dive4elements-move

Moved directories to org.dive4elements
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 10:57:18 +0200
parents artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java@71ff234713a6
children 415df0fc4fa1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/state/DefaultFacet.java	Thu Apr 25 10:57:18 2013 +0200
@@ -0,0 +1,168 @@
+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