Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWQKmsArtifact.java @ 2124:a202a9e048a5
Made StaticWQKmsArtifact a fully featured Artifact.
flys-artifacts/trunk@3694 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 17 Jan 2012 08:17:50 +0000 |
parents | 64ffc371afe7 |
children | 79a94c4171cb |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWQKmsArtifact.java Tue Jan 17 08:09:03 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWQKmsArtifact.java Tue Jan 17 08:17:50 2012 +0000 @@ -8,24 +8,21 @@ import org.w3c.dom.Document; import de.intevation.artifactdatabase.state.Facet; -import de.intevation.artifactdatabase.state.DefaultOutput; -import de.intevation.artifactdatabase.state.State; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.ArtifactNamespaceContext; 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.WQKmsFacet; import de.intevation.flys.artifacts.model.WKmsFactory; import de.intevation.flys.artifacts.model.WQKmsFactory; -import de.intevation.flys.artifacts.states.StaticState; -import de.intevation.flys.artifacts.resources.Resources; +import de.intevation.flys.artifacts.states.DefaultState; -import de.intevation.artifacts.common.utils.XMLUtils; /** * Artifact to access additional "waterlevel/discharge"-type of data, like @@ -49,9 +46,6 @@ public static final String STATIC_STATE_NAME = "state.additional_wqkms.static"; - /** One and only state to be in. */ - protected transient State state = null; - /** * Trivial Constructor. @@ -74,15 +68,12 @@ { logger.debug("StaticWQKmsArtifact.setup"); - state = new StaticState(STATIC_STATE_NAME); + // Store the 'ids' (from datacage). + logger.debug("StaticWQKmsArtiact.setup" + XMLUtils.toString(data)); - List<Facet> fs = new ArrayList<Facet>(); - logger.debug(XMLUtils.toString(data)); String code = XMLUtils.xpathString( data, XPATH_DATA, ArtifactNamespaceContext.INSTANCE); - - // TODO Go for JSON, one day. - //ex.: flood_protection-wstv-114-12 + addStringData("ids", code); if (code != null) { String [] parts = code.split("-"); @@ -92,54 +83,15 @@ addStringData("col_pos", parts[2]); addStringData("wst_id", parts[3]); - - String wkmsName = WKmsFactory.getWKmsName(col, wst); - - String name; - if (parts[0].equals(HEIGHTMARKS_POINTS)) { - name = HEIGHTMARKS_POINTS; - } - else { - name = STATIC_WQKMS; - } - - Facet facet = new WQKmsFacet( - name, - Resources.getMsg( - callMeta, - wkmsName, - wkmsName)); - fs.add(facet); - facets.put(state.getID(), fs); } } - spawnState(); + // Do this AFTER we have set the col_pos etc. super.setup(identifier, factory, context, callMeta, data); } /** - * Initialize the static state with output. - * @return static state - * @TODO merge with StaticWKmsArtifact implementation. - */ - protected State spawnState() { - state = new StaticState(STATIC_STATE_NAME); - List<Facet> fs = facets.get(STATIC_STATE_NAME); - DefaultOutput output = new DefaultOutput( - "general", - "general", - "image/png", - fs, - "chart"); - - state.getOutputs().add(output); - return state; - } - - - /** * Called via setup. * * @param artifact The master-artifact. @@ -152,69 +104,42 @@ { logger.debug("StaticWQKmsArtifact.initialize"); WINFOArtifact winfo = (WINFOArtifact) artifact; - // TODO: The river is of no interest, so far. + // TODO: The river is of no interest, so far., also use importData addData("river", winfo.getData("river")); - } - - - /** - * 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(); - } - + List<Facet> fs = new ArrayList<Facet>(); - /** - * 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(); + DefaultState state = (DefaultState) getCurrentState(context); + state.computeInit(this, hash(), context, meta, fs); + if (!fs.isEmpty()) { + logger.debug("Facets to add in StaticWQKmsArtifact.initialize ."); + facets.put(getCurrentStateId(), fs); + } + else { + logger.debug("No facets to add in StaticWQKmsArtifact.initialize (" + + state.getID() + ")."); + } } /** * Get WQKms from factory. - * @param TODO idx param is not needed * @return WQKms according to parameterization (can be null); */ - public WQKms getWQKms(int idx) { + public WQKms getWQKms() { logger.debug("StaticWQKmsArtifact.getWQKms"); - return WQKmsFactory.getWQKms( + int col = Integer.valueOf(getDataAsString("col_pos")); + int wst = Integer.valueOf(getDataAsString("wst_id")); + + /** TODO do not run twice against db to do this. */ + String wkmsName = WKmsFactory.getWKmsName(col, wst); + + WQKms res = WQKmsFactory.getWQKms( Integer.valueOf(getDataAsString("col_pos")), Integer.valueOf(getDataAsString("wst_id"))); + res.setName(wkmsName); + return res; } @@ -236,5 +161,13 @@ { return 0; } + + + /** Return specific name. */ + public String getName() { + return "staticwqkms"; + } + + // TODO implement deepCopy. } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :