8999
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
|
2 * Software engineering by |
|
3 * Björnsen Beratende Ingenieure GmbH |
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
|
5 * |
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
|
8 * documentation coming with Dive4Elements River for details. |
|
9 */ |
|
10 package org.dive4elements.river.artifacts.common; |
|
11 |
|
12 import java.io.Serializable; |
|
13 import java.util.ArrayList; |
|
14 import java.util.Collection; |
|
15 import java.util.Collections; |
|
16 import java.util.List; |
|
17 |
|
18 import org.dive4elements.river.artifacts.common.IResultType; |
|
19 import gnu.trove.TDoubleArrayList; |
|
20 |
|
21 /** |
|
22 * @author Gernot Belger |
|
23 */ |
|
24 public abstract class AbstractCalculationResult implements Serializable { |
|
25 |
|
26 private static final long serialVersionUID = 1L; |
|
27 |
|
28 protected final Collection<ResultRow> rows; |
|
29 |
|
30 private final String label; |
|
31 |
|
32 |
|
33 |
|
34 public AbstractCalculationResult(final String label, final Collection<ResultRow> rows) { |
|
35 this.label = label; |
|
36 this.rows = new ArrayList<>(rows); |
|
37 } |
|
38 |
|
39 public final String getLabel() { |
|
40 return this.label; |
|
41 } |
|
42 |
|
43 |
|
44 public boolean isEmpty() { |
|
45 return this.rows.isEmpty(); |
|
46 } |
|
47 |
|
48 public final void addRow(final ResultRow resultRow) { |
|
49 this.rows.add(resultRow); |
|
50 } |
|
51 |
|
52 public final Collection<ResultRow> getRows() { |
|
53 return Collections.unmodifiableCollection(this.rows); |
|
54 } |
|
55 |
|
56 public final double[][] getStationPoints(final IResultType type) { //gehört die Methode hier rein? oder in erbende Klassen? |
|
57 |
|
58 final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); |
|
59 final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); |
|
60 |
|
61 for (final ResultRow row : this.rows) { |
|
62 |
|
63 final double station = row.getDoubleValue(GeneralResultType.station); //TODO: move "station" (and others) to common |
|
64 final double value = row.getDoubleValue(type); |
|
65 |
|
66 xPoints.add(station); |
|
67 yPoints.add(value); |
|
68 } |
|
69 |
|
70 return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; |
|
71 } |
|
72 |
|
73 protected final <TYPE> List<TYPE> getValues(final IResultType type) { |
|
74 |
|
75 final List<TYPE> values = new ArrayList<>(); |
|
76 |
|
77 for (final ResultRow row : this.rows) { |
|
78 @SuppressWarnings("unchecked") |
|
79 final TYPE value = (TYPE) row.getValue(type); |
|
80 values.add(value); |
|
81 } |
|
82 |
|
83 return values; |
|
84 } |
|
85 } |