gernotbelger@9415: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9415: * Software engineering by gernotbelger@9415: * Björnsen Beratende Ingenieure GmbH gernotbelger@9415: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9415: * gernotbelger@9415: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9415: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9415: * documentation coming with Dive4Elements River for details. gernotbelger@9415: */ gernotbelger@9415: package org.dive4elements.river.artifacts.model.fixings; gernotbelger@9415: gernotbelger@9415: import java.util.Date; gernotbelger@9415: gernotbelger@9415: import org.apache.commons.lang.math.DoubleRange; gernotbelger@9415: gernotbelger@9415: /** gernotbelger@9415: * Helper class to bundle the meta information of a column gernotbelger@9415: * and the real data. gernotbelger@9415: */ gernotbelger@9415: class FixingColumnWithData { gernotbelger@9415: gernotbelger@9415: private FixingColumn meta; gernotbelger@9415: gernotbelger@9415: private FixingColumnData data; gernotbelger@9415: gernotbelger@9415: private int index; gernotbelger@9415: gernotbelger@9415: public FixingColumnWithData() { gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public FixingColumnWithData(final FixingColumn meta, final FixingColumnData data, final int index) { gernotbelger@9415: this.meta = meta; gernotbelger@9415: this.data = data; gernotbelger@9415: this.index = index; gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public DoubleRange getStationRange() { gernotbelger@9415: return new DoubleRange(this.meta.getStart(), this.meta.getEnd()); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public Date getDate() { gernotbelger@9415: return this.meta.getStartTime(); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public String getDescription() { gernotbelger@9415: return this.meta.getDescription(); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public int getIndex() { gernotbelger@9415: return this.index; gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public int getId() { gernotbelger@9415: return this.meta.getId(); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public double getQ(final double km) { gernotbelger@9415: return this.data.getQ(km); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public boolean getW(final double km, final double[] ws, final int arrayIndex) { gernotbelger@9415: return this.data.getW(km, ws, arrayIndex); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public boolean getQW(final double km, final double[] qs, final double[] ws, final int arrayIndex) { gernotbelger@9415: qs[this.index] = this.data.getQ(km); gernotbelger@9415: return this.data.getW(km, ws, arrayIndex); gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public boolean getQW(final double km, final double[] wq) { gernotbelger@9415: this.data.getW(km, wq, 0); gernotbelger@9415: if (Double.isNaN(wq[0])) gernotbelger@9415: return false; gernotbelger@9415: wq[1] = this.data.getQ(km); gernotbelger@9415: return !Double.isNaN(wq[1]); gernotbelger@9415: } gernotbelger@9415: }