view 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 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) 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