Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/AreaArtifact.java @ 3818:dc18457b1cef
merged flys-artifacts/pre2.7-2012-03-16
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:59 +0200 |
parents | 76cedac30d35 |
children | 64dc2997b2dd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/AreaArtifact.java Fri Sep 28 12:14:59 2012 +0200 @@ -0,0 +1,186 @@ +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 :