diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/AddTableDataHelper.java @ 9074:766890addcb2

state To client communication;
author gernotbelger
date Fri, 18 May 2018 17:26:26 +0200
parents
children 2b13de1b0897
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/AddTableDataHelper.java	Fri May 18 17:26:26 2018 +0200
@@ -0,0 +1,96 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by
+ *  Björnsen Beratende Ingenieure GmbH
+ *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
+ *
+ * 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 java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.dive4elements.artifacts.CallMeta;
+import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.w3c.dom.Element;
+
+/**
+ * @author Domenico Nardi Tironi
+ *
+ */
+public class AddTableDataHelper {
+
+    private final ElementCreator creator;
+    private final Element select;
+    private final CallMeta callmeta;
+    // Create Metadata:
+    final Map<String, Map<String, String>> meta = new HashMap<>();
+    final List<String> columnValidList = new ArrayList<>();
+
+    public AddTableDataHelper(final ElementCreator creator, final Element select, final String pinKeyColumn, final CallMeta callMeta) {
+        this.creator = creator;
+        this.select = select;
+        this.callmeta = callMeta;
+        creator.addAttr(select, "type", "multiattribute", true);
+
+        final Map<String, String> metaTableInfo = new HashMap<>();
+        metaTableInfo.put("keycol", pinKeyColumn);
+        this.meta.put("meta_tableinfo", metaTableInfo);
+
+    }
+
+    public void submitMapToXml() {
+
+        final Element meta = this.creator.create("meta");
+
+        for (final Entry<String, Map<String, String>> entry : this.meta.entrySet()) {
+            final String name = entry.getKey(); // z.B. Spaltenname
+            final Map<String, String> keyValueMap = entry.getValue();
+            final Element element = this.creator.create(name);
+
+            for (final Entry<String, String> kventry : keyValueMap.entrySet()) {
+                this.creator.addAttr(element, kventry.getKey(), kventry.getValue());
+            }
+            meta.appendChild(element);
+        }
+
+        this.select.appendChild(meta);
+
+    }
+
+    public void addRow(final Map<String, String> colValMap) throws Exception {
+
+        final Element item = this.creator.create("item");
+
+        for (final Entry<String, String> entry : colValMap.entrySet()) {
+            if (this.meta.containsKey(entry.getKey())) {
+                this.creator.addAttr(item, entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : "");
+            } else {
+                throw new Exception("Error: No such column " + entry.getKey());
+            }
+        }
+        this.select.appendChild(item);
+    }
+
+    public void addColumn(final int order, final String rootHashmapKey, final String colWidth, final String translationKeyFromMessages, final String type,
+            final String alignment, final String pinType) {
+
+        final Map<String, String> map = new HashMap<>();
+        map.put("colwidth", colWidth);
+        final String translation = Resources.getMsg(this.callmeta, translationKeyFromMessages);
+        map.put("translation", translation);
+        map.put("type", type);
+        map.put("alignment", alignment);
+        map.put("order", Integer.toString(order));
+        map.put("pin", pinType);
+        this.meta.put(rootHashmapKey, map);
+
+    }
+
+}

http://dive4elements.wald.intevation.org