gernotbelger@9072: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9072: * Software engineering by gernotbelger@9072: * Björnsen Beratende Ingenieure GmbH gernotbelger@9072: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9072: * gernotbelger@9072: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9072: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9072: * documentation coming with Dive4Elements River for details. gernotbelger@9072: */ gernotbelger@9072: package org.dive4elements.river.client.shared.model; gernotbelger@9072: gernotbelger@9072: import java.util.List; gernotbelger@9072: gernotbelger@9072: import com.google.gwt.core.client.GWT; gernotbelger@9072: gernotbelger@9072: /** gernotbelger@9072: * @author Domenico Nardi Tironi gernotbelger@9072: * gernotbelger@9072: */ gernotbelger@9072: public abstract class AbstractFixBunduArtifact extends DefaultArtifact { gernotbelger@9072: gernotbelger@9072: /** The name of this artifact: 'fixanalysis'. */ gernotbelger@9072: gernotbelger@9072: protected FixFilter filter; gernotbelger@9072: gernotbelger@9072: public AbstractFixBunduArtifact() { gernotbelger@9072: this.filter = null; gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: public AbstractFixBunduArtifact(final String uuid, final String hash) { gernotbelger@9072: super(uuid, hash); gernotbelger@9072: this.filter = null; gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: public AbstractFixBunduArtifact(final String uuid, final String hash, final boolean inBackground, final List messages) { gernotbelger@9072: super(uuid, hash, inBackground, messages); gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: protected abstract String getEventstateId(); gernotbelger@9072: gernotbelger@9256: public final FixFilter getFilter() { gernotbelger@9072: if (this.filter == null) { gernotbelger@9072: this.filter = new FixFilter(); gernotbelger@9072: } gernotbelger@9072: final DataList[] old = this.artifactDescription.getOldData(); gernotbelger@9072: gernotbelger@9072: final String river = this.artifactDescription.getDataValueAsString("river"); gernotbelger@9072: if (river != null) { gernotbelger@9072: this.filter.setRiver(river); gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String from = this.artifactDescription.getDataValueAsString("ld_from"); gernotbelger@9072: if (from != null) { gernotbelger@9072: try { gernotbelger@9072: final double fkm = Double.parseDouble(from); gernotbelger@9072: this.filter.setFromKm(fkm); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("Could not parse from km."); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String to = this.artifactDescription.getDataValueAsString("ld_to"); gernotbelger@9072: if (to != null) { gernotbelger@9072: try { gernotbelger@9072: final double tkm = Double.parseDouble(to); gernotbelger@9072: this.filter.setToKm(tkm); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("Could not parse to km"); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String start = this.artifactDescription.getDataValueAsString("start"); gernotbelger@9072: if (start != null) { gernotbelger@9072: try { gernotbelger@9072: final long s = Long.parseLong(start); gernotbelger@9072: this.filter.setFromDate(s); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("Could not parse start date"); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String end = this.artifactDescription.getDataValueAsString("end"); gernotbelger@9072: if (end != null) { gernotbelger@9072: try { gernotbelger@9072: final long e = Long.parseLong(end); gernotbelger@9072: this.filter.setToDate(e); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("Could not parse end date"); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String q1 = this.artifactDescription.getDataValueAsString("q1"); gernotbelger@9072: if (q1 != null) { gernotbelger@9072: try { gernotbelger@9072: final int q1i = Integer.parseInt(q1); gernotbelger@9072: this.filter.setFromClass(q1i); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("Could not parse start class"); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: final String q2 = this.artifactDescription.getDataValueAsString("q2"); gernotbelger@9072: if (q2 != null) { gernotbelger@9072: try { gernotbelger@9072: final int q2i = Integer.parseInt(q2); gernotbelger@9072: this.filter.setToClass(q2i); gernotbelger@9072: } gernotbelger@9072: catch (final NumberFormatException nfe) { gernotbelger@9072: GWT.log("could not parse end class"); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: for (final DataList list : old) { gernotbelger@9072: final List items = list.getAll(); gernotbelger@9072: final String state = list.getState(); gernotbelger@9072: if (state.equals(getEventstateId())) { gernotbelger@9072: final Data de = getData(items, "events"); gernotbelger@9072: final IntegerArrayData iad = (IntegerArrayData) de; gernotbelger@9072: this.filter.setEvents(iad.getValues()); gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: return this.filter; gernotbelger@9072: } gernotbelger@9072: gernotbelger@9072: protected Data getData(final List data, final String name) { gernotbelger@9072: for (final Data d : data) { gernotbelger@9072: if (name.equals(d.getLabel())) { gernotbelger@9072: return d; gernotbelger@9072: } gernotbelger@9072: } gernotbelger@9072: return null; gernotbelger@9072: } gernotbelger@9072: }