annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQRelationJRDataSource.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 3ccbc278f2e6
children e4606eae8ea5
rev   line source
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 *
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7 */
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model.sq;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 import java.util.HashMap;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import org.apache.log4j.Logger;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import net.sf.jasperreports.engine.JRDataSource;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import net.sf.jasperreports.engine.JRException;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18 import net.sf.jasperreports.engine.JRField;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 /**
6239
f0f62743c83a Change author I'm the culprit of that class.
Andre Heinecke <aheinecke@intevation.de>
parents: 6173
diff changeset
22 * @author <a href="mailto:aheinecke@intevation.de">Andre Heinecke</a>
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23 */
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24 public class SQRelationJRDataSource implements JRDataSource
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26 /** The logger used in this exporter.*/
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 private static Logger logger = Logger.getLogger(SQRelationJRDataSource.class);
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 private ArrayList<String[]> data;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 private HashMap<String, String> metaData;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 private int index = -1;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 public SQRelationJRDataSource() {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35 data = new ArrayList<String[]>();
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 metaData = new HashMap<String, String>();
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39 public void addData(String[] val) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 data.add(val);
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 public void addMetaData(String key, String value) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 metaData.put(key, value);
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47 public boolean next() throws JRException {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
48 index++;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49 return (index < data.size());
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 public Object getFieldValue(JRField field) throws JRException {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 Object value = "";
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54 String fieldName = field.getName();
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 if ("river".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 value = metaData.get("river");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 else if ("date".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 value = metaData.get("date");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 else if ("calculation".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62 value = metaData.get("calculation");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 else if ("location".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 value = metaData.get("location");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 else if ("outliers".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68 value = metaData.get("outliers");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 else if ("outliertest".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 value = metaData.get("outliertest");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73 else if ("periods".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
74 value = metaData.get("periods");
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
75 }
6859
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
76 else if ("msName".equals(fieldName)) {
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
77 value = metaData.get("msName");
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
78 }
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
79 else if ("msGauge".equals(fieldName)) {
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
80 value = metaData.get("msGauge");
3ccbc278f2e6 (issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents: 6828
diff changeset
81 }
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82 else if ("km".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
83 value = data.get(index)[0];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
84 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
85 else if ("param".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86 value = data.get(index)[1];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
88 else if ("a".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
89 value = data.get(index)[2];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
91 else if ("b".equals(fieldName)) {
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
92 value = data.get(index)[3];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
94 else if ("total".equals(fieldName)) {
6828
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
95 value = data.get(index)[7];
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
97 else if ("out".equals(fieldName)) {
6828
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
98 value = data.get(index)[8];
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
99 }
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
100 else if ("sd".equals(fieldName)) {
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
101 value = data.get(index)[4];
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
102 }
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
103 else if ("qmax".equals(fieldName)) {
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 value = data.get(index)[5];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105 }
6828
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
106 else if ("cferg".equals(fieldName)) {
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
107 value = data.get(index)[10];
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
108 }
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
109 else if ("cduan".equals(fieldName)) {
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
110 value = data.get(index)[9];
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
111 }
708416bb560c (issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents: 6239
diff changeset
112 else if ("r2".equals(fieldName)) {
6173
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113 value = data.get(index)[6];
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
114 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
115 return value;
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
117 }
5d88268f184d Add SQRelationJRDataSource class
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
118 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org