raimund@2541: package de.intevation.flys.client.shared.model; raimund@2541: raimund@2541: import java.util.List; raimund@2884: import java.lang.NumberFormatException; raimund@2884: import com.google.gwt.core.client.GWT; 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: GWT.log(iad.getStringValue()); 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 :