gernotbelger@8854: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8877: * Software engineering by gernotbelger@8877: * Björnsen Beratende Ingenieure GmbH gernotbelger@8854: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8854: * gernotbelger@8854: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8854: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8854: * documentation coming with Dive4Elements River for details. gernotbelger@8854: */ gernotbelger@8854: package org.dive4elements.river.artifacts.sinfo.flowdepth; gernotbelger@8854: gernotbelger@8854: import java.io.Serializable; gernotbelger@8854: import java.util.ArrayList; gernotbelger@8854: import java.util.Collection; gernotbelger@8854: import java.util.Collections; gernotbelger@8854: gernotbelger@8854: import gnu.trove.TDoubleArrayList; gernotbelger@8854: gernotbelger@8854: /** gernotbelger@8854: * Contains the results of a {@link FlowDepthCalculation}. gernotbelger@8854: * gernotbelger@8854: * @author Gernot Belger gernotbelger@8854: */ gernotbelger@8854: class FlowDepthCalculationResult gernotbelger@8854: implements Serializable { gernotbelger@8854: gernotbelger@8877: private static final long serialVersionUID = 1L; gernotbelger@8854: gernotbelger@8877: private final Collection rows = new ArrayList<>(); gernotbelger@8854: gernotbelger@8877: private final String label; gernotbelger@8877: gernotbelger@8877: private final BedHeightInfo sounding; gernotbelger@8877: gernotbelger@8877: private final WstInfo wst; gernotbelger@8877: gernotbelger@8877: public FlowDepthCalculationResult(final String label, final WstInfo wst, final BedHeightInfo sounding) { gernotbelger@8877: this.label = label; gernotbelger@8877: this.wst = wst; gernotbelger@8877: this.sounding = sounding; gernotbelger@8877: } gernotbelger@8877: gernotbelger@8877: public void addRow(final double station, final double flowDepth, final double flowDepthWithTkh, final double tkh, final double waterlevel, final double discharge, final String waterlevelLabel, final String gauge, final double meanBedHeight, final String sondageLabel, final String location) { gernotbelger@8877: this.rows.add(new FlowDepthRow(station, flowDepth, flowDepthWithTkh, tkh, waterlevel, discharge, waterlevelLabel, gauge, meanBedHeight, sondageLabel, location)); gernotbelger@8877: } gernotbelger@8877: gernotbelger@8877: public String getLabel() { gernotbelger@8877: return this.label; gernotbelger@8877: } gernotbelger@8877: gernotbelger@8877: public WstInfo getWst() { gernotbelger@8877: return this.wst; gernotbelger@8877: } gernotbelger@8877: gernotbelger@8877: public BedHeightInfo getSounding() { gernotbelger@8877: return this.sounding; gernotbelger@8877: } gernotbelger@8877: gernotbelger@8877: public Collection getRows() { gernotbelger@8877: return Collections.unmodifiableCollection( this.rows ); gernotbelger@8877: } gernotbelger@8877: gernotbelger@8854: public double[][] getFlowDepthPoints() { gernotbelger@8854: gernotbelger@8877: final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); gernotbelger@8877: final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); gernotbelger@8877: gernotbelger@8877: for (final FlowDepthRow row : this.rows) { gernotbelger@8877: xPoints.add(row.getStation()); gernotbelger@8877: yPoints.add(row.getFlowDepth()); gernotbelger@8877: } gernotbelger@8877: gernotbelger@8854: return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; gernotbelger@8854: } gernotbelger@8854: }