comparison flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityExporter.java @ 2702:4c00cf83fff1

Added state, calculation and csv exporter for MINFO flow velociy calculation. flys-artifacts/trunk@4418 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 16 May 2012 08:37:27 +0000
parents
children aa4391648a05
comparison
equal deleted inserted replaced
2701:c553d4fa3957 2702:4c00cf83fff1
1 package de.intevation.flys.exports;
2
3 import java.io.OutputStream;
4 import java.text.NumberFormat;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 import org.w3c.dom.Document;
9
10 import org.apache.log4j.Logger;
11
12 import au.com.bytecode.opencsv.CSVWriter;
13
14 import de.intevation.artifacts.CallContext;
15
16 import de.intevation.flys.artifacts.model.CalculationResult;
17 import de.intevation.flys.artifacts.model.FlowVelocityData;
18 import de.intevation.flys.utils.Formatter;
19
20
21 /**
22 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
23 */
24 public class FlowVelocityExporter extends AbstractExporter {
25
26 private static final Logger logger =
27 Logger.getLogger(FlowVelocityExporter.class);
28
29
30 public static final String CSV_KM =
31 "export.flow_velocity.csv.header.km";
32
33 public static final String CSV_V_TOTAL =
34 "export.flow_velocity.csv.header.v_total";
35
36 public static final String CSV_V_MAIN =
37 "export.flow_velocity.csv.header.v_main";
38
39 public static final String CSV_TAU_MAIN =
40 "export.flow_velocity.csv.header.tau_main";
41
42 public static final String CSV_Q =
43 "export.flow_velocity.csv.header.q";
44
45 public static final String CSV_LOCATIONS =
46 "export.flow_velocity.csv.header.locations";
47
48
49 protected List<FlowVelocityData[]> data;
50
51
52 public void init(Document request, OutputStream out, CallContext cc) {
53 super.init(request, out, cc);
54 data = new ArrayList<FlowVelocityData[]>();
55 }
56
57
58 @Override
59 protected void addData(Object d) {
60 if (d instanceof CalculationResult) {
61 d = ((CalculationResult) d).getData();
62
63 if (d instanceof FlowVelocityData[]) {
64 logger.debug("Add new data of type FlowVelocityData");
65 data.add((FlowVelocityData[]) d);
66 }
67 }
68 }
69
70
71 @Override
72 protected void writeCSVData(CSVWriter writer) {
73 logger.info("FlowVelocityExporter.writeCSVData");
74 logger.debug("CSV gets " + data.size() + " FlowVelocityData objects.");
75
76 writeCSVHeader(writer);
77
78 for (FlowVelocityData[] d: data) {
79 data2CSV(writer, d);
80 }
81 }
82
83
84 protected void writeCSVHeader(CSVWriter writer) {
85 writer.writeNext(new String[] {
86 msg(CSV_KM, CSV_KM),
87 msg(CSV_V_TOTAL, CSV_V_TOTAL),
88 msg(CSV_V_MAIN, CSV_V_MAIN),
89 msg(CSV_TAU_MAIN, CSV_TAU_MAIN),
90 msg(CSV_Q, CSV_Q),
91 msg(CSV_LOCATIONS, CSV_LOCATIONS)
92 });
93 }
94
95
96 protected void data2CSV(CSVWriter writer, FlowVelocityData[] fData) {
97 logger.debug("Add next FlowVelocityData to CSV");
98
99 for (FlowVelocityData data: fData) {
100 for (int i = 0, n = data.size(); i < n; i++) {
101 NumberFormat kmF = Formatter.getFlowVelocityKM(context);
102 NumberFormat valF = Formatter.getFlowVelocityValues(context);
103 NumberFormat qF = Formatter.getFlowVelocityQ(context);
104
105 writer.writeNext(new String[] {
106 kmF.format(data.getKM(i)),
107 valF.format(data.getVMain(i)),
108 valF.format(data.getVTotal(i)),
109 valF.format(data.getTauMain(i)),
110 qF.format(data.getQ(i)) + "=" + data.getZone(),
111 "TODO: add Location for km"// TODO Add Locations
112 });
113 }
114 }
115 }
116
117
118 @Override
119 protected void writePDF(OutputStream out) {
120 logger.error("TODO: Implement FlowVelocityExporter.writePDF");
121 }
122 }
123 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org