view artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java @ 359:f93edbfcf2bc

Improved the Settings and Section interfaces and added default implementations for both. artifacts/trunk@3416 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 14 Dec 2011 12:20:06 +0000
parents 1d11a0531242
children 71ff234713a6
line wrap: on
line source
package de.intevation.artifactdatabase.state;

import java.util.List;

import java.io.Serializable;

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

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


/**
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public interface Facet extends Serializable {

    /**
     * Returns the index of this facet.
     *
     * @return the index of this facet.
     */
    int getIndex();

    /**
     * Returns the name of this facet.
     *
     * @return the name of this facet.
     */
    String getName();


    /**
     * Returns the description of this facet.
     *
     * @return the description of this facet.
     */
    String getDescription();


    /**
     * Returns the data this facet requires.
     *
     * @param artifact The owner artifact.
     * @param context The CallContext.
     *
     * @return the data.
     */
    Object getData(Artifact artifact, CallContext context);


    /**
     * Get keys for which this Facet can provide data (for other facets, not
     * for plot).
     * @param artifact Artifact that this facet belongs to.
     * @return list of keys
     */
    List getDataProviderKeys(Artifact artifact);


    /**
     * Provide data to other facet.
     *
     * @param art  The artifact that this facet belongs to.
     * @param key  the key of the requested service.
     * @param prm  optional parameters.
     * @param ctxt the callcontext.
     *
     * @return the data
     */
    Object provideBlackboardData(
        Artifact art,
        Object key,
        Object prm,
        CallContext ctxt);


    /**
     * Write the internal representation of a facet to a node.
     *
     * @param doc A Document.
     *
     * @return the representation as Node.
     */
    Node toXML(Document doc);

    Facet deepCopy();
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org