raimund@2541: package de.intevation.flys.client.shared.model;
raimund@2541:
raimund@2541: import java.util.List;
raimund@2884: import java.lang.NumberFormatException;
raimund@2541:
raimund@2884: import de.intevation.flys.client.client.ui.fixation.FixationPanel;
raimund@2884: import de.intevation.flys.client.client.ui.fixation.FixationPanel.FixFilter;
raimund@2541:
raimund@2541: /**
raimund@2541: * The Fixanalysis implementation of an Artifact.
raimund@2541: *
raimund@2541: * @author Raimund Renkert
raimund@2541: */
raimund@2541: public class FixAnalysisArtifact extends DefaultArtifact {
raimund@2541:
raimund@2541: /** The name of this artifact: 'minfo'.*/
raimund@2541: public static final String NAME = "fixanalysis";
raimund@2541:
raimund@2884: protected FixationPanel.FixFilter filter;
raimund@2541:
raimund@2541: public FixAnalysisArtifact() {
raimund@2884: this.filter = null;
raimund@2541: }
raimund@2541:
raimund@2541:
raimund@2541: public FixAnalysisArtifact(String uuid, String hash) {
raimund@2541: super(uuid, hash);
raimund@2884: this.filter = null;
raimund@2541: }
raimund@2541:
raimund@2541:
raimund@2541: public FixAnalysisArtifact(
raimund@2541: String uuid,
raimund@2541: String hash,
raimund@2541: boolean inBackground,
raimund@2541: List messages
raimund@2541: ) {
raimund@2541: super(uuid, hash, inBackground, messages);
raimund@2541: }
raimund@2541:
raimund@2541:
raimund@2541: public String getName() {
raimund@2541: return NAME;
raimund@2541: }
raimund@2884:
raimund@2884:
raimund@2884: public FixationPanel.FixFilter getFilter () {
raimund@2884: return createFilter();
raimund@2884: }
raimund@2884:
raimund@2884:
raimund@2884: protected FixFilter createFilter() {
raimund@2884: if (this.filter == null) {
raimund@2884: this.filter = new FixFilter();
raimund@2884: }
raimund@2884: DataList[] old = artifactDescription.getOldData();
raimund@2884: for (int i = 0; i < old.length; i++) {
raimund@2884: DataList data = old[i];
raimund@2884: List items = data.getAll();
raimund@2884: String state = data.getState();
raimund@2884: if (state.equals("state.fix.river")) {
raimund@2884: Data d = getData(items, "river");
raimund@2884: this.filter.setRiver(d.getItems()[0].getLabel());
raimund@2884: }
raimund@2884: if (state.equals("state.fix.location")) {
raimund@2884: Data df = getData(items, "from");
raimund@2884: Data dt = getData(items, "to");
raimund@2884: try {
raimund@2884: String from = df.getItems()[0].getLabel();
raimund@2884: String to = dt.getItems()[0].getLabel();
raimund@2884: double fkm = Double.valueOf(from).doubleValue();
raimund@2884: double tkm = Double.valueOf(to).doubleValue();
raimund@2884: this.filter.setFromKm(fkm);
raimund@2884: this.filter.setToKm(tkm);
raimund@2884: if (fkm > filter.getCurrentKm()) {
raimund@2884: this.filter.setCurrentKm(fkm);
raimund@2884: }
raimund@2884: }
raimund@2884: catch(NumberFormatException nfe) {
raimund@2884: }
raimund@2884: }
raimund@2884: if (state.equals("state.fix.period")) {
raimund@2884: Data ds = getData(items, "start");
raimund@2884: Data de = getData(items, "end");
raimund@2884: try {
raimund@2884: String start = ds.getItems()[0].getStringValue();
raimund@2884: String end = de.getItems()[0].getStringValue();
raimund@2884: long sp = Long.parseLong(start);
raimund@2884: long ep = Long.parseLong(end);
raimund@2884: this.filter.setFromDate(sp);
raimund@2884: this.filter.setToDate(ep);
raimund@2884: }
raimund@2884: catch(NumberFormatException nfe) {
raimund@2884: }
raimund@2884: }
raimund@2884: if (state.equals("state.fix.gaugerange")) {
raimund@2884: Data gr1 = getData(items, "q1");
raimund@2884: Data gr2 = getData(items, "q2");
raimund@2884: try {
raimund@2884: String q1s = gr1.getItems()[0].getLabel();
raimund@2884: String q2s = gr2.getItems()[0].getLabel();
raimund@2884: int q1 = Integer.valueOf(q1s).intValue();
raimund@2884: int q2 = Integer.valueOf(q2s).intValue();
raimund@2884: this.filter.setFromClass(q1);
raimund@2884: this.filter.setToClass(q2);
raimund@2884: }
raimund@2884: catch(NumberFormatException nfe) {
raimund@2884: }
raimund@2884: }
raimund@2884: if(state.equals("state.fix.eventselect")) {
raimund@2884: Data de = getData(items, "events");
raimund@2884: IntegerArrayData iad = (IntegerArrayData) de;
raimund@2884: this.filter.setEvents(iad.getValues());
raimund@2884: }
raimund@2884: }
raimund@2884: return this.filter;
raimund@2884: }
raimund@2884:
raimund@2884: protected Data getData(List data, String name) {
raimund@2884: for (Data d: data) {
raimund@2884: if (name.equals(d.getLabel())) {
raimund@2884: return d;
raimund@2884: }
raimund@2884: }
raimund@2884: return null;
raimund@2884: }
raimund@2884:
raimund@2884:
raimund@2541: }
raimund@2541: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :