view flys-client/src/main/java/de/intevation/flys/client/shared/model/FixAnalysisArtifact.java @ 2906:1780841d79af

Added navigation to fix analysis charts. flys-client/trunk@4673 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 15 Jun 2012 12:13:09 +0000
parents 93302bd16f42
children f14d4c668ec5
line wrap: on
line source
package de.intevation.flys.client.shared.model;

import java.util.List;

import com.google.gwt.core.client.GWT;

import de.intevation.flys.client.client.ui.fixation.FixationPanel;
import de.intevation.flys.client.client.ui.fixation.FixationPanel.FixFilter;

/**
 * The Fixanalysis implementation of an Artifact.
 *
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class FixAnalysisArtifact extends DefaultArtifact {

    /** The name of this artifact: 'minfo'.*/
    public static final String NAME = "fixanalysis";

    protected FixationPanel.FixFilter filter;

    public FixAnalysisArtifact() {
        this.filter = null;
    }


    public  FixAnalysisArtifact(String uuid, String hash) {
        super(uuid, hash);
        this.filter = null;
    }


    public FixAnalysisArtifact(
        String                   uuid,
        String                   hash,
        boolean                  inBackground,
        List<CalculationMessage> messages
    ) {
        super(uuid, hash, inBackground, messages);
    }


    public String getName() {
        return NAME;
    }


    public FixationPanel.FixFilter getFilter () {
        return createFilter();
    }


    protected FixFilter createFilter() {
        if (this.filter == null) {
            this.filter = new FixFilter();
        }
        DataList[] old = artifactDescription.getOldData();

        String river = artifactDescription.getDataValueAsString("river");
        if (river != null) {
            this.filter.setRiver(river);
        }

        String from = artifactDescription.getDataValueAsString("from");
        if (from != null) {
            try {
                double fkm = Double.valueOf(from).doubleValue();
                this.filter.setFromKm(fkm);
            }
            catch(NumberFormatException nfe) {
                GWT.log("Could not parse from km.");
            }
        }

        String to = artifactDescription.getDataValueAsString("to");
        if (to != null) {
            try {
                double tkm = Double.valueOf(to).doubleValue();
                this.filter.setToKm(tkm);
            }
            catch(NumberFormatException nfe) {
                GWT.log("Could not parse to km");
            }
        }

        String start = artifactDescription.getDataValueAsString("start");
        if (start != null) {
            try {
                long s = Long.parseLong(start);
                this.filter.setFromDate(s);
            }
            catch(NumberFormatException nfe) {
                GWT.log("Could not parse start date");
            }
        }

        String end = artifactDescription.getDataValueAsString("end");
        if (end != null) {
            try {
                long e = Long.parseLong(end);
                this.filter.setToDate(e);
            }
            catch(NumberFormatException nfe) {
                GWT.log("Could not parse end date");
            }
        }

        String q1 = artifactDescription.getDataValueAsString("q1");
        if (q1 != null) {
            try {
                int q1i = Integer.valueOf(q1).intValue();
                this.filter.setFromClass(q1i);
            }
            catch(NumberFormatException nfe) {
                GWT.log("Could not parse start class");
            }
        }

        String q2 = artifactDescription.getDataValueAsString("q2");
        if (q2 != null) {
            try {
                int q2i =Integer.valueOf(q2).intValue();
                this.filter.setToClass(q2i);
            }
            catch(NumberFormatException nfe) {
                GWT.log("could not parse end class");
            }
        }

        for (DataList list: old) {
            List<Data> items = list.getAll();
            String state = list.getState();
            if(state.equals("state.fix.eventselect")) {
                Data de = getData(items, "events");
                IntegerArrayData iad = (IntegerArrayData) de;
                this.filter.setEvents(iad.getValues());
            }
        }

        return this.filter;
    }

    protected Data getData(List<Data> data, String name) {
        for (Data d: data) {
            if (name.equals(d.getLabel())) {
                return d;
            }
        }
        return null;
    }


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

http://dive4elements.wald.intevation.org