Mercurial > dive4elements > river
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 : |