annotate 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
rev   line source
9074
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
2 * Software engineering by
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
5 *
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
9 */
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.states;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
11
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
12 import java.util.ArrayList;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
13 import java.util.HashMap;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
14 import java.util.List;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
15 import java.util.Map;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
16 import java.util.Map.Entry;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
17
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
18 import org.dive4elements.artifacts.CallMeta;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
19 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.artifacts.resources.Resources;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
21 import org.w3c.dom.Element;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
22
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
23 /**
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
24 * @author Domenico Nardi Tironi
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
25 *
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
26 */
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
27 public class AddTableDataHelper {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
28
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
29 private final ElementCreator creator;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
30 private final Element select;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
31 private final CallMeta callmeta;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
32 // Create Metadata:
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
33 final Map<String, Map<String, String>> meta = new HashMap<>();
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
34 final List<String> columnValidList = new ArrayList<>();
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
35
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
36 public AddTableDataHelper(final ElementCreator creator, final Element select, final String pinKeyColumn, final CallMeta callMeta) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
37 this.creator = creator;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
38 this.select = select;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
39 this.callmeta = callMeta;
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
40 creator.addAttr(select, "type", "multiattribute", true);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
41
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
42 final Map<String, String> metaTableInfo = new HashMap<>();
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
43 metaTableInfo.put("keycol", pinKeyColumn);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
44 this.meta.put("meta_tableinfo", metaTableInfo);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
45
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
46 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
47
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
48 public void submitMapToXml() {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
49
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
50 final Element meta = this.creator.create("meta");
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
51
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
52 for (final Entry<String, Map<String, String>> entry : this.meta.entrySet()) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
53 final String name = entry.getKey(); // z.B. Spaltenname
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
54 final Map<String, String> keyValueMap = entry.getValue();
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
55 final Element element = this.creator.create(name);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
56
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
57 for (final Entry<String, String> kventry : keyValueMap.entrySet()) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
58 this.creator.addAttr(element, kventry.getKey(), kventry.getValue());
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
59 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
60 meta.appendChild(element);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
61 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
62
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
63 this.select.appendChild(meta);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
64
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
65 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
66
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
67 public void addRow(final Map<String, String> colValMap) throws Exception {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
68
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
69 final Element item = this.creator.create("item");
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
70
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
71 for (final Entry<String, String> entry : colValMap.entrySet()) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
72 if (this.meta.containsKey(entry.getKey())) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
73 this.creator.addAttr(item, entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : "");
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
74 } else {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
75 throw new Exception("Error: No such column " + entry.getKey());
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
76 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
77 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
78 this.select.appendChild(item);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
79 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
80
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
81 public void addColumn(final int order, final String rootHashmapKey, final String colWidth, final String translationKeyFromMessages, final String type,
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
82 final String alignment, final String pinType) {
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
83
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
84 final Map<String, String> map = new HashMap<>();
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
85 map.put("colwidth", colWidth);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
86 final String translation = Resources.getMsg(this.callmeta, translationKeyFromMessages);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
87 map.put("translation", translation);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
88 map.put("type", type);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
89 map.put("alignment", alignment);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
90 map.put("order", Integer.toString(order));
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
91 map.put("pin", pinType);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
92 this.meta.put(rootHashmapKey, map);
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
93
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
94 }
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
95
766890addcb2 state To client communication;
gernotbelger
parents:
diff changeset
96 }

http://dive4elements.wald.intevation.org