annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/MeasurementFactory.java @ 8566:fe7e9da6312a

(issue1797) Move close into session release and guard it. To avoid leaking open and Held sessions we centrally close the session in the SessionHolder on release. This also removes some duplicated code in SedDBSessionHolder
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 24 Feb 2015 17:16:14 +0100
parents 84929f882fa2
children 2e11fc7f5d35
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;
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
35
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
36 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
37
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 public class MeasurementFactory
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 {
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
40 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
41 Logger.getLogger(MeasurementFactory.class);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
42
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
43 public static final String MINFO_DUMP_SQ_SEDDB_PREFIX = "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
44
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
45 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
46 "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
47 "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
48 "m.TSCHWEB AS TSCHWEB," +
8539
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
49 "m.TSAND AS TSAND, " +
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
50 "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
51 "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
52 "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
53 "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
54 "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
55 "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
56 "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
57 "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
58 "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
59 "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
60
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
61 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
62 "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
63 "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
64 "m.Q_BPEGEL AS Q_BPEGEL,"+
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
65 "g.GLOTRECHTEID AS GLOTRECHTEID," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
66 "gp.LFDNR AS LFDNR," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
67 "g.UFERABST AS UFERABST," +
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
68 "g.UFERABLINKS AS UFERABLINKS," +
6955
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
69 "COALESCE(m.TSCHWEB, 0) AS TSCHWEB," +
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
70 "COALESCE(m.TSAND, 0) AS TSAND," +
94cb1845c667 (issue1452) Coalesce to zero to avoid NaN arithmetic.
Andre Heinecke <aheinecke@intevation.de>
parents: 6780
diff changeset
71 "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
72 "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
73 "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
74 "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
75 "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
76 "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
77 "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
78 "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
79 "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
80 "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
81 "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
82 "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
83 "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
84 "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
85 "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
86 "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
87 "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
88 "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
89 "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
90 "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
91 "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
92 "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
93 "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
94 "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
95 "FROM MESSUNG m " +
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
96 "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
97 "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
98 "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
99 "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
100 "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
101 "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
102 "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
103 "r.NAME = :river_name " +
3396
3bffbf670b49 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3393
diff changeset
104 "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
105 "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
106 "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
107 "AND m.TGESCHIEBE IS NOT NULL " +
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
108 "AND m.DATUM IS NOT NULL " +
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
109 "AND (" +
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
110 "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
111 "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
112 "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
113 "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
114 "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
115 "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
116 "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
117 "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
118 "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
119 "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
120 "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
121 "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
122 "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
123
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
124 private static final int index(String s) {
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
125 return Integer.parseInt(s.substring(s.length()-2))-1;
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
126 }
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3985
diff changeset
127
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
128 public abstract static class CSVTransformer extends BasicTransformerAdapter {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
129 private static final long serialVersionUID = 1L;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
130
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
131 private CSVWriter rawWriter;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
132 private boolean metaDataWritten;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
133
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
134 public CSVTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
135 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
136 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
137
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
138 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
139 this.rawWriter = rawWriter;
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 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
143 if (rawWriter == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
144 return;
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
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
147 if (!metaDataWritten) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
148 rawWriter.writeNext(aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
149 metaDataWritten = true;
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
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
152 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
153 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
154 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
155 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
156 rawWriter.writeNext(nextLine);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
157 }
7704
a877d2680a4a SQ relation: only take sieve which have values at all.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7698
diff changeset
158 } // class CSVTransformer
7698
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 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
161
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
162 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
163
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
164 public FractionsTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
165 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
166 }
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(CSVWriter rawWriter) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
169 super(rawWriter);
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 @Override
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
173 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
174
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
175 writeRaw(tuple, aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
176
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
177 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
178
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
179 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
180
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
181 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
182
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
183 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
184 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
185 if (value == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
186 continue;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
187 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
188 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
189 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
190 || alias.startsWith("RSIEB")) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
191 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
192 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
193 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
194 if (s == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
195 s = new Sieve();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
196 sieves[idx] = s;
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
197 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
198 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
199 s.setDiameter(v);
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3985
diff changeset
200 }
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
201 else {
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
202 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
203 }
0df2247d98e1 Create and add sieves regardless of the the order of diameter/value.
Raimund Renkert <rrenkert@intevation.de>
parents: 4066
diff changeset
204 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
205 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
206 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
207 validSieves.add(s);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
208 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
209 else {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
210 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
211 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
212
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
213 }
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
214 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
215 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
216 validSieves.add(s);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
217 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
218 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
219 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
220 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
221 } // class FractionsTransformer
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 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
224
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
225 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
226
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
227 public TotalsTransformer() {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
228 this(null);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
229 }
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(CSVWriter rawWriter) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
232 super(rawWriter);
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 @Override
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
236 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
237
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
238 writeRaw(tuple, aliases);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
239
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
240 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
241 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
242 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
243 if (value != null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
244 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
245 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
246 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
247 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
248 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
249 } // class TotalsTransformer
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251 private MeasurementFactory() {
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
253
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
254 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
255 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
256 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
257 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
258 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
259 ) {
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
260 Session session = SedDBSessionHolder.HOLDER.get();
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
261 List<Measurement> totals = loadTotals(
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
262 session, 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
263
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
264 List<Measurement> accumulated = loadFractions(
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
265 session, 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
266
8566
fe7e9da6312a (issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8539
diff changeset
267 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
268 }
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
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
270 @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
271 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
272 Session session,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
273 String river,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
274 double location,
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
275 DateRange dateRange
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
276 ) {
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 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
278 .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
279 .addScalar("TSCHWEB", StandardBasicTypes.DOUBLE)
8539
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
280 .addScalar("TSAND", StandardBasicTypes.DOUBLE)
84929f882fa2 (issue1753) Carry measurement date through SQ values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7710
diff changeset
281 .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
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 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
284 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
285 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
286 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
287
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
288 CSVWriter csvWriter =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
289 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
290
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
291 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
292 TotalsTransformer totalTransformer = new TotalsTransformer(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
293 query.setResultTransformer(totalTransformer);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
294
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
295 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
296 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
297 finally {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
298 closeGraceful(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
299 }
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
300 }
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
301
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
302 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
303 String type,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
304 String river,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
305 double location,
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
306 DateRange dateRange
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
307 ) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
308 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
309 if (dumpPrefix == null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
310 return null;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
311 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
312
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
313 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
314 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
315 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
316 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
317
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
318 sb.append(type)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
319 .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
320 .append('-').append(river)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
321 .append('-').append(location)
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
322 .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
323 .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
324 .append(".csv");
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
325
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
326 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
327
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
328 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
329 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
330 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
331 catch (IOException ioe) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
332 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
333 }
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 return null;
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
336 }
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 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
339 if (writer != null) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
340 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
341 writer.flush();
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
342 writer.close();
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 catch (IOException ioe) {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
345 log.error(ioe);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
346 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
347 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
348 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
349
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
350 @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
351 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
352 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
353 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
354 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
355 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
356 ) {
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
357 boolean debug = log.isDebugEnabled();
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
358
4007
d4d272e56d3a S(Q) Fixed AIOOBE
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4006
diff changeset
359 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
360 .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
361 .addScalar("DATUM", StandardBasicTypes.DATE)
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
362 .addScalar("GLOTRECHTEID", StandardBasicTypes.INTEGER)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
363 .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
364 .addScalar("UFERABST", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
365 .addScalar("UFERABLINKS", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
366 .addScalar("TSCHWEB", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
367 .addScalar("TSAND", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
368 .addScalar("GTRIEB", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
369 .addScalar("TGESCHIEBE", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
370 .addScalar("RSIEB01", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
371 .addScalar("RSIEB02", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
372 .addScalar("RSIEB03", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
373 .addScalar("RSIEB04", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
374 .addScalar("RSIEB05", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
375 .addScalar("RSIEB06", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
376 .addScalar("RSIEB07", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
377 .addScalar("RSIEB08", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
378 .addScalar("RSIEB09", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
379 .addScalar("RSIEB10", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
380 .addScalar("RSIEB11", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
381 .addScalar("RSIEB12", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
382 .addScalar("RSIEB13", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
383 .addScalar("RSIEB14", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
384 .addScalar("RSIEB15", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
385 .addScalar("RSIEB16", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
386 .addScalar("RSIEB17", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
387 .addScalar("RSIEB18", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
388 .addScalar("RSIEB19", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
389 .addScalar("RSIEB20", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
390 .addScalar("RSIEB21", StandardBasicTypes.DOUBLE)
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
391 .addScalar("REST", StandardBasicTypes.DOUBLE)
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
392 .addScalar("SIEB01", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
393 .addScalar("SIEB02", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
394 .addScalar("SIEB03", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
395 .addScalar("SIEB04", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
396 .addScalar("SIEB05", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
397 .addScalar("SIEB06", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
398 .addScalar("SIEB07", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
399 .addScalar("SIEB08", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
400 .addScalar("SIEB09", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
401 .addScalar("SIEB10", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
402 .addScalar("SIEB11", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
403 .addScalar("SIEB12", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
404 .addScalar("SIEB13", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
405 .addScalar("SIEB14", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
406 .addScalar("SIEB15", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
407 .addScalar("SIEB16", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
408 .addScalar("SIEB17", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
409 .addScalar("SIEB18", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
410 .addScalar("SIEB19", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
411 .addScalar("SIEB20", StandardBasicTypes.DOUBLE)
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
412 .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
413
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
414 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
415 query.setDouble("location", location);
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
416 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
417 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
418
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
419 List<Measurement> measuments;
3289
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
420
7698
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
421 CSVWriter csvWriter =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
422 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
423
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
424 try {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
425 FractionsTransformer fractionsTransformer =
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
426 new FractionsTransformer(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
427
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
428 query.setResultTransformer(fractionsTransformer);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
429
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
430 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
431 }
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
432 finally {
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
433 closeGraceful(csvWriter);
7efeaa2058e1 SQ Relation: Added CSV dumping to raw SedDB query results.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7253
diff changeset
434 }
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
435
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
436 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
437 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
438 }
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
439
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
440 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
441
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
442 Integer lastLR = null;
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
443
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
444 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
445
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
446 for (Measurement m: measuments) {
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
447 Integer currentLR = (Integer)m.getData("GLOTRECHTEID");
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
448
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
449 boolean newDS = lastLR == null
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
450 || (currentLR != null && !lastLR.equals(currentLR));
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
451
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
452 if (newDS && !same.isEmpty()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
453 accumulated.add(accumulate(same));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
454 same.clear();
3981
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
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
457 same.add(m);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
458
3981
6bcc50e2cc7d More code for S(Q) relation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3929
diff changeset
459 lastLR = currentLR;
3928
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
460 }
d3e2080d3ada S(Q) relation. Extract more values from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3922
diff changeset
461
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
462 if (!same.isEmpty()) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
463 accumulated.add(accumulate(same));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
464 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
465
4066
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
466 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
467 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
468 }
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
469
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
470 accumulated = separateByDate(accumulated);
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
471
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
472 if (debug) {
f02aa4ff3c0f S/Q relation: Fixed problem with loosing meassurement points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4009
diff changeset
473 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
474 }
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 return accumulated;
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
477 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
478
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
479 protected static List<Measurement> separateByDate(List<Measurement> measurements) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
480
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
481 List<Measurement> result = new ArrayList<Measurement>();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
482
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
483 List<Measurement> same = new ArrayList<Measurement>();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
484
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
485 Date lastDate = null;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
486
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
487 for (Measurement m: measurements) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
488 Date currentDate = (Date)m.getData("DATUM");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
489 if ((lastDate == null
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
490 || !equalDate(currentDate, lastDate))
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
491 && !same.isEmpty()
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 result.add(processSameDate(same));
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
494 same.clear();
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
495 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
496 same.add(m);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
497 lastDate = currentDate;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
498 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
499
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
500 if (!same.isEmpty()) {
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 }
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 return result;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
505 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
506
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
507
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
508 protected static Measurement processSameDate(List<Measurement> measurements) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
509 int N = measurements.size();
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
510
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
511 boolean debug = log.isDebugEnabled();
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
512 if (debug && N > 0) {
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
513 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
514 }
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
515 if (N == 1) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
516 Measurement current = measurements.get(0);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
517 double left = current.get("UFERABLINKS");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
518 double right = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
519 current.set("EFFWIDTH", left + right);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
520 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
521 else {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
522 for (int i = 0; i < N; ++i) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
523 Measurement current = measurements.get(i);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
524
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
525 if (i == 0) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
526 Measurement next = measurements.get(i+1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
527 double distCurrent = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
528 double distNext = next.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
529 current.set("EFFWIDTH", distNext - distCurrent);
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 if (i == N-1) {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
532 Measurement prev = measurements.get(i-1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
533 double distCurrent = current.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
534 double distPrev = prev.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
535 current.set("EFFWIDTH", distCurrent - distPrev);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
536 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
537 else {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
538 Measurement prev = measurements.get(i-1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
539 Measurement next = measurements.get(i+1);
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
540 double distPrev = prev.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
541 double distNext = next.get("UFERABST");
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
542 current.set("EFFWIDTH", 0.5*(distNext - distPrev));
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
543 }
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
544 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
545 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
546 }
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
547 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
548 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
549
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
550 double sumSandF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
551 double sumCoarseF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
552 double sumGravelF = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
553 double sumNorm = 0d;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
554
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
555 for (Measurement m: measurements) {
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
556 SieveArray sa = m.getSieveArray();
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
557 if (sa.totalLoad() < SieveArray.EPSILON) {
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
558 continue;
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
559 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
560 double sandF = sa.sandNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
561 double coarseF = sa.coarseNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
562 double gravelF = sa.gravelNormFraction();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
563 double effWidth = m.get("EFFWIDTH");
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
564 double gt = m.get("GTRIEB");
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
565 double scale = effWidth*gt;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
566 sumSandF += scale*sandF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
567 sumCoarseF += scale*coarseF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
568 sumGravelF += scale*gravelF;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
569 sumNorm += scale;
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
570 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
571 log.debug("fractions - s: " +
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
572 sandF + " c: " +
5282
14db045d6368 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4842
diff changeset
573 coarseF + " g: " +
4842
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
574 gravelF);
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
575 log.debug("scale: " + scale + " = " + effWidth + " * " + gt);
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
576 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
577 }
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
578
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
579 Map<String, Object> data =
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
580 new HashMap<String, Object>(measurements.get(0).getData());
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
581
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
582 Measurement m = new Measurement(data, Collections.<Sieve>emptyList());
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
583
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
584 sumNorm = 1d/sumNorm;
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
585
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
586 m.set("BL_S", sumNorm*sumSandF);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
587 m.set("BL_G", sumNorm*sumGravelF);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
588 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
589 if (debug) {
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
590 log.debug(
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
591 "BL_S: " + m.get("BL_S") +
5282
14db045d6368 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4842
diff changeset
592 " 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
593 " BL_C: " + m.get("BL_C"));
97a0fa4dff8e Use isDebugEnabled() in S/Q Measurement factory.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4838
diff changeset
594 }
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
595 return m;
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
596 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
597
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
598
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
599 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
600 Calendar ca = Calendar.getInstance();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
601 Calendar cb = Calendar.getInstance();
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
602 ca.setTime(a);
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
603 cb.setTime(b);
4006
d4e39cc5c10c S(Q) relation: Removed unused field from SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4005
diff changeset
604 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
605 && ca.get(Calendar.MONTH) == cb.get(Calendar.MONTH)
4005
22abdc45869c Calculate S(Q) fractions
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4004
diff changeset
606 && 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
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
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
610 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
611
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
612 int N = measuments.size();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
613 if (N == 1) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
614 return measuments.get(0);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
615 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
616 TreeMap<Double, double []> diameters =
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
617 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
618
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
619 double sumGTrieb = 0d;
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
620 for (Measurement m: measuments) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
621 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
622 Double key = s.getDiameter();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
623 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
624 if (sum == null) {
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
625 sum = new double[1];
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
626 diameters.put(key, sum);
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
627 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
628 sum[0] += s.getLoad();
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
629 }
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
630 // calculate 'Geschiebetrieb'
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
631 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
632 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
633 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
634 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
635 accumulatedSieves.add(
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
636 new Sieve(entry.getKey(),
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
637 entry.getValue()[0]/N));
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
638 }
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
639 Map<String, Object> data =
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
640 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
641
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4789
diff changeset
642 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
643
4001
ab3a4ad82ae1 S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3992
diff changeset
644 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
645 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
646 }
ec9aab93f292 SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
647 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org