Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java @ 7261:a56fe3bc6700
Refactoring: Let RiverAccess.getRiver return an River.
Renamed getRiver in getRiverName. Update Callers.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 08 Oct 2013 14:50:58 +0200 |
parents | a9bd4a23a852 |
children | 9f5059f4f01a |
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:
5506
diff
changeset
|
9 package org.dive4elements.river.artifacts.states.sq; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import java.text.DateFormat; |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import java.util.List; |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
13 import java.text.SimpleDateFormat; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import org.apache.log4j.Logger; |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
17 import org.dive4elements.artifactdatabase.state.Facet; |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
18 import org.dive4elements.artifacts.CallMeta; |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
19 import org.dive4elements.river.artifacts.D4EArtifact; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
20 import org.dive4elements.river.artifacts.access.StaticSQRelationAccess; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
21 import org.dive4elements.river.artifacts.model.sq.StaticSQContainer; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
22 import org.dive4elements.river.artifacts.model.sq.StaticSQFactory; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
23 import org.dive4elements.river.artifacts.model.sq.StaticSQRelation; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5506
diff
changeset
|
24 import org.dive4elements.river.artifacts.states.StaticState; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
26 import org.dive4elements.river.artifacts.resources.Resources; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 public class SQStaticState |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 extends StaticState |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 { |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
31 |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 private static final Logger log = |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 Logger.getLogger(SQStaticState.class); |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
35 private static final String FACET_DESCRIPTION = |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
36 "facet.sq_relation.static_data"; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
37 |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 public SQStaticState() { |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 super(); |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 public SQStaticState(String name) { |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 super(name); |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 @Override |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
47 public Object computeInit( |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
48 D4EArtifact artifact, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
49 String hash, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
50 Object context, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
51 CallMeta meta, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
52 List<Facet> facets |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 ) { |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
54 StaticSQContainer sqRelations; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
56 String id_string = artifact.getDataAsString("ids"); |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
58 int static_id = -1; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
59 String static_desc = null; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
60 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
61 if (id_string != null && !id_string.isEmpty()) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
62 String[] id_parts = id_string.split(";"); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
63 static_id = Integer.parseInt(id_parts[0]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
64 if (id_parts.length > 1) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
65 static_desc = id_parts[1]; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
66 } |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
69 if (static_id != -1) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
70 // If the next line fails a traceback is the best debug output anyhow |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
71 sqRelations = StaticSQFactory.getDistinctRelation(static_id); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
72 log.debug("Got a distinct relation" + sqRelations); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
73 } else { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
74 StaticSQRelationAccess access = new StaticSQRelationAccess(artifact); |
7261
a56fe3bc6700
Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7236
diff
changeset
|
75 String river = access.getRiverName(); |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
76 String measurementStation = access.getMeasurementStation(); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
77 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
78 int ms = -1; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
79 try { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
80 ms = Integer.parseInt(measurementStation); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
81 } |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
82 catch (NumberFormatException nfe) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
83 log.error("Unparseable measurement station: " + measurementStation); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
84 return null; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
85 } |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
86 log.debug("Parsed measurement station: " + ms); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
87 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
88 sqRelations = StaticSQFactory.getSQRelations(river, ms); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
89 } |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
90 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
91 DateFormat df = new SimpleDateFormat("yyyy"); |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 |
5506
57f802db5c5a
Removed obsolete imports. Minor code simplifications.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5501
diff
changeset
|
93 for (StaticSQRelation.Parameter p: StaticSQRelation.Parameter.values()) { |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 List<StaticSQRelation> relations = |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 sqRelations.getRelationsByParameter(p); |
5506
57f802db5c5a
Removed obsolete imports. Minor code simplifications.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5501
diff
changeset
|
97 |
57f802db5c5a
Removed obsolete imports. Minor code simplifications.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5501
diff
changeset
|
98 if (!relations.isEmpty()) { |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 int count = 0; |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 for (StaticSQRelation relation : relations) { |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 String name = "sq_" + p.toString().toLowerCase() + "_curve"; |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
103 String desc = static_desc == null ? |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
104 Resources.getMsg(meta, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
105 FACET_DESCRIPTION, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
106 FACET_DESCRIPTION, |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
107 new Object[] { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
108 df.format(relation.getStartTime()), |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
109 df.format(relation.getStopTime())}) : |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
110 static_desc; |
5501
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 facets.add(new StaticSQRelationFacet( |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
112 count, |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
113 name, |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 desc, |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 relation)); |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
116 count++; |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
117 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 return null; |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 } |
9a14eac637ec
New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 } |