diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/DatacagePairSelectState.java @ 8951:322b0e6298ea

Work on SINFO FlowDepth-Development
author gernotbelger
date Fri, 16 Mar 2018 18:08:38 +0100
parents
children 5294114b1df4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/DatacagePairSelectState.java	Fri Mar 16 18:08:38 2018 +0100
@@ -0,0 +1,118 @@
+/* Copyright (C) 2011, 2012, 2013 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.sinfo.common;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.dive4elements.artifactdatabase.ProtocolUtils;
+import org.dive4elements.artifactdatabase.state.Facet;
+import org.dive4elements.artifacts.Artifact;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
+import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.model.FacetTypes;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.dive4elements.river.artifacts.states.DefaultState;
+import org.dive4elements.river.artifacts.states.WaterlevelPairSelectState;
+import org.w3c.dom.Element;
+
+/**
+ * Copy of {@link WaterlevelPairSelectState}. We must copy instead of crate an abstraction, else we break the
+ * serialization of {@link WaterlevelPairSelectState}.
+ * State in which the user selects 1 to n pairs of Waterlevels and alikes.
+ */
+public abstract class DatacagePairSelectState extends DefaultState implements FacetTypes {
+
+    private static final long serialVersionUID = 1L;
+
+    /** The log that is used in this state. */
+    private static Logger log = Logger.getLogger(DatacagePairSelectState.class);
+
+    private final String dataId;
+
+    private final String uiProvider;
+
+    /**
+     * Name of the state data this state is responsible for.
+     */
+    public DatacagePairSelectState(final String uiProvider, final String dataId) {
+        this.uiProvider = uiProvider;
+        this.dataId = dataId;
+    }
+
+    /** Specify to display a datacage_twin_panel. */
+    @Override
+    protected final String getUIProvider() {
+        return this.uiProvider;
+    }
+
+    /**
+     * Overridden to do nothing.
+     */
+    @Override
+    public final Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
+        // Get data and do stuff, do not calculate
+        return "";
+    }
+
+    /**
+     * Create elements for document (prepopulated with data, if any).
+     *
+     * @param artifact
+     *            D4EArtifact to get data from.
+     * @param name
+     *            DataName, expceted to be dataId given in constructor.
+     */
+    @Override
+    protected final Element[] createItems(final ElementCreator cr, final Artifact artifact, final String name, final CallContext context) {
+        log.debug("createItems: " + name);
+
+        if (name.equals(this.dataId)) {
+            final Element item = ProtocolUtils.createArtNode(cr, "item", null, null);
+            final Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
+            final Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
+
+            final D4EArtifact flys = (D4EArtifact) artifact;
+
+            final String s = flys.getDataAsString(name);
+            value.setTextContent(s);
+            item.appendChild(label);
+            item.appendChild(value);
+            return new Element[] { item };
+        }
+
+        return new Element[] {};
+    }
+
+    /**
+     * Creats the data element used for the static part of DESCRIBE document.
+     */
+    @Override
+    protected final Element createStaticData(final D4EArtifact flys, final ElementCreator creator, final CallContext cc, final String name, final String value,
+            final String type) {
+        final Element dataElement = creator.create("data");
+        creator.addAttr(dataElement, "name", name, true);
+        creator.addAttr(dataElement, "type", type, true);
+
+        final Element itemElement = creator.create("item");
+        creator.addAttr(itemElement, "value", value, true);
+
+        final String[] labels = WaterlevelPairSelectState.getLabels(cc, value);
+        final Object[] obj = new Object[] { labels[0] };
+
+        // TODO own i18n
+        final String attrValue = Resources.getMsg(cc.getMeta(), "wsp.selected.string", "wsp.selected.string", obj);
+
+        creator.addAttr(itemElement, "label", attrValue, true);
+        dataElement.appendChild(itemElement);
+
+        return dataElement;
+    }
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org