felix@2131: package de.intevation.flys.artifacts; felix@2131: felix@2131: import java.util.ArrayList; felix@2131: import java.util.List; felix@2131: felix@2131: import org.apache.log4j.Logger; felix@2131: felix@2131: import org.w3c.dom.Document; felix@2131: felix@2131: import de.intevation.artifacts.Artifact; felix@2131: import de.intevation.artifacts.ArtifactFactory; felix@2131: import de.intevation.artifacts.CallMeta; felix@2131: felix@2131: import de.intevation.artifacts.common.ArtifactNamespaceContext; felix@2131: import de.intevation.artifacts.common.utils.XMLUtils; felix@2131: felix@2131: import de.intevation.flys.artifacts.states.DefaultState; felix@2131: felix@2131: import de.intevation.artifactdatabase.state.Facet; felix@2131: felix@2131: felix@2131: /** felix@2131: * Artifact describing the area between two WKms. felix@2131: */ felix@2131: public class HYKArtifact extends StaticFLYSArtifact { felix@2131: felix@2131: /** Access ids of doc. */ felix@2131: public static final String XPATH_IDS = "/art:action/art:ids/@value"; felix@2131: felix@2131: /** Name of Artifact. */ felix@2131: public static final String HYK_ARTIFACT_NAME = "hyk"; felix@2131: felix@2131: /** Name of data item keeping the km of cs master. */ felix@2131: public static final String HYK_KM = "hyk_artifact.data.km"; felix@2131: felix@2131: /** Own logger. */ felix@2131: private static final Logger logger = felix@2131: Logger.getLogger(HYKArtifact.class); felix@2131: felix@2131: felix@2131: /** Return given name. */ felix@2131: @Override felix@2131: public String getName() { felix@2131: return HYK_ARTIFACT_NAME; felix@2131: } felix@2131: felix@2131: felix@2131: /** Store ids, do super.setup. */ felix@2131: @Override felix@2131: public void setup( felix@2131: String identifier, felix@2131: ArtifactFactory factory, felix@2131: Object context, felix@2131: CallMeta callMeta, felix@2131: Document data) felix@2131: { felix@2131: logger.info("HYKArtifact.setup"); felix@2131: felix@2131: super.setup(identifier, factory, context, callMeta, data); felix@2131: felix@2131: String ids = XMLUtils.xpathString( felix@2131: data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); felix@2131: felix@2131: addStringData("ids", ids); felix@2131: } felix@2131: felix@2131: felix@2131: /** Set km as Data. */ felix@2131: public void setKm(double km) { felix@2131: addStringData(HYK_KM, Double.toString(km)); felix@2131: } felix@2131: felix@2131: felix@2131: /** felix@2131: * Get a DataItem casted to double (0 if fails). felix@2131: * TODO move to FlysArtifact. felix@2131: */ felix@2131: public double getDataAsDouble(String dataName) { felix@2131: String val = getDataAsString(dataName); felix@2131: if (val == null) { felix@2131: logger.warn("Data not available."); felix@2131: return 0d; felix@2131: } felix@2131: try { felix@2131: return Double.valueOf(val); felix@2131: } felix@2131: catch (NumberFormatException e) { felix@2131: logger.warn("Could not get data " + dataName + " as double", e); felix@2131: return 0; felix@2131: } felix@2131: } felix@2131: felix@2131: felix@2131: /** Get km from state data. */ felix@2131: public double getKm() { felix@2131: return getDataAsDouble(HYK_KM); felix@2131: } felix@2131: felix@2131: /** Do not copy data from daddyfact. */ felix@2131: @Override felix@2131: protected void initialize( felix@2131: Artifact artifact, felix@2131: Object context, felix@2131: CallMeta callMeta) felix@2131: { felix@2131: logger.debug("HYKArtifact.initialize"); felix@2131: WINFOArtifact winfo = (WINFOArtifact) artifact; felix@2131: importData(winfo, "river"); felix@2131: felix@2131: List fs = new ArrayList(); felix@2131: felix@2131: DefaultState state = (DefaultState) getCurrentState(context); felix@2131: state.computeInit(this, hash(), context, callMeta, fs); felix@2131: if (!fs.isEmpty()) { felix@2131: logger.debug("Facets to add in HYKArtifact.initialize ."); felix@2131: facets.put(getCurrentStateId(), fs); felix@2131: } felix@2131: else { felix@2131: logger.debug("No facets to add in HYKArtifact.initialize (" felix@2131: + state.getID() + ")."); felix@2131: } felix@2131: } felix@2131: } felix@2131: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :