teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
teichmann@5863: * Software engineering by Intevation GmbH
teichmann@5863: *
teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3)
teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the
teichmann@5994: * documentation coming with Dive4Elements River for details.
teichmann@5863: */
teichmann@5863:
teichmann@5831: package org.dive4elements.river.artifacts.states.minfo;
raimund@3614:
raimund@3614: import java.util.List;
raimund@3614:
raimund@3614: import org.w3c.dom.Element;
raimund@3614:
teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet;
teichmann@5831: import org.dive4elements.artifacts.CallContext;
teichmann@5831: import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact;
teichmann@5831: import org.dive4elements.river.artifacts.states.DefaultState;
teichmann@8186: import org.dive4elements.river.backend.utils.StringUtil;
raimund@3614:
raimund@3614: /**
raimund@3614: * @author Raimund Renkert
raimund@3614: */
raimund@3614: public class DifferenceSelect extends DefaultState {
raimund@3614:
raimund@3614: /**
raimund@3614: * The default constructor that initializes an empty State object.
raimund@3614: */
raimund@3614: public DifferenceSelect() {
raimund@3614: }
raimund@3614: /**
raimund@3614: * Specify to display nothing (this is kind of a "final" state).
raimund@3614: */
raimund@3614: @Override
raimund@3614: protected String getUIProvider() {
raimund@3614: return "bedheights_twin_panel";
raimund@3614: }
raimund@3614:
raimund@3614: /**
raimund@3614: * Overridden to do nothing.
raimund@3614: */
raimund@3614: @Override
raimund@3614: public Object computeAdvance(
teichmann@5867: D4EArtifact artifact,
raimund@3614: String hash,
raimund@3614: CallContext context,
raimund@3614: List facets,
raimund@3614: Object old
raimund@3614: ) {
raimund@3614: //Get data and do stuff, do not calculate
raimund@3614: return "";
raimund@3614: }
raimund@3614:
raimund@3614: /**
raimund@3614: * Creates the data element used for the static part of DESCRIBE document.
raimund@3614: */
raimund@3614: @Override
raimund@3614: protected Element createStaticData(
teichmann@5867: D4EArtifact flys,
raimund@3614: ElementCreator creator,
raimund@3614: CallContext cc,
raimund@3614: String name,
raimund@3614: String value,
raimund@3614: String type
raimund@3614: ) {
raimund@3614: Element dataElement = creator.create("data");
raimund@3614: creator.addAttr(dataElement, "name", name, true);
raimund@3614: creator.addAttr(dataElement, "type", type, true);
raimund@3614:
raimund@3614: Element itemElement = creator.create("item");
raimund@3614: creator.addAttr(itemElement, "value", value, true);
raimund@3614:
raimund@3614: String[] labels = getLabels(cc, value);
raimund@3614:
raimund@3614: creator.addAttr(
raimund@3614: itemElement,
raimund@3614: "label",
raimund@3614: labels[0],
raimund@3614: true);
raimund@3614: dataElement.appendChild(itemElement);
raimund@3614:
raimund@3614: return dataElement;
raimund@3614: }
raimund@3614:
raimund@3614:
raimund@3614: /**
raimund@3614: * Get name to display for selected watelerlevels (for example "Q=123")
raimund@3614: * from the CalculationResult.
raimund@3614: */
raimund@3614: public static String[] getLabels(CallContext cc, String value) {
raimund@3614: String[] recommendations = value.split("#");
raimund@3614: String displayString = "";
raimund@3614:
raimund@3614: // Walk over all selected recommendations and create label
raimund@3614: for (int i = 0; i < recommendations.length; i+=2) {
raimund@3614: String[] minuendParts = StringUtil
raimund@3614: .unbracket(recommendations[i+0])
raimund@3614: .split(";");
raimund@3614: if(minuendParts.length >= 4) {
raimund@3614: displayString += "(" + minuendParts[3];
raimund@3614: }
raimund@3614: else {
raimund@3614: displayString += "([error]";
raimund@3614: }
raimund@3614:
raimund@3614: displayString += " - ";
raimund@3614:
raimund@3614: String[] subtrahendParts = StringUtil
raimund@3614: .unbracket(recommendations[i+1])
raimund@3614: .split(";");
raimund@3614: if(subtrahendParts.length >= 4) {
raimund@3614: displayString += subtrahendParts[3] + ") ";
raimund@3614: }
raimund@3614: else {
raimund@3614: displayString += "[error])";
raimund@3614: }
raimund@3614: }
raimund@3614:
raimund@3614: return new String[] { displayString };
raimund@3614: }
raimund@3614: }
raimund@3614: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :