Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/AreaArtifact.java @ 2002:98f3ef8da857
Register under a key on blackboard to meet assumptions by areaartifact.
flys-artifacts/trunk@3444 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 16 Dec 2011 14:08:22 +0000 |
parents | 28a5c163f9cd |
children | 7f99845e9499 |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.w3c.dom.Document; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallMeta; import de.intevation.flys.artifacts.model.AreaFacet; import de.intevation.artifacts.common.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.flys.artifacts.states.AreaCreationState; import de.intevation.flys.artifacts.states.StaticState; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.State; import de.intevation.flys.utils.FLYSUtils; /** * Artifact describing the area between two WKms. */ public class AreaArtifact extends StaticFLYSArtifact { /** Access ids of doc. */ public static final String XPATH_IDS = "/art:action/art:ids/@value"; /** Name of Artifact. */ public static final String AREA_ARTIFACT_NAME = "area_artifact"; /** Name of state. */ public static final String STATIC_STATE_NAME = "state.area_artifact"; /** data item name to access upper curve. */ public static final String AREA_CURVE_OVER = "area.curve_over"; /** data item name to access lower curve. */ public static final String AREA_CURVE_UNDER = "area.curve_under"; /** Own logger. */ private static final Logger logger = Logger.getLogger(AreaArtifact.class); /** Return given name. */ @Override public String getName() { return AREA_ARTIFACT_NAME; } /** Store ids, create an AreaFacet. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.info("AreaArtifact.setup"); super.setup(identifier, factory, context, callMeta, data); // TODO ye unused. String ids = XMLUtils.xpathString( data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); List<Facet> fs = new ArrayList<Facet>(); fs.add(new AreaFacet(0, "TODO: I am an AreaFacet")); AreaCreationState state = (AreaCreationState) getCurrentState(context); if (!fs.isEmpty()) { facets.put(getCurrentStateId(), fs); } } // TODO Data is not cached in this way. /** Do not copy data from daddyfact. */ @Override protected void initialize( Artifact artifact, Object context, CallMeta callMeta) { // do nothing } /** * Get dataprovider key for the 'lower' curve (we got that information fed * from the client and store it as data). */ public String getLowerDPKey() { return getDataAsString(AREA_CURVE_UNDER); } /** * Get dataprovider key for the 'upper' curve (we got that information fed * from the client and store it as data). */ public String getUpperDPKey() { return getDataAsString(AREA_CURVE_OVER); } /** * Create and return a new AreaCreationState with charting output. */ @Override public State getCurrentState(Object cc) { final List<Facet> fs = facets.get(getCurrentStateId()); AreaCreationState state = new AreaCreationState(); StaticState.addDefaultChartOutput(state, "cross_section", fs); return state; } /** * Get a list containing the one and only State. * @param context ignored. * @return list with one and only state. */ @Override protected List<State> getStates(Object context) { ArrayList<State> states = new ArrayList<State>(); states.add(getCurrentState(context)); return states; } /** Trivia. */ protected State getState(Object context, String stateID) { return getCurrentState(null); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :