ingo@12: package de.intevation.flys.client.shared.model; ingo@12: ingo@1279: import java.util.List; ingo@1279: ingo@1279: import de.intevation.flys.client.shared.DoubleUtils; ingo@1279: ingo@12: ingo@12: /** ingo@12: * The default implementation of an {@link ArtifactDescription}. This class just ingo@12: * implements constructors to create new instances and the necessary methods of ingo@12: * the interface. ingo@12: * ingo@12: * @author Ingo Weinzierl ingo@12: */ ingo@12: public class DefaultArtifactDescription implements ArtifactDescription { ingo@12: ingo@12: /** Data that have been inserted in former states.*/ ingo@51: protected DataList[] oldData; ingo@12: ingo@12: /** The Data that is allowed to be inserted in the current state.*/ ingo@51: protected DataList currentData; ingo@12: ingo@12: /** The current state name.*/ ingo@12: protected String currentState; ingo@12: ingo@12: /** The names of reachable states.*/ ingo@12: protected String[] reachableStates; ingo@12: ingo@64: /** The output modes of this state.*/ ingo@64: protected OutputMode[] outputModes; ingo@64: ingo@807: /** A list of recommendations suggested by the server.*/ ingo@807: protected Recommendation[] recommendations; ingo@803: ingo@12: ingo@12: public DefaultArtifactDescription() { ingo@12: } ingo@12: ingo@12: ingo@12: /** ingo@12: * The default constructor. ingo@12: * ingo@12: * @param old The data that have been inserted in former states. ingo@12: * @param current The data that might be inserted in the current state. ingo@12: * @param state The name of the current state. ingo@12: * @param reachableStates The names of the reachable states. ingo@12: */ ingo@12: public DefaultArtifactDescription( ingo@64: DataList[] old, ingo@64: DataList current, ingo@64: String state, ingo@64: String[] reachableStates) ingo@12: { ingo@12: this.oldData = old; ingo@12: this.currentData = current; ingo@12: this.currentState = state; ingo@12: this.reachableStates = reachableStates; ingo@12: } ingo@12: ingo@12: ingo@64: /** ingo@64: * The default constructor. ingo@64: * ingo@64: * @param old The data that have been inserted in former states. ingo@64: * @param current The data that might be inserted in the current state. ingo@64: * @param state The name of the current state. ingo@64: * @param reachableStates The names of the reachable states. ingo@64: * @param outputModes The available output modes of this artifact. ingo@64: */ ingo@64: public DefaultArtifactDescription( ingo@807: DataList[] old, ingo@807: DataList current, ingo@807: String state, ingo@807: String[] reachableStates, ingo@807: OutputMode[] outputModes, ingo@807: Recommendation[] recommendations) ingo@64: { ingo@64: this(old, current, state, reachableStates); ingo@807: this.outputModes = outputModes; ingo@807: this.recommendations = recommendations; ingo@64: } ingo@64: ingo@64: ingo@51: public DataList[] getOldData() { ingo@12: return oldData; ingo@12: } ingo@12: ingo@12: ingo@51: public DataList getCurrentData() { ingo@12: return currentData; ingo@12: } ingo@12: ingo@12: ingo@12: public String getCurrentState() { ingo@12: return currentState; ingo@12: } ingo@12: ingo@12: ingo@12: public String[] getReachableStates() { ingo@12: return reachableStates; ingo@12: } ingo@64: ingo@64: ingo@64: public OutputMode[] getOutputModes() { ingo@64: return outputModes; ingo@64: } ingo@803: ingo@803: ingo@807: public Recommendation[] getRecommendations() { ingo@807: return recommendations; ingo@803: } ingo@1279: ingo@1279: ingo@1279: public String getRiver() { ingo@1279: for (DataList list: oldData) { ingo@1279: List dataList = list.getAll(); ingo@1279: ingo@1279: for (Data d: dataList) { ingo@1279: String dataName = d.getLabel(); ingo@1279: DataItem item = d.getItems()[0]; ingo@1279: ingo@1279: if (dataName.equals("river")) { ingo@1279: return item.getStringValue(); ingo@1279: } ingo@1279: } ingo@1279: } ingo@1279: ingo@1279: return null; ingo@1279: } ingo@1279: ingo@1279: ingo@1279: public double[] getKMRange() { ingo@1279: Double[] mm = new Double[2]; ingo@1279: ingo@1279: for (DataList list: oldData) { ingo@1279: List dataList = list.getAll(); ingo@1279: ingo@1279: for (Data data: dataList) { ingo@1279: String dataName = data.getLabel(); ingo@1279: DataItem item = data.getItems()[0]; ingo@1279: ingo@1279: if (dataName.equals("ld_from")) { ingo@1279: Double d = DoubleUtils.getDouble(item.getStringValue()); ingo@1279: ingo@1279: if (d != null) { ingo@1279: mm[0] = d; ingo@1279: } ingo@1279: } ingo@1279: else if (dataName.equals("ld_to")) { ingo@1279: Double d = DoubleUtils.getDouble(item.getStringValue()); ingo@1279: ingo@1279: if (d != null) { ingo@1279: mm[1] = d; ingo@1279: } ingo@1279: } ingo@1279: else if (dataName.equals("ld_locations")) { ingo@1279: return DoubleUtils.getMinMax(item.getStringValue()); ingo@1279: } ingo@1279: } ingo@1279: ingo@1279: if (mm[0] != null && mm[1] != null) { ingo@1279: return new double[] { mm[0], mm[1] }; ingo@1279: } ingo@1279: } ingo@1279: ingo@1279: return null; ingo@1279: } ingo@12: } ingo@12: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :