Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/BedHeightsArtifact.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/BedHeightsArtifact.java@bd047b71ab37 |
children | 4897a58c8746 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/BedHeightsArtifact.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,137 @@ +package org.dive4elements.river.artifacts; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import org.dive4elements.artifactdatabase.state.DefaultOutput; +import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.artifactdatabase.state.FacetActivity; +import org.dive4elements.artifacts.ArtifactFactory; +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallMeta; +import org.dive4elements.artifacts.common.utils.XMLUtils; +import org.dive4elements.river.artifacts.model.minfo.BedHeightFacet; +import org.dive4elements.river.artifacts.model.minfo.BedHeightFactory; +import org.dive4elements.river.artifacts.states.StaticState; + +public class BedHeightsArtifact +extends AbstractStaticStateArtifact +{ + /** The logger for this class. */ + private static Logger logger = + Logger.getLogger(BedHeightsArtifact.class); + + private static final String NAME = "bedheights"; + private static final String STATIC_FACET_NAME = "bedheight"; + + static { + // TODO: Move to configuration. + FacetActivity.Registry.getInstance() + .register(NAME, FacetActivity.INACTIVE); + } + + public static final String STATIC_STATE_NAME = + "state.additional_bedheights.static"; + + /** Data Item name to know whether we are Heighmarks and reveive + * some data slightly different. */ + public static final String DATA_HEIGHT_TYPE = + "height_marks"; + + /** + * Trivial Constructor. + */ + public BedHeightsArtifact() { + logger.debug("BedHeightsArtifact.BedHeightsArtifact"); + } + + @Override + public String getName() { + return NAME; + } + + /** + * Gets called from factory, to set things up. + */ + @Override + public void setup( + String identifier, + ArtifactFactory factory, + Object context, + CallMeta callMeta, + Document data) + { + logger.debug("BedHeightsArtifact.setup"); + + if (logger.isDebugEnabled()) { + logger.debug(XMLUtils.toString(data)); + } + + String code = getDatacageIDValue(data); + + if (code != null) { + String [] parts = code.split("-"); + + if (parts.length >= 4) { + String name = parts[0]; + String type = parts[1]; + String btype = type; + int hId = Integer.parseInt(parts[2]); + if (name.equals("bedheight")) { + addStringData("type", type); + addStringData("height_id", parts[2]); + addStringData("time", parts[3]); + } + if (type.equals("singlevalues")) { + btype = "single"; + } + + String bedHName = BedHeightFactory.getHeightName(btype, hId); + + Facet facet = new BedHeightFacet( + STATIC_FACET_NAME, bedHName, type); + + ArrayList<Facet> facets = new ArrayList<Facet>(1); + facets.add(facet); + + addFacets(STATIC_STATE_NAME, facets); + } + } + super.setup(identifier, factory, context, callMeta, data); + } + + @Override + protected void initStaticState() { + + logger.debug("initStaticState " + getName() + " " + identifier()); + + StaticState state = new StaticState(STATIC_STATE_NAME); + DefaultOutput output = new DefaultOutput( + "general", + "general", + "image/png", + "chart"); + + List<Facet> facets = getFacets(STATIC_STATE_NAME); + output.addFacets(facets); + state.addOutput(output); + + setStaticState(state); + } + + @Override + protected void initialize(Artifact artifact, Object context, CallMeta meta) { + // do not clone facets, etc. from master artifact + + logger.debug("initialize"); + importData((FLYSArtifact)artifact, "ld_from"); + importData((FLYSArtifact)artifact, "ld_to"); + + logger.debug("ld_from " + getDataAsString("ld_from")); + logger.debug("ld_to " + getDataAsString("ld_to")); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :