view artifacts/src/main/java/org/dive4elements/river/artifacts/states/BooleanChoiceState.java @ 8851:13650d8a2373

Generalized the FloodplainChoice to a reusable BooleanChoiceState
author gernotbelger
date Thu, 18 Jan 2018 18:26:30 +0100
parents
children 2323d005f9a5
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2017 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * 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 org.w3c.dom.Element;

import org.apache.log4j.Logger;

import org.dive4elements.artifacts.Artifact;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.artifacts.CallMeta;

import org.dive4elements.artifacts.common.utils.XMLUtils;

import org.dive4elements.artifactdatabase.ProtocolUtils;

import org.dive4elements.river.artifacts.resources.Resources;

/**
 * Generic state for a boolean choice. Only difference between real implementations are the human readable labels.
 * 
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 * @author Gernot Belger
 */
public abstract class BooleanChoiceState extends DefaultState {

	private String optionMsg;
	private String activeMsg;
	private String inactiveMsg;

    public BooleanChoiceState( String optionMsg, String activeMsg, String inactiveMsg ) {
		this.optionMsg = optionMsg;
		this.activeMsg = activeMsg;
		this.inactiveMsg = inactiveMsg;
	}
    
    private static final Logger log =
        Logger.getLogger(BooleanChoiceState.class);

    @Override
    protected String getUIProvider() {
        return "boolean_panel";
    }

    @Override
    protected Element[] createItems(
        XMLUtils.ElementCreator cr,
        Artifact    artifact,
        String      name,
        CallContext context)
    {
        CallMeta meta = context.getMeta();

        Element option = createItem(
            cr,
            new String[] { Resources.getMsg(meta, optionMsg, optionMsg), "true" });

        return new Element[] { option };
    }


    @Override
    protected String getLabelFor(
        CallContext cc,
        String      name,
        String      value,
        String      type
    ) {
        log.debug("GET LABEL FOR '" + name + "' / '" + value + "'");
        if (value != null && value.equals("true")) {
            return Resources.getMsg(cc.getMeta(), activeMsg, activeMsg);
        }
        else {
            return Resources.getMsg(cc.getMeta(), inactiveMsg, inactiveMsg);
        }
    }


    protected Element createItem(XMLUtils.ElementCreator cr, Object obj) {
        Element item  = ProtocolUtils.createArtNode(cr, "item", null, null);
        Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
        Element value = ProtocolUtils.createArtNode(cr, "value", null, null);

        String[] arr = (String[]) obj;

        label.setTextContent(arr[0]);
        value.setTextContent(arr[1]);

        item.appendChild(label);
        item.appendChild(value);

        return item;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org