Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/sq/SQRelationExporter.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/exports/sq/SQRelationExporter.java@bd047b71ab37 |
children | 4897a58c8746 |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
1 package org.dive4elements.river.exports.sq; | |
2 | |
3 import java.io.OutputStream; | |
4 import java.util.ArrayList; | |
5 import java.util.List; | |
6 | |
7 import org.w3c.dom.Document; | |
8 | |
9 import au.com.bytecode.opencsv.CSVWriter; | |
10 | |
11 import org.dive4elements.artifacts.CallContext; | |
12 | |
13 import org.dive4elements.river.artifacts.model.CalculationResult; | |
14 | |
15 import org.dive4elements.river.artifacts.model.sq.SQFractionResult; | |
16 import org.dive4elements.river.artifacts.model.sq.SQResult; | |
17 import org.dive4elements.river.artifacts.model.Parameters; | |
18 | |
19 import org.dive4elements.river.exports.AbstractExporter; | |
20 | |
21 import org.apache.log4j.Logger; | |
22 | |
23 /** | |
24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | |
25 */ | |
26 public class SQRelationExporter extends AbstractExporter { | |
27 | |
28 /** Private logger. */ | |
29 private static final Logger logger = | |
30 Logger.getLogger(SQRelationExporter.class); | |
31 | |
32 | |
33 public static final String CSV_PARAMETER = | |
34 "export.sqrelation.csv.header.parameter"; | |
35 | |
36 public static final String CSV_STATION = | |
37 "export.sqrelation.csv.header.station"; | |
38 | |
39 public static final String CSV_KM = | |
40 "export.sqrelation.csv.header.km"; | |
41 | |
42 public static final String CSV_FUNCTION = | |
43 "export.sqrelation.csv.header.function"; | |
44 | |
45 public static final String CSV_GAUGE = | |
46 "export.sqrelation.csv.header.gauge"; | |
47 | |
48 public static final String CSV_COEFF_A = | |
49 "export.sqrelation.csv.header.coeff.a"; | |
50 | |
51 public static final String CSV_COEFF_B = | |
52 "export.sqrelation.csv.header.coeff.b"; | |
53 | |
54 public static final String CSV_COEFF_Q = | |
55 "export.sqrelation.csv.header.coeff.q"; | |
56 | |
57 public static final String CSV_COEFF_R = | |
58 "export.sqrelation.csv.header.coeff.r"; | |
59 | |
60 public static final String CSV_N_TOTAL = | |
61 "export.sqrelation.csv.header.n.total"; | |
62 | |
63 public static final String CSV_N_OUTLIERS = | |
64 "export.sqrelation.csv.header.n.outliers"; | |
65 | |
66 public static final String CSV_C_DUAN = | |
67 "export.sqrelation.csv.header.c.duan"; | |
68 | |
69 public static final String CSV_C_FERGUSON = | |
70 "export.sqrelation.csv.header.c.ferguson"; | |
71 | |
72 public static final String CSV_VARIANCE = | |
73 "export.sqrelation.csv.header.variance"; | |
74 | |
75 | |
76 protected List<SQResult []> data; | |
77 | |
78 | |
79 public void init(Document request, OutputStream out, CallContext cc) { | |
80 super.init(request, out, cc); | |
81 data = new ArrayList<SQResult []>(); | |
82 } | |
83 | |
84 | |
85 @Override | |
86 protected void addData(Object d) { | |
87 if (d instanceof CalculationResult) { | |
88 d = ((CalculationResult)d).getData(); | |
89 if (d instanceof SQResult []) { | |
90 data.add((SQResult [])d); | |
91 } | |
92 } | |
93 } | |
94 | |
95 protected void writeCSVHeader(CSVWriter writer) { | |
96 writer.writeNext(new String[] { | |
97 msg(CSV_KM , CSV_KM), | |
98 msg(CSV_PARAMETER, CSV_PARAMETER), | |
99 msg(CSV_COEFF_A , CSV_COEFF_A), | |
100 msg(CSV_COEFF_B , CSV_COEFF_B), | |
101 msg(CSV_N_TOTAL , CSV_N_TOTAL), | |
102 msg(CSV_N_OUTLIERS, CSV_N_OUTLIERS), | |
103 msg(CSV_VARIANCE , CSV_VARIANCE) | |
104 }); | |
105 } | |
106 | |
107 @Override | |
108 protected void writeCSVData(CSVWriter writer) { | |
109 logger.debug("writeCSVData"); | |
110 | |
111 writeCSVHeader(writer); | |
112 | |
113 for (SQResult [] results: data) { | |
114 for (SQResult result: results) { | |
115 data2CSV(writer, result); | |
116 } | |
117 } | |
118 } | |
119 | |
120 protected void data2CSV(CSVWriter writer, SQResult result) { | |
121 logger.debug("data2CSV"); | |
122 | |
123 // TODO: i18n | |
124 String km = String.valueOf(result.getKm()); | |
125 | |
126 for (int i = 0; i < SQResult.NUMBER_FRACTIONS; ++i) { | |
127 SQFractionResult fraction = result.getFraction(i); | |
128 | |
129 String name = result.getFractionName(i); | |
130 | |
131 Parameters parameters = fraction.getParameters(); | |
132 | |
133 if (parameters == null) { | |
134 continue; | |
135 } | |
136 | |
137 double a = parameters.getValue(0, "a"); | |
138 double b = parameters.getValue(0, "b"); | |
139 double sd = Math.sqrt(parameters.getValue(0, "std_dev")); | |
140 int o = fraction.totalNumOutliers(); | |
141 int t = fraction.numMeasurements() + o; | |
142 | |
143 writer.writeNext(new String[] { | |
144 km, | |
145 name, | |
146 String.valueOf(a), | |
147 String.valueOf(b), | |
148 String.valueOf(t), | |
149 String.valueOf(o), | |
150 String.valueOf(sd) | |
151 }); | |
152 } | |
153 } | |
154 | |
155 | |
156 @Override | |
157 protected void writePDF(OutputStream out) { | |
158 logger.debug("writePDF"); | |
159 logger.error("NOT IMPLEMENTED: writePDF"); | |
160 } | |
161 } | |
162 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |