annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/MeasurementFactory.java @ 7698:7efeaa2058e1

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

http://dive4elements.wald.intevation.org