Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/sq/SQRelationExporter.java @ 3392:56f62b5209f5
S/Q relation: Write parameters as export result.
flys-artifacts/trunk@5020 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 16 Jul 2012 18:26:00 +0000 |
parents | ed07dd55f487 |
children | 1df6984628c3 |
comparison
equal
deleted
inserted
replaced
3391:2b3c4abe034f | 3392:56f62b5209f5 |
---|---|
4 import java.util.ArrayList; | 4 import java.util.ArrayList; |
5 import java.util.List; | 5 import java.util.List; |
6 | 6 |
7 import org.w3c.dom.Document; | 7 import org.w3c.dom.Document; |
8 | 8 |
9 import org.apache.log4j.Logger; | |
10 | |
11 import au.com.bytecode.opencsv.CSVWriter; | 9 import au.com.bytecode.opencsv.CSVWriter; |
12 | 10 |
13 import de.intevation.artifacts.CallContext; | 11 import de.intevation.artifacts.CallContext; |
14 | 12 |
15 import de.intevation.flys.artifacts.model.CalculationResult; | 13 import de.intevation.flys.artifacts.model.CalculationResult; |
14 | |
15 import de.intevation.flys.artifacts.model.sq.SQFractionResult; | |
16 import de.intevation.flys.artifacts.model.sq.SQResult; | |
17 import de.intevation.flys.artifacts.model.Parameters; | |
18 | |
16 import de.intevation.flys.exports.AbstractExporter; | 19 import de.intevation.flys.exports.AbstractExporter; |
17 | 20 |
21 import org.apache.log4j.Logger; | |
18 | 22 |
19 /** | 23 /** |
20 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
21 */ | 25 */ |
22 public class SQRelationExporter extends AbstractExporter { | 26 public class SQRelationExporter extends AbstractExporter { |
67 | 71 |
68 public static final String CSV_VARIANCE = | 72 public static final String CSV_VARIANCE = |
69 "export.sqrelation.csv.header.variance"; | 73 "export.sqrelation.csv.header.variance"; |
70 | 74 |
71 | 75 |
72 // TODO use correct model class here! | 76 protected List<SQResult []> data; |
73 protected List<Object[]> data; | |
74 | 77 |
75 | 78 |
76 public void init(Document request, OutputStream out, CallContext cc) { | 79 public void init(Document request, OutputStream out, CallContext cc) { |
77 super.init(request, out, cc); | 80 super.init(request, out, cc); |
78 data = new ArrayList<Object[]>(); | 81 data = new ArrayList<SQResult []>(); |
79 } | 82 } |
80 | 83 |
81 | 84 |
82 @Override | 85 @Override |
83 protected void addData(Object d) { | 86 protected void addData(Object d) { |
84 if (d instanceof CalculationResult) { | 87 if (d instanceof CalculationResult) { |
85 d = ((CalculationResult) d).getData(); | 88 d = ((CalculationResult)d).getData(); |
86 | 89 if (d instanceof SQResult []) { |
87 if (d instanceof Object[]) { | 90 data.add((SQResult [])d); |
88 logger.debug("Add new data of type XXX"); | |
89 data.add((Object[]) d); | |
90 } | 91 } |
91 } | 92 } |
92 } | 93 } |
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 } | |
94 | 106 |
95 @Override | 107 @Override |
96 protected void writeCSVData(CSVWriter writer) { | 108 protected void writeCSVData(CSVWriter writer) { |
97 logger.debug("writeCSVData"); | 109 logger.debug("writeCSVData"); |
98 logger.error("NOT IMPLEMENTED: writeCSVData"); | |
99 | |
100 logger.debug("CSV gets " + data.size() + " rows."); | |
101 | 110 |
102 writeCSVHeader(writer); | 111 writeCSVHeader(writer); |
103 | 112 |
104 for (Object[] d: data) { | 113 for (SQResult [] results: data) { |
105 data2CSV(writer, d); | 114 for (SQResult result: results) { |
115 data2CSV(writer, result); | |
116 } | |
106 } | 117 } |
107 } | 118 } |
108 | 119 |
120 protected void data2CSV(CSVWriter writer, SQResult result) { | |
121 logger.debug("data2CSV"); | |
109 | 122 |
110 protected void writeCSVHeader(CSVWriter writer) { | 123 String km = String.valueOf(result.getKm()); |
111 writer.writeNext(new String[] { | |
112 msg(CSV_PARAMETER, CSV_PARAMETER), | |
113 msg(CSV_STATION, CSV_STATION), | |
114 msg(CSV_KM , CSV_KM), | |
115 msg(CSV_FUNCTION , CSV_FUNCTION), | |
116 msg(CSV_GAUGE , CSV_GAUGE), | |
117 msg(CSV_COEFF_A , CSV_COEFF_A), | |
118 msg(CSV_COEFF_B , CSV_COEFF_B), | |
119 msg(CSV_COEFF_Q , CSV_COEFF_Q), | |
120 msg(CSV_COEFF_R , CSV_COEFF_R), | |
121 msg(CSV_N_TOTAL , CSV_N_TOTAL), | |
122 msg(CSV_N_OUTLIERS, CSV_N_OUTLIERS), | |
123 msg(CSV_C_DUAN , CSV_C_DUAN), | |
124 msg(CSV_C_FERGUSON, CSV_C_FERGUSON), | |
125 msg(CSV_VARIANCE , CSV_VARIANCE) | |
126 }); | |
127 } | |
128 | 124 |
129 | 125 for (int i = 0; i < SQResult.NUMBER_FRACTIONS; ++i) { |
130 protected void data2CSV(CSVWriter writer, Object[] mData) { | 126 SQFractionResult fraction = result.getFraction(i); |
131 logger.debug("data2CSV"); | 127 if (!fraction.isValid()) { |
132 logger.error("NOT IMPLEMENTED: data2CSV"); | 128 continue; |
129 } | |
130 String name = result.getFractionName(i); | |
131 Parameters parameters = fraction.getParameters(); | |
132 double a = parameters.getValue(0, "a"); | |
133 double b = parameters.getValue(0, "b"); | |
134 double sd = Math.sqrt(parameters.getValue(0, "std_dev")); | |
135 int t = fraction.getTotalCount(); | |
136 int o = fraction.getOutliersCount(); | |
137 writer.writeNext(new String[] { | |
138 km, | |
139 name, | |
140 String.valueOf(a), | |
141 String.valueOf(b), | |
142 String.valueOf(t), | |
143 String.valueOf(o), | |
144 String.valueOf(sd) | |
145 }); | |
146 } | |
133 } | 147 } |
134 | 148 |
135 | 149 |
136 @Override | 150 @Override |
137 protected void writePDF(OutputStream out) { | 151 protected void writePDF(OutputStream out) { |