view artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java @ 390:d5db5483b376

Tagged module 'artifacts' as '2.7'. artifacts/trunk@4528 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Sun, 27 May 2012 10:40:55 +0000
parents 71ff234713a6
children
line wrap: on
line source
package de.intevation.artifactdatabase.state;

import java.util.List;

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


/**
 * A bundle of a "native" Facet and its Artifact.
 */
public class ArtifactAndFacet implements DataProvider {
    /** The Artifact. */
    protected Artifact artifact;

    /** The (native) facet. */
    protected Facet    facet;

    /** An alternative facet description that might be set from outside. */
    protected String facetDescription;


    /** Trivial constructor. */
    public ArtifactAndFacet(
        Artifact a,
        Facet f
    ) {
        this.artifact   = a;
        this.facet      = f;
    }


    /** Get data (to plot). */
    public Object getData(CallContext context) {
        return facet.getData(artifact, context);
    }


    /** Get data (for other facet). */
    @Override
    public Object provideData(Object key, Object param, CallContext context) {
        return facet.provideBlackboardData(artifact, key, param, context);
    }


    /** (Maybe) Register on blackboard (depending on facet). */
    @Override
    public void register(CallContext context) {
        List keys = facet.getDataProviderKeys(this.artifact, context);
        if (keys == null) {
            return;
        }
        for (Object key: keys) {
            context.registerDataProvider(key, this);
        }
    }


    /** Access the artifact. */
    public Artifact getArtifact() {
        return artifact;
    }


    /** Access the (native) facet. */
    public Facet getFacet() {
        return facet;
    }


    /** Shortcut to facets name. */
    public String getFacetName() {
        return facet.getName();
    }


    /**
     * Returns the description for a facet. The return value depends on the
     * internal <i>facetDescription</i> instance variable. If this has been set
     * by setFacetDescription, this value is returned, otherwise the return
     * value of facet.getDescription().
     */
    public String getFacetDescription() {
        if (facetDescription == null) {
            return facet.getDescription();
        }

        return facetDescription;
    }


    public void setFacetDescription(String facetDescription) {
        this.facetDescription = facetDescription;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org