Mercurial > dive4elements > river
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); + + } + +}