view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MultiStringArrayState.java @ 5462:f2371f3aaf03

Show top level folder icons only if node has no factory If you have an empty folder the folder icon is still shown. This makes it possible to add functional "Top Level" entries in the Datacage
author Andre Heinecke <aheinecke@intevation.de>
date Tue, 26 Mar 2013 18:29:13 +0100
parents 33bfc01410fb
children
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import org.w3c.dom.Element;

import org.apache.log4j.Logger;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.CallContext;

import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
import de.intevation.artifacts.common.model.KVP;

import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.resources.Resources;


/**
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public abstract class MultiStringArrayState extends DefaultState {

    private static final Logger logger =
        Logger.getLogger(MultiStringArrayState.class);


    @Override
    protected void appendItems(
        Artifact       artifact,
        ElementCreator creator,
        String         name,
        CallContext    context,
        Element        select
    ) {
        try {
            creator.addAttr(select, "type", "options", true);

            for (KVP kvp: getOptions(artifact, name, context)) {
                Element item = creator.create("item");
                creator.addAttr(item, "label", kvp.getValue().toString(), true);
                creator.addAttr(item, "value", kvp.getKey().toString(), true);

                select.appendChild(item);
            }
        }
        catch (IllegalArgumentException iae) {
            logger.warn("Illegal argument", iae);
        }
    }


    @Override
    protected Element createStaticData(
        FLYSArtifact   flys,
        ElementCreator creator,
        CallContext    cc,
        String         name,
        String         value,
        String         type
    ) {
        Element data = creator.create("data");
        creator.addAttr(data, "name",  name, true);
        creator.addAttr(data, "type",  type, true);
        creator.addAttr(data, "label",
            Resources.getMsg(cc.getMeta(), name, name), true);

        String[] values = value.split(";");

        for (String val: values) {
            Element item = creator.create("item");
            creator.addAttr(item, "value", val, true);
            creator.addAttr(item, "label", getLabelFor(cc, name, val), true);

            data.appendChild(item);
        }

        return data;
    }


    protected abstract KVP<String, String>[] getOptions(
        Artifact artifact,
        String   parameterName,
        CallContext context
    )
    throws IllegalArgumentException;


    protected abstract String getLabelFor(
        CallContext cc,
        String      parameterName,
        String      value
    )
    throws IllegalArgumentException;
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org