annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/MeasurementFactory.java @ 8856:5e38e2924c07 3.2.x

Fix code style.
author Tom Gottfried <tom@intevation.de>
date Thu, 18 Jan 2018 20:12:01 +0100
parents 2e11fc7f5d35
children 0a5239a1e46e
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: 5863
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: 5863
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: 5282
diff changeset
9 package org.dive4elements.river.artifacts.model.sq;
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
11 import java.io.FileWriter;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
12 import java.io.IOException;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
13 import java.text.SimpleDateFormat;
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3985
diff changeset
14 import java.util.ArrayList;
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
15 import java.util.Calendar;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
16 import java.util.Collections;
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
17 import java.util.Date;
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
18 import java.util.HashMap;
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
19 import java.util.List;
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
20 import java.util.Map;
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
21 import java.util.TreeMap;
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
22
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
23 import org.apache.log4j.Logger;
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
24
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 import org.hibernate.SQLQuery;
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 import org.hibernate.Session;
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 import org.hibernate.transform.BasicTransformerAdapter;
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 import org.hibernate.type.StandardBasicTypes;
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5282
diff changeset
32 import org.dive4elements.river.artifacts.model.DateRange;
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
33
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5282
diff changeset
34 import org.dive4elements.river.backend.SedDBSessionHolder;
8684
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
35 import org.dive4elements.river.artifacts.model.RiverFactory;
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
36
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
37 import au.com.bytecode.opencsv.CSVWriter;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
38
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public class MeasurementFactory
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 {
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
41 private static final Logger log =
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
42 Logger.getLogger(MeasurementFactory.class);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
43
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
44 public static final String MINFO_DUMP_SQ_SEDDB_PREFIX =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
45 "minfo.dump.sq.seddb.prefix";
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
46
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
47 public static final String SQL_TOTALS =
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
48 "SELECT " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
49 "m.Q_BPEGEL AS Q_BPEGEL,"+
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
50 "m.TSCHWEB AS TSCHWEB," +
8539
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
51 "m.TSAND AS TSAND, " +
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
52 "m.DATUM AS DATUM " +
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
53 "FROM MESSUNG m " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
54 "JOIN STATION s ON m.STATIONID = s.STATIONID " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
55 "JOIN GEWAESSER r ON s.GEWAESSERID = r.GEWAESSERID " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
56 "WHERE " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
57 "r.NAME = :river_name " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
58 "AND m.Q_BPEGEL IS NOT NULL " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
59 "AND s.KM BETWEEN :location - 0.001 AND :location + 0.001 " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
60 "AND m.DATUM BETWEEN :from AND :to " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
61 "AND m.DATUM IS NOT NULL";
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
63 public static final String SQL_FACTIONS =
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
64 "SELECT " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
65 "m.datum AS DATUM," +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
66 "m.Q_BPEGEL AS Q_BPEGEL,"+
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
67 "g.GLOTRECHTEID AS GLOTRECHTEID," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
68 "gp.LFDNR AS LFDNR," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
69 "g.UFERABST AS UFERABST," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
70 "g.UFERABLINKS AS UFERABLINKS," +
6955
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
71 "COALESCE(m.TSCHWEB, 0) AS TSCHWEB," +
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
72 "COALESCE(m.TSAND, 0) AS TSAND," +
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
73 "COALESCE(gp.GTRIEB_F, 0) AS GTRIEB," +
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
74 "COALESCE(m.TGESCHIEBE, 0) AS TGESCHIEBE," +
7709
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
75 "si.SIEB01 AS SIEB01, si.SIEB02 AS SIEB02," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
76 "si.SIEB03 AS SIEB03, si.SIEB04 AS SIEB04," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
77 "si.SIEB05 AS SIEB05, si.SIEB06 AS SIEB06," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
78 "si.SIEB07 AS SIEB07, si.SIEB08 AS SIEB08," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
79 "si.SIEB09 AS SIEB09, si.SIEB10 AS SIEB10," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
80 "si.SIEB11 AS SIEB11, si.SIEB12 AS SIEB12," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
81 "si.SIEB13 AS SIEB13, si.SIEB14 AS SIEB14," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
82 "si.SIEB15 AS SIEB15, si.SIEB16 AS SIEB16," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
83 "si.SIEB17 AS SIEB17, si.SIEB18 AS SIEB18," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
84 "si.SIEB19 AS SIEB19, si.SIEB20 AS SIEB20," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
85 "si.SIEB21 AS SIEB21," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
86 "gs.RSIEB01 AS RSIEB01, gs.RSIEB02 AS RSIEB02," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
87 "gs.RSIEB03 AS RSIEB03, gs.RSIEB04 AS RSIEB04," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
88 "gs.RSIEB05 AS RSIEB05, gs.RSIEB06 AS RSIEB06," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
89 "gs.RSIEB07 AS RSIEB07, gs.RSIEB08 AS RSIEB08," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
90 "gs.RSIEB09 AS RSIEB09, gs.RSIEB10 AS RSIEB10," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
91 "gs.RSIEB11 AS RSIEB11, gs.RSIEB12 AS RSIEB12," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
92 "gs.RSIEB13 AS RSIEB13, gs.RSIEB14 AS RSIEB14," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
93 "gs.RSIEB15 AS RSIEB15, gs.RSIEB16 AS RSIEB16," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
94 "gs.RSIEB17 AS RSIEB17, gs.RSIEB18 AS RSIEB18," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
95 "gs.RSIEB19 AS RSIEB19, gs.RSIEB20 AS RSIEB20," +
0737573aa9ac S/Q relation removed false COALSCE from SQL statement. Removed misplaced sieve adjustment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7704
diff changeset
96 "gs.RSIEB21 AS RSIEB21, gs.REST AS REST " +
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
97 "FROM MESSUNG m " +
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
98 "JOIN STATION s ON m.STATIONID = s.STATIONID " +
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
99 "JOIN GEWAESSER r ON s.GEWAESSERID = r.GEWAESSERID " +
4009
60d88ec49c3b S(Q) relation. Fixed SQL statements.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4008
diff changeset
100 "JOIN GLOTRECHTE g ON m.MESSUNGID = g.MESSUNGID " +
60d88ec49c3b S(Q) relation. Fixed SQL statements.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4008
diff changeset
101 "JOIN GPROBE gp ON g.GLOTRECHTEID = gp.GLOTRECHTEID " +
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
102 "JOIN GSIEBUNG gs ON g.GLOTRECHTEID = gs.GLOTRECHTEID " +
4009
60d88ec49c3b S(Q) relation. Fixed SQL statements.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4008
diff changeset
103 "JOIN GSIEBSATZ si ON m.GSIEBSATZID = si.GSIEBSATZID " +
3310
8af1111af180 SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3308
diff changeset
104 "WHERE " +
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
105 "r.NAME = :river_name " +
3396
3bffbf670b49 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3393
diff changeset
106 "AND m.Q_BPEGEL IS NOT NULL " +
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
107 "AND s.KM BETWEEN :location - 0.001 AND :location + 0.001 " +
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
108 "AND m.DATUM BETWEEN :from AND :to " +
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
109 "AND m.TGESCHIEBE IS NOT NULL " +
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
110 "AND m.DATUM IS NOT NULL " +
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
111 "AND (" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
112 "COALESCE(gs.RSIEB01, 0) + COALESCE(gs.RSIEB02, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
113 "COALESCE(gs.RSIEB03, 0) + COALESCE(gs.RSIEB04, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
114 "COALESCE(gs.RSIEB05, 0) + COALESCE(gs.RSIEB06, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
115 "COALESCE(gs.RSIEB07, 0) + COALESCE(gs.RSIEB08, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
116 "COALESCE(gs.RSIEB09, 0) + COALESCE(gs.RSIEB10, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
117 "COALESCE(gs.RSIEB11, 0) + COALESCE(gs.RSIEB12, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
118 "COALESCE(gs.RSIEB13, 0) + COALESCE(gs.RSIEB14, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
119 "COALESCE(gs.RSIEB15, 0) + COALESCE(gs.RSIEB16, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
120 "COALESCE(gs.RSIEB17, 0) + COALESCE(gs.RSIEB18, 0) +" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
121 "COALESCE(gs.RSIEB19, 0) + COALESCE(gs.RSIEB20, 0) +" +
7704
a877d2680a4a SQ relation: only take sieve which have values at all.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7698
diff changeset
122 "COALESCE(gs.RSIEB21, 0) + COALESCE(gs.REST, 0)) > 0 " +
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
123 "ORDER BY " +
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
124 "m.DATUM, g.UFERABST, g.GLOTRECHTEID, gp.LFDNR";
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
125
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
126 private static final int index(String s) {
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
127 return Integer.parseInt(s.substring(s.length()-2))-1;
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
128 }
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3985
diff changeset
129
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
130 public abstract static class CSVTransformer
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
131 extends BasicTransformerAdapter
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
132 {
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
133 private static final long serialVersionUID = 1L;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
134
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
135 private CSVWriter rawWriter;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
136 private boolean metaDataWritten;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
137
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
138 public CSVTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
139 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
140 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
141
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
142 public CSVTransformer(CSVWriter rawWriter) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
143 this.rawWriter = rawWriter;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
144 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
145
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
146 protected void writeRaw(Object [] tuple, String [] aliases) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
147 if (rawWriter == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
148 return;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
149 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
150
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
151 if (!metaDataWritten) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
152 rawWriter.writeNext(aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
153 metaDataWritten = true;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
154 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
155
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
156 String [] nextLine = new String[tuple.length];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
157 for (int i = 0; i < tuple.length; ++i) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
158 nextLine[i] = tuple[i] != null ? tuple[i].toString() : "";
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
159 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
160 rawWriter.writeNext(nextLine);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
161 }
7704
a877d2680a4a SQ relation: only take sieve which have values at all.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7698
diff changeset
162 } // class CSVTransformer
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
163
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
164 public static class FractionsTransformer extends CSVTransformer {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
165
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
166 private static final long serialVersionUID = 1L;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
167
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
168 public FractionsTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
169 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
170 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
171
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
172 public FractionsTransformer(CSVWriter rawWriter) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
173 super(rawWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
174 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
175
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
176 @Override
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
177 public Object transformTuple(Object [] tuple, String [] aliases) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
178
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
179 writeRaw(tuple, aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
180
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
181 Map<String, Object> map = new HashMap<String, Object>();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
182
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
183 Sieve [] sieves = new Sieve[21];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
184
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
185 List<Sieve> validSieves = new ArrayList<Sieve>(21);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
186
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
187 for (int i = 0; i < tuple.length; ++i) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
188 Object value = tuple[i];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
189 if (value == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
190 continue;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
191 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
192 String alias = aliases[i];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
193 if (alias.startsWith("SIEB")
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
194 || alias.startsWith("RSIEB")) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
195 int idx = index(alias);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
196 Sieve s = sieves[idx];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
197 double v = (Double)value;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
198 if (s == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
199 s = new Sieve();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
200 sieves[idx] = s;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
201 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
202 if (alias.startsWith("SIEB")) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
203 s.setDiameter(v);
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3985
diff changeset
204 }
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
205 else {
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
206 s.setLoad(v);
4789
0df2247d98e1 Create and add sieves regardless of the the order of diameter/value.
Raimund Renkert <rrenkert@intevation.de>
parents: 4066
diff changeset
207 }
0df2247d98e1 Create and add sieves regardless of the the order of diameter/value.
Raimund Renkert <rrenkert@intevation.de>
parents: 4066
diff changeset
208 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
209 else if (alias.equals("REST")) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
210 Sieve s = new Sieve(0d, (Double)value);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
211 validSieves.add(s);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
212 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
213 else {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
214 map.put(alias, value);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
215 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
216
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
217 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
218 for (Sieve s: sieves) {
7710
a8fd76b15d41 S/Q relation be more correct with judgment if a sieve is correct. Needs load and diameter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7709
diff changeset
219 if (s != null && s.isValid()) {
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
220 validSieves.add(s);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
221 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
222 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
223 return new Measurement(map, validSieves);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
224 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
225 } // class FractionsTransformer
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
226
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
227 public static class TotalsTransformer extends CSVTransformer {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
228
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
229 private static final long serialVersionUID = 1L;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
230
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
231 public TotalsTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
232 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
233 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
234
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
235 public TotalsTransformer(CSVWriter rawWriter) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
236 super(rawWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
237 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
238
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
239 @Override
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
240 public Object transformTuple(Object [] tuple, String [] aliases) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
241
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
242 writeRaw(tuple, aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
243
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
244 Map<String, Object> map = new HashMap<String, Object>();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
245 for (int i = 0; i < tuple.length; ++i) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
246 Object value = tuple[i];
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
247 if (value != null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
248 map.put(aliases[i], value);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
249 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
250 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
251 return new Measurement(map, Collections.<Sieve>emptyList());
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
252 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
253 } // class TotalsTransformer
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
254
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 private MeasurementFactory() {
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
256 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
257
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
258 public static Measurements getMeasurements(
6780
b8f94e865875 S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
259 String river,
b8f94e865875 S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
260 double location,
b8f94e865875 S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
261 DateRange dateRange,
b8f94e865875 S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
262 SQ.Factory sqFactory
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
263 ) {
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
264 Session session = SedDBSessionHolder.HOLDER.get();
8684
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
265 String seddbRiver = RiverFactory.getRiver(river).nameForSeddb();
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
266
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
267 List<Measurement> totals = loadTotals(
8684
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
268 session, seddbRiver, location, dateRange);
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
269
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
270 List<Measurement> accumulated = loadFractions(
8684
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
271 session, seddbRiver, location, dateRange);
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
272
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
273 return new Measurements(totals, accumulated, sqFactory);
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
274 }
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
275
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
276 @SuppressWarnings("unchecked")
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
277 protected static List<Measurement> loadTotals(
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
278 Session session,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
279 String river,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
280 double location,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
281 DateRange dateRange
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
282 ) {
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
283 SQLQuery query = session.createSQLQuery(SQL_TOTALS)
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
284 .addScalar("Q_BPEGEL", StandardBasicTypes.DOUBLE)
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
285 .addScalar("TSCHWEB", StandardBasicTypes.DOUBLE)
8539
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
286 .addScalar("TSAND", StandardBasicTypes.DOUBLE)
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
287 .addScalar("DATUM", StandardBasicTypes.DATE);
3308
5ccd51ca11ce SQ relation: Fixed problem with string operation precedence.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3292
diff changeset
288
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
289 query.setString("river_name", river);
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
290 query.setDouble("location", location);
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
291 query.setDate("from", dateRange.getFrom());
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
292 query.setDate("to", dateRange.getTo());
3308
5ccd51ca11ce SQ relation: Fixed problem with string operation precedence.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3292
diff changeset
293
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
294 CSVWriter csvWriter =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
295 getCVSWriter("totals", river, location, dateRange);
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
296
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
297 try {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
298 TotalsTransformer totalTransformer =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
299 new TotalsTransformer(csvWriter);
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
300 query.setResultTransformer(totalTransformer);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
301
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
302 return (List<Measurement>)query.list();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
303 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
304 finally {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
305 closeGraceful(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
306 }
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
307 }
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
308
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
309 private static CSVWriter getCVSWriter(
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
310 String type,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
311 String river,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
312 double location,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
313 DateRange dateRange
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
314 ) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
315 String dumpPrefix = System.getProperty(MINFO_DUMP_SQ_SEDDB_PREFIX);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
316 if (dumpPrefix == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
317 return null;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
318 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
319
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
320 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddd");
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
321 StringBuilder sb = new StringBuilder(dumpPrefix);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
322 Date from = dateRange.getFrom();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
323 Date to = dateRange.getTo();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
324
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
325 sb.append(type)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
326 .append('-').append(df.format(new Date()))
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
327 .append('-').append(river)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
328 .append('-').append(location)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
329 .append('-').append(from != null ? df.format(from) : "")
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
330 .append('-').append(to != null ? df.format(to) : "")
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
331 .append(".csv");
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
332
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
333 String fileName = sb.toString();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
334
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
335 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
336 return new CSVWriter(new FileWriter(fileName), ';');
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
337 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
338 catch (IOException ioe) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
339 log.error("Cannot open '" + fileName + "' for writing.", ioe);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
340 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
341
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
342 return null;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
343 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
344
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
345 private static void closeGraceful(CSVWriter writer) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
346 if (writer != null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
347 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
348 writer.flush();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
349 writer.close();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
350 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
351 catch (IOException ioe) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
352 log.error(ioe);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
353 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
354 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
355 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
356
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
357 @SuppressWarnings("unchecked")
4008
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
358 protected static List<Measurement> loadFractions(
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
359 Session session,
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
360 String river,
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
361 double location,
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
362 DateRange dateRange
fea3d9210948 S(Q) relation: Totals are now fetched with separate SQL statement. Fixed join to GEWAESSER table.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4007
diff changeset
363 ) {
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
364 boolean debug = log.isDebugEnabled();
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
365
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
366 SQLQuery query = session.createSQLQuery(SQL_FACTIONS)
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
367 .addScalar("Q_BPEGEL", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
368 .addScalar("DATUM", StandardBasicTypes.DATE)
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
369 .addScalar("GLOTRECHTEID", StandardBasicTypes.INTEGER)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
370 .addScalar("LFDNR", StandardBasicTypes.INTEGER)
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
371 .addScalar("UFERABST", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
372 .addScalar("UFERABLINKS", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
373 .addScalar("TSCHWEB", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
374 .addScalar("TSAND", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
375 .addScalar("GTRIEB", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
376 .addScalar("TGESCHIEBE", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
377 .addScalar("RSIEB01", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
378 .addScalar("RSIEB02", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
379 .addScalar("RSIEB03", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
380 .addScalar("RSIEB04", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
381 .addScalar("RSIEB05", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
382 .addScalar("RSIEB06", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
383 .addScalar("RSIEB07", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
384 .addScalar("RSIEB08", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
385 .addScalar("RSIEB09", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
386 .addScalar("RSIEB10", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
387 .addScalar("RSIEB11", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
388 .addScalar("RSIEB12", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
389 .addScalar("RSIEB13", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
390 .addScalar("RSIEB14", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
391 .addScalar("RSIEB15", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
392 .addScalar("RSIEB16", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
393 .addScalar("RSIEB17", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
394 .addScalar("RSIEB18", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
395 .addScalar("RSIEB19", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
396 .addScalar("RSIEB20", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
397 .addScalar("RSIEB21", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
398 .addScalar("REST", StandardBasicTypes.DOUBLE)
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
399 .addScalar("SIEB01", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
400 .addScalar("SIEB02", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
401 .addScalar("SIEB03", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
402 .addScalar("SIEB04", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
403 .addScalar("SIEB05", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
404 .addScalar("SIEB06", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
405 .addScalar("SIEB07", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
406 .addScalar("SIEB08", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
407 .addScalar("SIEB09", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
408 .addScalar("SIEB10", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
409 .addScalar("SIEB11", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
410 .addScalar("SIEB12", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
411 .addScalar("SIEB13", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
412 .addScalar("SIEB14", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
413 .addScalar("SIEB15", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
414 .addScalar("SIEB16", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
415 .addScalar("SIEB17", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
416 .addScalar("SIEB18", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
417 .addScalar("SIEB19", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
418 .addScalar("SIEB20", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
419 .addScalar("SIEB21", StandardBasicTypes.DOUBLE);
3292
e06036fdf0c7 SQ relation: add left joins to GSIEBSATZ and SSIEBUNG
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3291
diff changeset
420
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
421 query.setString("river_name", river);
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
422 query.setDouble("location", location);
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
423 query.setDate("from", dateRange.getFrom());
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
424 query.setDate("to", dateRange.getTo());
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
425
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
426 List<Measurement> measuments;
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
427
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
428 CSVWriter csvWriter =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
429 getCVSWriter("fractions", river, location, dateRange);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
430
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
431 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
432 FractionsTransformer fractionsTransformer =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
433 new FractionsTransformer(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
434
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
435 query.setResultTransformer(fractionsTransformer);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
436
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
437 measuments = (List<Measurement>)query.list();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
438 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
439 finally {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
440 closeGraceful(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
441 }
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
442
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
443 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
444 log.debug("num fraction results: " + measuments.size());
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
445 }
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
446
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
447 List<Measurement> same = new ArrayList<Measurement>();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
448
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
449 Integer lastLR = null;
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
450
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
451 List<Measurement> accumulated = new ArrayList<Measurement>();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
452
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
453 for (Measurement m: measuments) {
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
454 Integer currentLR = (Integer)m.getData("GLOTRECHTEID");
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
455
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
456 boolean newDS = lastLR == null
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
457 || (currentLR != null && !lastLR.equals(currentLR));
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
458
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
459 if (newDS && !same.isEmpty()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
460 accumulated.add(accumulate(same));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
461 same.clear();
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
462 }
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
463
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
464 same.add(m);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
465
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
466 lastLR = currentLR;
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
467 }
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
468
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
469 if (!same.isEmpty()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
470 accumulated.add(accumulate(same));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
471 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
472
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
473 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
474 log.debug("Before date separation: " + accumulated.size());
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
475 }
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
476
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
477 accumulated = separateByDate(accumulated);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
478
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
479 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
480 log.debug("After date separation: " + accumulated.size());
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
481 }
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
482
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
483 return accumulated;
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
484 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
485
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
486 protected static List<Measurement> separateByDate(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
487 List<Measurement> measurements
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
488 ) {
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
489 List<Measurement> result = new ArrayList<Measurement>();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
490
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
491 List<Measurement> same = new ArrayList<Measurement>();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
492
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
493 Date lastDate = null;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
494
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
495 for (Measurement m: measurements) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
496 Date currentDate = (Date)m.getData("DATUM");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
497 if ((lastDate == null
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
498 || !equalDate(currentDate, lastDate))
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
499 && !same.isEmpty()
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
500 ) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
501 result.add(processSameDate(same));
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
502 same.clear();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
503 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
504 same.add(m);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
505 lastDate = currentDate;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
506 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
507
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
508 if (!same.isEmpty()) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
509 result.add(processSameDate(same));
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
510 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
511
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
512 return result;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
513 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
514
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
515
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
516 protected static Measurement processSameDate(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
517 List<Measurement> measurements
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
518 ) {
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
519 int N = measurements.size();
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
520
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
521 boolean debug = log.isDebugEnabled();
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
522 if (debug && N > 0) {
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
523 log.debug("process same date for Q: " + measurements.get(0).Q());
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
524 }
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
525 if (N == 1) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
526 Measurement current = measurements.get(0);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
527 double left = current.get("UFERABLINKS");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
528 double right = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
529 current.set("EFFWIDTH", left + right);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
530 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
531 else {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
532 for (int i = 0; i < N; ++i) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
533 Measurement current = measurements.get(i);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
534
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
535 if (i == 0) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
536 Measurement next = measurements.get(i+1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
537 double distCurrent = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
538 double distNext = next.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
539 current.set("EFFWIDTH", distNext - distCurrent);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
540 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
541 else if (i == N-1) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
542 Measurement prev = measurements.get(i-1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
543 double distCurrent = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
544 double distPrev = prev.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
545 current.set("EFFWIDTH", distCurrent - distPrev);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
546 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
547 else {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
548 Measurement prev = measurements.get(i-1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
549 Measurement next = measurements.get(i+1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
550 double distPrev = prev.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
551 double distNext = next.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
552 current.set("EFFWIDTH", 0.5*(distNext - distPrev));
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
553 }
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
554 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
555 log.debug("effective width: " + current.get("EFFWIDTH"));
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
556 }
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
557 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
558 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
559
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
560 double sumSandF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
561 double sumCoarseF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
562 double sumGravelF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
563 double sumNorm = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
564
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
565 for (Measurement m: measurements) {
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
566 SieveArray sa = m.getSieveArray();
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
567 if (sa.totalLoad() < SieveArray.EPSILON) {
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
568 continue;
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
569 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
570 double sandF = sa.sandNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
571 double coarseF = sa.coarseNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
572 double gravelF = sa.gravelNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
573 double effWidth = m.get("EFFWIDTH");
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
574 double gt = m.get("GTRIEB");
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
575 double scale = effWidth*gt;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
576 sumSandF += scale*sandF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
577 sumCoarseF += scale*coarseF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
578 sumGravelF += scale*gravelF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
579 sumNorm += scale;
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
580 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
581 log.debug("fractions - s: " +
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
582 sandF + " c: " +
5282
14db045d6368 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4842
diff changeset
583 coarseF + " g: " +
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
584 gravelF);
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
585 log.debug("scale: " + scale + " = " + effWidth + " * " + gt);
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
586 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
587 }
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
588
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
589 Map<String, Object> data =
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
590 new HashMap<String, Object>(measurements.get(0).getData());
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
591
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
592 Measurement m = new Measurement(data, Collections.<Sieve>emptyList());
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
593
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
594 sumNorm = 1d/sumNorm;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
595
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
596 m.set("BL_S", sumNorm*sumSandF);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
597 m.set("BL_G", sumNorm*sumGravelF);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
598 m.set("BL_C", sumNorm*sumCoarseF);
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
599 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
600 log.debug(
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
601 "BL_S: " + m.get("BL_S") +
5282
14db045d6368 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4842
diff changeset
602 " BL_G: " + m.get("BL_G") +
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
603 " BL_C: " + m.get("BL_C"));
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
604 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
605 return m;
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
606 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
607
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
608
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
609 private static final boolean equalDate(Date a, Date b) {
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
610 Calendar ca = Calendar.getInstance();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
611 Calendar cb = Calendar.getInstance();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
612 ca.setTime(a);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
613 cb.setTime(b);
4006
d4e39cc5c10c S(Q) relation: Removed unused field from SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4005
diff changeset
614 return ca.get(Calendar.YEAR) == cb.get(Calendar.YEAR)
d4e39cc5c10c S(Q) relation: Removed unused field from SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4005
diff changeset
615 && ca.get(Calendar.MONTH) == cb.get(Calendar.MONTH)
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
616 && ca.get(Calendar.DAY_OF_MONTH) == cb.get(Calendar.DAY_OF_MONTH);
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
617 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
618
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
619
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
620 protected static Measurement accumulate(List<Measurement> measuments) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
621
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
622 int N = measuments.size();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
623 if (N == 1) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
624 return measuments.get(0);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
625 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
626 TreeMap<Double, double []> diameters =
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
627 new TreeMap<Double, double []>(Sieve.DIAMETER_CMP);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
628
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
629 double sumGTrieb = 0d;
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
630 for (Measurement m: measuments) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
631 for (Sieve s: m.getSieves()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
632 Double key = s.getDiameter();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
633 double [] sum = diameters.get(key);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
634 if (sum == null) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
635 sum = new double[1];
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
636 diameters.put(key, sum);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
637 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
638 sum[0] += s.getLoad();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
639 }
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
640 // calculate 'Geschiebetrieb'
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
641 sumGTrieb += m.get("GTRIEB");
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
642 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
643 List<Sieve> accumulatedSieves = new ArrayList<Sieve>(diameters.size());
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
644 for (Map.Entry<Double, double []> entry: diameters.entrySet()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
645 accumulatedSieves.add(
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
646 new Sieve(entry.getKey(),
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
647 entry.getValue()[0]/N));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
648 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
649 Map<String, Object> data =
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
650 new HashMap<String, Object>(measuments.get(0).getData());
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
651
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
652 data.put("GTRIEB", sumGTrieb/N);
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
653
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
654 return new Measurement(data, accumulatedSieves);
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
655 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
656 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
657 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org