Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/HYKArtifact.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 | 79044646f4eb |
children | c553d4fa3957 |
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/HYKArtifact.java Fri Sep 28 12:14:59 2012 +0200 @@ -0,0 +1,156 @@ +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.artifacts.common.ArtifactNamespaceContext; +import de.intevation.artifacts.common.utils.XMLUtils; + +import de.intevation.flys.artifacts.states.DefaultState; + +import de.intevation.artifactdatabase.state.Facet; + + +/** + * Artifact to get hydr zones (HYKs). + */ +public class HYKArtifact extends StaticFLYSArtifact { + + /** Access ids of doc. */ + public static final String XPATH_IDS = "/art:action/art:ids/@value"; + + /** Name of Artifact. */ + public static final String HYK_ARTIFACT_NAME = "hyk"; + + /** Name of data item keeping the hyk id to load formations from. */ + public static final String HYK_ID = "hyk_artifact.data.id"; + + /** Name of data item keeping the km of cs master. */ + public static final String HYK_KM = "hyk_artifact.data.km"; + + /** Own logger. */ + private static final Logger logger = + Logger.getLogger(HYKArtifact.class); + + + /** Return given name. */ + @Override + public String getName() { + return HYK_ARTIFACT_NAME; + } + + + /** Store ids, do super.setup. */ + @Override + public void setup( + String identifier, + ArtifactFactory factory, + Object context, + CallMeta callMeta, + Document data) + { + logger.info("HYKArtifact.setup"); + + String ids = XMLUtils.xpathString( + data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); + + logger.info("HYKArtifact.setup: id is " + ids); + + addStringData(HYK_ID, ids); + + super.setup(identifier, factory, context, callMeta, data); + } + + + /** Set km as Data. */ + public void setKm(double km) { + addStringData(HYK_KM, Double.toString(km)); + } + + + /** + * Get a DataItem casted to double (0 if fails). + * TODO move to FlysArtifact. + */ + public double getDataAsDouble(String dataName) { + String val = getDataAsString(dataName); + if (val == null) { + logger.warn("Data not available."); + return 0d; + } + try { + return Double.valueOf(val); + } + catch (NumberFormatException e) { + logger.warn("Could not get data " + dataName + " as double", e); + return 0; + } + } + + + /** Get km from state data. */ + public double getKm() { + return getDataAsDouble(HYK_KM); + } + + + /** Get hyk-id from state data. */ + public int getHykId() { + return getDataAsInteger(HYK_ID); + } + + + /** Do not copy data from daddyfact. */ + @Override + protected void initialize( + Artifact artifact, + Object context, + CallMeta callMeta) + { + logger.debug("HYKArtifact.initialize"); + WINFOArtifact winfo = (WINFOArtifact) artifact; + importData(winfo, "river"); + + List<Facet> fs = new ArrayList<Facet>(); + + DefaultState state = (DefaultState) getCurrentState(context); + state.computeInit(this, hash(), context, callMeta, fs); + if (!fs.isEmpty()) { + logger.debug("Facets to add in HYKArtifact.initialize ."); + facets.put(getCurrentStateId(), fs); + } + else { + logger.debug("No facets to add in HYKArtifact.initialize (" + + state.getID() + ")."); + } + } + + + /** + * Determines Facets initial disposition regarding activity (think of + * selection in Client ThemeList GUI). This will be checked one time + * when the facet enters a collections describe document. + * + * @param facetName name of the facet. + * @param index index of the facet. + * + * @return Always 0. Hyk Data will enter plots inactive. + */ + @Override + public int getInitialFacetActivity( + String outputName, + String facetName, + int index) + { + return 0; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :