annotate artifacts/src/main/java/org/dive4elements/river/artifacts/access/SedimentLoadAccess.java @ 7357:9d3e44ab25f2

Refactoring: Move functionality of BedHeightAccess into BedHeightFacet for now. Idea is that Artifact and Access are lightweight. Access access the 'data' ('parameterization') attached to artifact, not the data delivered by means of artifact and its parameterization.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 16 Oct 2013 10:42:45 +0200
parents 866c914d5988
children d828b659a593
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4826
diff changeset
9 package org.dive4elements.river.artifacts.access;
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import gnu.trove.TIntArrayList;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
15 import org.dive4elements.river.artifacts.D4EArtifact;
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 public class SedimentLoadAccess
4826
a3dc382bc1ca BedHeightAccess, FlowVelocityAccess, SedimentLoadAccess: Inherit from RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4516
diff changeset
19 extends RangeAccess
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 private static final Logger logger = Logger.getLogger(BedHeightAccess.class);
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 private String time;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 private String unit;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
26 public SedimentLoadAccess(D4EArtifact artifact) {
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
27 super(artifact);
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 public Double getLowerKM() {
4826
a3dc382bc1ca BedHeightAccess, FlowVelocityAccess, SedimentLoadAccess: Inherit from RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4516
diff changeset
31 // TODO update callers
a3dc382bc1ca BedHeightAccess, FlowVelocityAccess, SedimentLoadAccess: Inherit from RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4516
diff changeset
32 return getFrom();
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 public Double getUpperKM() {
4826
a3dc382bc1ca BedHeightAccess, FlowVelocityAccess, SedimentLoadAccess: Inherit from RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4516
diff changeset
36 // TODO update callers
a3dc382bc1ca BedHeightAccess, FlowVelocityAccess, SedimentLoadAccess: Inherit from RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4516
diff changeset
37 return getTo();
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 public String getYearEpoch() {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 if (time == null) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 time = getString("ye_select");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 return time;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 public int[] getPeriod() {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 if (getYearEpoch().equals("year") ) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 Integer start = getInteger("start");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 Integer end = getInteger("end");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 if (start == null || end == null) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 logger.warn("No 'start' or 'end' parameter specified!");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 return null;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 return new int[]{start.intValue(), end.intValue()};
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 return null;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 public int[][] getEpochs() {
4516
de4832ffde2a Fix: Handle epochs like official epochs to get a year range.
Raimund Renkert <rrenkert@intevation.de>
parents: 4371
diff changeset
62 if (getYearEpoch().equals("epoch") ||
de4832ffde2a Fix: Handle epochs like official epochs to get a year range.
Raimund Renkert <rrenkert@intevation.de>
parents: 4371
diff changeset
63 getYearEpoch().equals("off_epoch")
de4832ffde2a Fix: Handle epochs like official epochs to get a year range.
Raimund Renkert <rrenkert@intevation.de>
parents: 4371
diff changeset
64 ) {
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 String data = getString("epochs");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 if (data == null) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 logger.warn("No 'epochs' parameter specified!");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 return null;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 String[] parts = data.split(";");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 int[][] list = new int[parts.length][];
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 for (int i = 0; i < parts.length; i++) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 String[] values = parts[i].split(",");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 TIntArrayList ints = new TIntArrayList();
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 try {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 ints.add(Integer.parseInt(values[0]));
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 ints.add(Integer.parseInt(values[1]));
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 list[i] = ints.toNativeArray();
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 catch (NumberFormatException nfe) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 logger.warn("Cannot parse int from string: '" + values + "'");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 return list;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 return null;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
92 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
93
6677
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6102
diff changeset
94 /** Returns the selected unit (t/a or m3/a). */
4371
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
95 public String getUnit () {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
96 if (unit == null) {
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
97 unit = getString("unit");
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
98 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
99 return unit;
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
100 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
101 }
26afee1b8959 Added access object for artifact containing sediment load parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
102 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org