[PATCH] Generalized the FloodplainChoice to a reusable BooleanChoiceState
Wald Commits
scm-commit at wald.intevation.org
Thu Jan 18 18:26:35 CET 2018
# HG changeset patch
# User gernotbelger
# Date 1516296390 -3600
# Node ID 13650d8a2373b27e49474ca16c3051858bf52714
# Parent 6823991e1ed17302b2f070da479eba01fe7a185f
Generalized the FloodplainChoice to a reusable BooleanChoiceState
diff -r 6823991e1ed1 -r 13650d8a2373 artifacts/src/main/java/org/dive4elements/river/artifacts/states/BooleanChoiceState.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/BooleanChoiceState.java Thu Jan 18 18:26:30 2018 +0100
@@ -0,0 +1,100 @@
+/* Copyright (C) 2011, 2012, 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+package org.dive4elements.river.artifacts.states;
+
+import org.w3c.dom.Element;
+
+import org.apache.log4j.Logger;
+
+import org.dive4elements.artifacts.Artifact;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.artifacts.CallMeta;
+
+import org.dive4elements.artifacts.common.utils.XMLUtils;
+
+import org.dive4elements.artifactdatabase.ProtocolUtils;
+
+import org.dive4elements.river.artifacts.resources.Resources;
+
+/**
+ * Generic state for a boolean choice. Only difference between real implementations are the human readable labels.
+ *
+ * @author <a href="mailto:ingo.weinzierl at intevation.de">Ingo Weinzierl</a>
+ * @author Gernot Belger
+ */
+public abstract class BooleanChoiceState extends DefaultState {
+
+ private String optionMsg;
+ private String activeMsg;
+ private String inactiveMsg;
+
+ public BooleanChoiceState( String optionMsg, String activeMsg, String inactiveMsg ) {
+ this.optionMsg = optionMsg;
+ this.activeMsg = activeMsg;
+ this.inactiveMsg = inactiveMsg;
+ }
+
+ private static final Logger log =
+ Logger.getLogger(BooleanChoiceState.class);
+
+ @Override
+ protected String getUIProvider() {
+ return "boolean_panel";
+ }
+
+ @Override
+ protected Element[] createItems(
+ XMLUtils.ElementCreator cr,
+ Artifact artifact,
+ String name,
+ CallContext context)
+ {
+ CallMeta meta = context.getMeta();
+
+ Element option = createItem(
+ cr,
+ new String[] { Resources.getMsg(meta, optionMsg, optionMsg), "true" });
+
+ return new Element[] { option };
+ }
+
+
+ @Override
+ protected String getLabelFor(
+ CallContext cc,
+ String name,
+ String value,
+ String type
+ ) {
+ log.debug("GET LABEL FOR '" + name + "' / '" + value + "'");
+ if (value != null && value.equals("true")) {
+ return Resources.getMsg(cc.getMeta(), activeMsg, activeMsg);
+ }
+ else {
+ return Resources.getMsg(cc.getMeta(), inactiveMsg, inactiveMsg);
+ }
+ }
+
+
+ protected Element createItem(XMLUtils.ElementCreator cr, Object obj) {
+ Element item = ProtocolUtils.createArtNode(cr, "item", null, null);
+ Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
+ Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
+
+ String[] arr = (String[]) obj;
+
+ label.setTextContent(arr[0]);
+ value.setTextContent(arr[1]);
+
+ item.appendChild(label);
+ item.appendChild(value);
+
+ return item;
+ }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
diff -r 6823991e1ed1 -r 13650d8a2373 artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodplainChoice.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodplainChoice.java Thu Jan 18 18:22:25 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodplainChoice.java Thu Jan 18 18:26:30 2018 +0100
@@ -26,6 +26,7 @@
/**
* @author <a href="mailto:ingo.weinzierl at intevation.de">Ingo Weinzierl</a>
*/
+// FIXME: inherit from BooleanChoiceState instead to remove duplicate code; BUT: this will probably break artifact serialization
public class FloodplainChoice extends DefaultState {
public static final String OPTION = "floodplain.option";
More information about the Dive4Elements-commits
mailing list