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) {

http://dive4elements.wald.intevation.org