Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWQKmsArtifact.java @ 5430:ba489a16f4d8
Datacage Function Resolver: Lift from static to object space.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Tue, 26 Mar 2013 16:16:12 +0100 |
parents | a2735a4bf75e |
children | febeb4bb10a5 |
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.Facet; import de.intevation.artifactdatabase.state.FacetActivity; 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.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.WQKms; import de.intevation.flys.artifacts.model.WKmsFactory; import de.intevation.flys.artifacts.model.WQKmsFactory; import de.intevation.flys.artifacts.states.DefaultState; /** * Artifact to access additional "waterlevel/discharge"-type of data, like * fixation measurements. * * This artifact neglects (Static)FLYSArtifacts capabilities of interaction * with the StateEngine by overriding the getState*-methods. */ public class StaticWQKmsArtifact extends StaticFLYSArtifact implements FacetTypes { /** The logger for this class. */ private static Logger logger = Logger.getLogger(StaticWQKmsArtifact.class); public static final String STATIC_STATE_NAME = "state.additional_wqkms.static"; private static final String NAME = "staticwqkms"; static { // TODO: Move to configuration. FacetActivity.Registry.getInstance() .register(NAME, FacetActivity.INACTIVE); } /** * Trivial Constructor. */ public StaticWQKmsArtifact() { logger.debug("StaticWQKmsArtifact.StaticWQKmsArtifact"); } /** * Gets called from factory, to set things up. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("StaticWQKmsArtifact.setup"); // Store the 'ids' (from datacage). if (logger.isDebugEnabled()) { logger.debug("StaticWQKmsArtiact.setup" + XMLUtils.toString(data)); } String code = getDatacageIDValue(data); addStringData("ids", code); if (code != null) { String [] parts = code.split("-"); if (parts.length >= 4) { int col = Integer.parseInt(parts[2]); int wst = Integer.parseInt(parts[3]); addStringData("col_pos", parts[2]); addStringData("wst_id", parts[3]); } } // Do this AFTER we have set the col_pos etc. super.setup(identifier, factory, context, callMeta, data); } /** * Called via setup. * * @param artifact The master-artifact. */ @Override protected void initialize( Artifact artifact, Object context, CallMeta meta) { logger.debug("StaticWQKmsArtifact.initialize"); WINFOArtifact winfo = (WINFOArtifact) artifact; // TODO: The river is of no interest, so far., also use importData importData(winfo, "river"); List<Facet> fs = new ArrayList<Facet>(); DefaultState state = (DefaultState) getCurrentState(context); state.computeInit(this, hash(), context, meta, fs); if (!fs.isEmpty()) { logger.debug("Facets to add in StaticWQKmsArtifact.initialize ."); addFacets(getCurrentStateId(), fs); } else { logger.debug("No facets to add in StaticWQKmsArtifact.initialize (" + state.getID() + ")."); } } /** * Get WQKms from factory. * @return WQKms according to parameterization (can be null); */ public WQKms getWQKms() { logger.debug("StaticWQKmsArtifact.getWQKms"); int col = Integer.parseInt(getDataAsString("col_pos")); int wst = Integer.parseInt(getDataAsString("wst_id")); /** TODO do not run twice against db to do this. */ String wkmsName = WKmsFactory.getWKmsName(col, wst); WQKms res = WQKmsFactory.getWQKms(col, wst); res.setName(wkmsName); return res; } /** Return specific name. */ @Override public String getName() { return NAME; } // TODO implement deepCopy. } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :