view flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/DifferenceSelect.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/DifferenceSelect.java@a3dc382bc1ca
children
line wrap: on
line source
package org.dive4elements.river.artifacts.states.minfo;

import java.util.List;

import org.w3c.dom.Element;

import org.dive4elements.artifactdatabase.state.Facet;
import org.dive4elements.artifacts.Artifact;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.artifacts.common.utils.XMLUtils;
import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
import org.dive4elements.river.artifacts.FLYSArtifact;
import org.dive4elements.river.artifacts.access.BedHeightAccess;
import org.dive4elements.river.artifacts.states.DefaultState;
import org.dive4elements.river.utils.StringUtil;

/**
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class DifferenceSelect extends DefaultState {

    /**
     * The default constructor that initializes an empty State object.
     */
    public DifferenceSelect() {
    }
    /**
     *  Specify to display nothing (this is kind of a "final" state).
     */
    @Override
    protected String getUIProvider() {
        return "bedheights_twin_panel";
    }

    /**
     * Overridden to do nothing.
     */
    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets,
        Object       old
    ) {
        //Get data and do stuff, do not calculate
        return "";
    }

    @Override
    protected Element[] createItems(
        XMLUtils.ElementCreator ec,
        Artifact                artifact,
        String                  name,
        CallContext             context)
    {
        Element[] elements = new Element[1];
        BedHeightAccess bha = new BedHeightAccess((FLYSArtifact)artifact, context);
        String time = bha.getYearEpoch();
        elements[0] = createItem(
            ec,
            new String[] {"year-epoch", time});

        return elements;
    }

    /**
     * Creates the data element used for the static part of DESCRIBE document.
     */
    @Override
    protected Element createStaticData(
        FLYSArtifact   flys,
        ElementCreator creator,
        CallContext    cc,
        String         name,
        String         value,
        String         type
    ) {
        Element dataElement = creator.create("data");
        creator.addAttr(dataElement, "name", name, true);
        creator.addAttr(dataElement, "type", type, true);

        Element itemElement = creator.create("item");
        creator.addAttr(itemElement, "value", value, true);

        String[] labels = getLabels(cc, value);

        creator.addAttr(
            itemElement,
            "label",
            labels[0],
            true);
        dataElement.appendChild(itemElement);

        return dataElement;
    }


    /**
     * Get name to display for selected watelerlevels (for example "Q=123")
     * from the CalculationResult.
     */
    public static String[] getLabels(CallContext cc, String value) {
        String[] recommendations = value.split("#");
        String displayString = "";

        // Walk over all selected recommendations and create label
        for (int i = 0; i < recommendations.length; i+=2) {
            String[] minuendParts = StringUtil
                .unbracket(recommendations[i+0])
                .split(";");
            if(minuendParts.length >= 4) {
                displayString += "(" + minuendParts[3];
            }
            else {
                displayString += "([error]";
            }

            displayString += " - ";

            String[] subtrahendParts = StringUtil
                .unbracket(recommendations[i+1])
                .split(";");
            if(subtrahendParts.length >= 4) {
                displayString += subtrahendParts[3] + ") ";
            }
            else {
                displayString += "[error])";
            }
        }

        return new String[] { displayString };
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org