Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/DeltaWtExporter.java @ 2787:e63969c173e9
FixA: Added CSV export for Delta W/t values.
flys-artifacts/trunk@4526 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 26 May 2012 21:26:10 +0000 |
parents | |
children | fe987587ebc9 70469e3d34b9 |
comparison
equal
deleted
inserted
replaced
2786:f9e62e76ee1f | 2787:e63969c173e9 |
---|---|
1 package de.intevation.flys.exports; | |
2 | |
3 import au.com.bytecode.opencsv.CSVWriter; | |
4 | |
5 import de.intevation.artifacts.CallContext; | |
6 import de.intevation.artifacts.CallMeta; | |
7 | |
8 import de.intevation.flys.artifacts.model.CalculationResult; | |
9 | |
10 import de.intevation.flys.artifacts.model.fixings.DeltaWT; | |
11 import de.intevation.flys.artifacts.model.fixings.DeltaWTsKM; | |
12 import de.intevation.flys.artifacts.model.fixings.FixResult; | |
13 | |
14 import de.intevation.flys.artifacts.resources.Resources; | |
15 | |
16 import de.intevation.flys.utils.Formatter; | |
17 | |
18 import java.io.IOException; | |
19 import java.io.OutputStream; | |
20 | |
21 import java.text.DateFormat; | |
22 import java.text.NumberFormat; | |
23 | |
24 import java.util.ArrayList; | |
25 import java.util.Date; | |
26 import java.util.List; | |
27 import java.util.Locale; | |
28 | |
29 import org.apache.log4j.Logger; | |
30 | |
31 import org.w3c.dom.Document; | |
32 | |
33 public class DeltaWtExporter | |
34 extends AbstractExporter | |
35 { | |
36 private static Logger log = Logger.getLogger(DeltaWtExporter.class); | |
37 | |
38 public static final String CSV_KM_HEADER = | |
39 "export.fixings.deltawt.csv.header.km"; | |
40 | |
41 public static final String CSV_DELTA_W_HEADER = | |
42 "export.fixings.deltawt.csv.header.deltaw"; | |
43 | |
44 public static final String CSV_T_HEADER = | |
45 "export.fixings.deltawt.csv.header.t"; | |
46 | |
47 public static final String CSV_T_DESC_HEADER = | |
48 "export.fixings.deltawt.csv.header.description"; | |
49 | |
50 public static final String DEFAULT_CSV_KM_HEADER = "km"; | |
51 | |
52 public static final String DEFAULT_CSV_DELTA_W_HEADER = "\u0394 W"; | |
53 | |
54 public static final String DEFAULT_CSV_T_HEADER = "Datum"; | |
55 | |
56 public static final String DEFAULT_CSV_T_DESC_HEADER = "Beschreibung"; | |
57 | |
58 protected List<DeltaWTsKM> deltaWTsKMs; | |
59 | |
60 @Override | |
61 public void init(Document request, OutputStream out, CallContext context) { | |
62 log.debug("DeltaWtExporter.init"); | |
63 super.init(request, out, context); | |
64 deltaWTsKMs = new ArrayList<DeltaWTsKM>(); | |
65 } | |
66 | |
67 @Override | |
68 public void generate() throws IOException { | |
69 log.debug("DeltaWtExporter.generate"); | |
70 if (facet == null) { | |
71 throw new IOException("invalid (null) facet for exporter"); | |
72 } | |
73 else if (facet.equals(FACET_CSV)) { | |
74 generateCSV(); | |
75 } | |
76 else if (facet.equals(FACET_PDF)) { | |
77 generatePDF(); | |
78 } | |
79 else { | |
80 throw new IOException("invalid facet (" + facet + ") for exporter"); | |
81 } | |
82 } | |
83 | |
84 @Override | |
85 protected void addData(Object d) { | |
86 log.debug("DeltaWtExporter.addData"); | |
87 if (!(d instanceof CalculationResult)) { | |
88 log.warn("Invalid data type"); | |
89 return; | |
90 } | |
91 | |
92 Object data = ((CalculationResult)d).getData(); | |
93 if (!(data instanceof FixResult)) { | |
94 log.warn("Invalid data stored in result."); | |
95 } | |
96 FixResult result = (FixResult)data; | |
97 deltaWTsKMs.add(result.getDeltaWTsKM()); | |
98 } | |
99 | |
100 @Override | |
101 protected void writeCSVData(CSVWriter writer) { | |
102 | |
103 writeCSVHeader(writer); | |
104 | |
105 NumberFormat kmF = getKMFormatter(); | |
106 NumberFormat dwF = getDeltaWFormatter(); | |
107 | |
108 CallMeta meta = context.getMeta(); | |
109 Locale locale = Resources.getLocale(meta); | |
110 DateFormat dF = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
111 | |
112 for (DeltaWTsKM deltaWTsKM: deltaWTsKMs) { | |
113 List<DeltaWTsKM.KM> dkms = deltaWTsKM.getKms(); | |
114 for (DeltaWTsKM.KM dkm: dkms) { | |
115 double km = dkm.getKm(); | |
116 String kmS = kmF.format(km); | |
117 List<DeltaWT> deltaWTs = dkm.getDeltaWTs(); | |
118 for (DeltaWT dwt: deltaWTs) { | |
119 double deltaW = dwt.getDeltaW(); | |
120 Date date = dwt.getDate(); | |
121 String desc = dwt.getDescription(); | |
122 | |
123 String deltaWS = dwF.format(deltaW); | |
124 String dateS = dF.format(date); | |
125 | |
126 writer.writeNext(new String[] { | |
127 kmS, | |
128 deltaWS, | |
129 dateS, | |
130 desc != null ? desc : "" }); | |
131 } | |
132 } | |
133 } | |
134 } | |
135 | |
136 | |
137 protected NumberFormat getKMFormatter() { | |
138 return Formatter.getFixDeltaWKM(context); | |
139 } | |
140 | |
141 protected NumberFormat getDeltaWFormatter() { | |
142 return Formatter.getFixDeltaWDeltaW(context); | |
143 } | |
144 | |
145 protected void writeCSVHeader(CSVWriter writer) { | |
146 log.debug("DeltaWtExporter.writeCSVHeader"); | |
147 | |
148 writer.writeNext(new String[] { | |
149 msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), | |
150 msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER), | |
151 msg(CSV_T_HEADER, DEFAULT_CSV_T_HEADER), | |
152 msg(CSV_T_DESC_HEADER, DEFAULT_CSV_T_DESC_HEADER) | |
153 }); | |
154 } | |
155 | |
156 @Override | |
157 protected void writePDF(OutputStream out) { | |
158 // TODO: Implement me! | |
159 } | |
160 } | |
161 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |