[Dive4elements-commits] [PATCH 07 of 13] MainValuesArtifact: prepare to be created by crafted document
Wald Commits
scm-commit at wald.intevation.org
Thu May 16 17:51:27 CEST 2013
# HG changeset patch
# User Felix Wolfsteller <felix.wolfsteller at intevation.de>
# Date 1368714306 -7200
# Node ID a0dd303f4a08f94f09175e06da37f89cd01067b3
# Parent 7dd2f5435426673b5a9401094598f806f3b112c9
MainValuesArtifact: prepare to be created by crafted document.
diff -r 7dd2f5435426 -r a0dd303f4a08 artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java Thu May 16 16:20:18 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java Thu May 16 16:25:06 2013 +0200
@@ -25,6 +25,9 @@
import org.dive4elements.artifacts.ArtifactFactory;
import org.dive4elements.artifacts.CallMeta;
+import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
+import org.dive4elements.artifacts.common.utils.XMLUtils;
+
import org.dive4elements.river.model.Gauge;
import org.dive4elements.river.model.MainValue;
import org.dive4elements.river.model.River;
@@ -106,6 +109,8 @@
logger.debug("MainValuesArtifact.setup");
state = new StaticState(STATIC_STATE_NAME);
+ initFromGaugeDoc(data, callMeta);
+
List<Facet> fs = new ArrayList<Facet>();
addFacets(state.getID(), fs);
spawnState();
@@ -176,6 +181,41 @@
}
}
+ /**
+ * The MainValueArtifact can be set up with a document giving the
+ * river and gauge. This happens in context of GaugeDischargeArtifact.
+ * In that case, initalize() is not called.
+ */
+ private void initFromGaugeDoc(Document data, CallMeta callMeta) {
+ String gaugeref = XMLUtils.xpathString(
+ data, GaugeDischargeCurveArtifact.XPATH_GAUGE,
+ ArtifactNamespaceContext.INSTANCE);
+ String rivername = XMLUtils.xpathString(
+ data, GaugeDischargeCurveArtifact.XPATH_RIVER,
+ ArtifactNamespaceContext.INSTANCE);
+
+ if (rivername == null || gaugeref == null || rivername.equals("")
+ || gaugeref.equals("")) {
+ logger.debug("Not setting MainValuesArtifact up from gauge doc.");
+ return;
+ }
+
+ addData("river", new DefaultStateData("river",
+ Resources.getMsg(callMeta,
+ "facet.gauge_discharge_curve.river",
+ "Name of the river"),
+ "String", rivername));
+
+ try {
+ Long officialNumber = Long.valueOf(gaugeref);
+ Gauge gauge = Gauge.getGaugeByOfficialNumber(officialNumber);
+ addData("ld_locations", new DefaultStateData("ld_locations", null, null,
+ String.valueOf(gauge.getStation())));
+ } catch (NumberFormatException nfe) {
+ logger.debug("MainValuesArtifact could not parse gaugeref from doc.");
+ }
+ }
+
/**
* Create "the" state.
More information about the Dive4elements-commits
mailing list