Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/AreaArtifact.java @ 2303:da35b8a23ffb
Fix flys/issue468 (Fehler beim Projekt-Duplizieren)
flys-artifacts/trunk@3971 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 08 Feb 2012 15:31:24 +0000 |
parents | 76cedac30d35 |
children | 64dc2997b2dd |
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; /** * 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"; /** Dataitem: Facet name. Facets with this name will be created (important * to not have the area calculated in e.g. a CrossSection to be shown in * LongitudinalSection. */ protected static final String FACET_NAME = "area.facet"; /** Name of state. */ public static final String STATIC_STATE_NAME = "state.area_artifact"; /** data item name to access upper curve. */ protected static final String AREA_CURVE_OVER = "area.curve_over"; /** data item name to access lower curve. */ protected static final String AREA_CURVE_UNDER = "area.curve_under"; /** data item name to access whether or not paint over and under. */ protected static final String AREA_BETWEEN = "area.between"; /** Name of state. */ protected static final String AREA_NAME = "area.name"; /** 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 yet unused. String ids = XMLUtils.xpathString( data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); // TODO this facet will be remodeled during next feed. 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 name of facets to create. */ public String getFacetName() { return getDataAsString(FACET_NAME); } /** * 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); } /** * True if the whole area between the two curves shall be filled. */ public boolean getPaintBetween() { String val = getDataAsString(AREA_BETWEEN); return val != null && val.equals("true"); } /** * 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); } /** Return data item that is used to configure name of area. */ public String getAreaName() { return getDataAsString(AREA_NAME); } /** * 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 :