view flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultArtifactDescription.java @ 3847:f3b821735e39

Calculate the info url via i18n Don't fetch the info url from the artifact service and use i18n to calculate the url by using the official gauge and river number. flys-client/trunk@5582 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Bjoern Ricks <bjoern.ricks@intevation.de>
date Mon, 24 Sep 2012 08:39:22 +0000
parents e6186ab00553
children
line wrap: on
line source
package de.intevation.flys.client.shared.model;

import java.util.List;

import de.intevation.flys.client.shared.DoubleUtils;


/**
 * The default implementation of an {@link ArtifactDescription}. This class just
 * implements constructors to create new instances and the necessary methods of
 * the interface.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class DefaultArtifactDescription implements ArtifactDescription {

    /** Data that have been inserted in former states.*/
    protected DataList[] oldData;

    /** The Data that is allowed to be inserted in the current state.*/
    protected DataList currentData;

    /** The current state name.*/
    protected String   currentState;

    /** The names of reachable states.*/
    protected String[] reachableStates;

    /** The output modes of this state.*/
    protected OutputMode[] outputModes;

    /** A list of recommendations suggested by the server.*/
    protected Recommendation[] recommendations;


    public DefaultArtifactDescription() {
    }


    /**
     * The default constructor.
     *
     * @param old The data that have been inserted in former states.
     * @param current The data that might be inserted in the current state.
     * @param state The name of the current state.
     * @param reachableStates The names of the reachable states.
     */
    public DefaultArtifactDescription(
        DataList[]   old,
        DataList     current,
        String       state,
        String[]     reachableStates)
    {
        this.oldData         = old;
        this.currentData     = current;
        this.currentState    = state;
        this.reachableStates = reachableStates;
    }


    /**
     * The default constructor.
     *
     * @param old The data that have been inserted in former states.
     * @param current The data that might be inserted in the current state.
     * @param state The name of the current state.
     * @param reachableStates The names of the reachable states.
     * @param outputModes The available output modes of this artifact.
     */
    public DefaultArtifactDescription(
        DataList[]       old,
        DataList         current,
        String           state,
        String[]         reachableStates,
        OutputMode[]     outputModes,
        Recommendation[] recommendations)
    {
        this(old, current, state, reachableStates);
        this.outputModes     = outputModes;
        this.recommendations = recommendations;
    }


    public DataList[] getOldData() {
        return oldData;
    }


    public DataList getCurrentData() {
        return currentData;
    }


    public String getCurrentState() {
        return currentState;
    }


    public String[] getReachableStates() {
        return reachableStates;
    }


    public OutputMode[] getOutputModes() {
        return outputModes;
    }


    public Recommendation[] getRecommendations() {
        return recommendations;
    }


    public String getRiver() {
        return getDataValueAsString("river");
    }


    /** Get [min,max] of data items. */
    public double[] getKMRange() {
        Double[] mm = new Double[2];

        for (DataList list: oldData) {
            List<Data> dataList = list.getAll();

            for (Data data: dataList) {
                String dataName = data.getLabel();
                DataItem item   = data.getItems()[0];

                if (dataName.equals("ld_from") || dataName.equals("from")) {
                    Double d = DoubleUtils.getDouble(item.getStringValue());

                    if (d != null) {
                        mm[0] = d;
                    }
                }
                else if (dataName.equals("ld_to") || dataName.equals("to")) {
                    Double d = DoubleUtils.getDouble(item.getStringValue());

                    if (d != null) {
                        mm[1] = d;
                    }
                }
                else if (dataName.equals("ld_locations")) {
                    return DoubleUtils.getMinMax(item.getStringValue());
                }
            }

            if (mm[0] != null && mm[1] != null) {
                return new double[] { mm[0], mm[1] };
            }
        }

        return null;
    }


    public String getReferenceGauge() {
        return getDataValueAsString("reference_gauge");
    }


    public String getDataValueAsString(String name) {
        if (oldData == null) {
            return null;
        }
        for (DataList list: oldData) {
            List<Data> dataList = list.getAll();

            for (Data d: dataList) {
                String dataName = d.getLabel();
                DataItem item   = d.getItems()[0];

                if (dataName.equals(name)) {
                    return item.getStringValue();
                }
            }
        }

        return null;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org