Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/states/AddTableDataHelper.java @ 9425:3f49835a00c3
Extended CrossSectionFacet so it may fetch different data from within the artifact result.
Also allows to have acces to the potentially already computed artifact result via its normal computation cache.
author | gernotbelger |
---|---|
date | Fri, 17 Aug 2018 15:31:02 +0200 |
parents | 2b13de1b0897 |
children |
line wrap: on
line source
/** 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) { 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 { try { throw new Exception("Error: No such column " + entry.getKey()); } catch (final Exception e) { e.printStackTrace(); } } } 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); } }