view flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java @ 2708:282db12a5bdf

Adapted the dynamic DESCRIBE creation of MultiIntArrayState to be able to use default mechanisms in FLYS client. flys-artifacts/trunk@4430 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 16 May 2012 14:56:28 +0000
parents e384d78ff78b
children 5642a83420f2
line wrap: on
line source
package de.intevation.flys.artifacts;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.ArtifactFactory;
import de.intevation.artifacts.CallMeta;

import de.intevation.flys.artifacts.states.DefaultState;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import org.w3c.dom.Document;


/**
 * Clone of an WINFOArtifact to expose exactly one waterlevel only.
 * All Facets of the "longitudinal_section" output will be added to the
 * "w_differences" output and filterFacets adjusted accordingly.
 *
 * @TODO Straighten inheritance-line (waterlevel-WINFO or vice versa).
 */
public class WaterlevelArtifact extends WINFOArtifact {

    /** The logger for this class. */
    private static Logger logger = Logger.getLogger(WaterlevelArtifact.class);

    /** The name of the artifact. */
    public static final String ARTIFACT_NAME = "waterlevel";


    /**
     * The default constructor.
     */
    public WaterlevelArtifact() {
    }


    /**
     * Setup and restate longitudinal_section filterfacets to apply to the
     * w_differences output, too.
     */
    public void setup(
        String          identifier,
        ArtifactFactory factory,
        Object          context,
        CallMeta        callMeta,
        Document        data)
    {
        super.setup(identifier, factory, context, callMeta, data);
        if(filterFacets != null) {
            filterFacets.put(
                "w_differences",
                filterFacets.get("longitudinal_section"));
        }
    }


    /**
     * Clone important stuff of an WINFOArtifact.
     * @param artifact the WINFOArtifact to clone stuff from.
     */
    protected void initialize(
        Artifact artifact,
        Object context,
        CallMeta meta)
    {
        WINFOArtifact winfo = (WINFOArtifact) artifact;
        this.data = winfo.cloneData();
	logger.debug("Cloned data of winfo artifact.");
        // Statically add Facets.
        List<Facet> fs = new ArrayList<Facet>();
        DefaultState state = (DefaultState) getCurrentState(context);
        state.computeInit(this, hash(), context, meta, fs);
        if (!fs.isEmpty()) { 
            logger.debug("Facets to add in WaterlevelArtifact.initialize ."); 
            facets.put(getCurrentStateId(), fs); 
        } 
        else { 
            logger.debug("No facets to add in WaterlevelArtifact.initialize ("
                + state.getID() + ").");
        }
    }


    /**
     * Returns the name of the concrete artifact.
     *
     * @return the name of the concrete artifact.
     */
    public String getName() {
        return ARTIFACT_NAME;
    }


    /**
     * Determines Facets initial disposition regarding activity (think of
     * selection in Client ThemeList GUI).
     * WaterlevelArtifact Facets should come to live "inactive" (always
     * return 0).
     *
     * @param facetName name of the facet.
     * @param index     index of the facet.
     *
     * @return Always 0 to have Facets initial predisposition to "inactive".
     */
    @Override
    public int getInitialFacetActivity(
        String outputName,
        String facetName,
        int index)
    {
        return 0;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org