Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/FlowVelocityMeasurementArtifact.java @ 5285:05eaecd2be42
merge
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 14 Mar 2013 11:56:13 +0100 |
parents | a2735a4bf75e |
children |
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.artifactdatabase.state.DefaultOutput; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.FacetActivity; import de.intevation.artifactdatabase.state.State; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallMeta; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.flys.model.FlowVelocityMeasurementValue; import de.intevation.flys.artifacts.model.minfo.FlowVelocityMeasurementFacet; import de.intevation.flys.artifacts.model.minfo.FlowVelocityMeasurementFactory; import de.intevation.flys.artifacts.states.StaticState; import de.intevation.flys.artifacts.model.FacetTypes; /** Artefact to access flow velocity measurements. */ public class FlowVelocityMeasurementArtifact extends StaticFLYSArtifact implements FacetTypes { /** The logger for this class. */ private static Logger logger = Logger.getLogger(FlowVelocityMeasurementArtifact.class); /** Artifact key name. */ private static final String NAME = "flowvelocitymeasurement"; /** Spawn only inactive facets. */ static { // TODO: Move to configuration. FacetActivity.Registry.getInstance() .register(NAME, FacetActivity.INACTIVE); } /** Need to give the state an id. */ public static final String STATIC_STATE_NAME = "state.flowvelocitymeasurement.static"; /** One and only state to be in. */ protected transient State state = null; protected String DATA_NAME = "ID"; /** * Trivial Constructor. */ public FlowVelocityMeasurementArtifact() { logger.debug("FlowVelocityMeasurementArtifact.FlowVelocityMeasurementArtifact"); } /** Get artifact key name. */ @Override public String getName() { return NAME; } /** Create a new state with bogus output. */ protected State spawnState() { state = new StaticState(STATIC_STATE_NAME); List<Facet> fs = getFacets(STATIC_STATE_NAME); DefaultOutput output = new DefaultOutput( "general", "general", "image/png", fs, "chart"); state.getOutputs().add(output); return state; } /** * Gets called from factory, to set things up. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("FlowVelocityMeasurementArtifact.setup"); state = new StaticState(STATIC_STATE_NAME); if (logger.isDebugEnabled()) { logger.debug(XMLUtils.toString(data)); } List<Facet> fs = new ArrayList<Facet>(); String code = getDatacageIDValue(data); if (code != null) { // parse code, interact with factory, add real facets. // store relevant parts of code as data. Facet facet = new FlowVelocityMeasurementFacet( FLOW_VELOCITY_MEASUREMENT, "flowvelocity-name"); fs.add(facet); addFacets(state.getID(), fs); addStringData(DATA_NAME, code); } spawnState(); super.setup(identifier, factory, context, callMeta, data); } /** * 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(getState()); return states; } /** * Get the "current" state (there is but one). * @param cc ignored. * @return the "current" (only possible) state. */ @Override public State getCurrentState(Object cc) { return getState(); } /** * Get the only possible state. * @return the state. */ protected State getState() { return getState(null, null); } /** * Get the state. * @param context ignored. * @param stateID ignored. * @return the state. */ @Override protected State getState(Object context, String stateID) { return (state != null) ? state : spawnState(); } /** * Called via setup. Overridden to avoid cloning all data. * * @param artifact The master-artifact. */ @Override protected void initialize( Artifact artifact, Object context, CallMeta meta) { logger.debug("initialize"); } /** Get the db-unbound flow velocity measurement value with given * id. */ public FlowVelocityMeasurementValue.FastFlowVelocityMeasurementValue getFlowVelocityMeasurementValue() { return FlowVelocityMeasurementFactory.getFlowVelocityMeasurement( Integer.parseInt(getDataAsString(DATA_NAME))); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :