comparison flys-artifacts/src/main/java/de/intevation/flys/exports/MiddleBedHeightExporter.java @ 2714:2952f6dee5cf

Added an exporter for middle bed height values. flys-artifacts/trunk@4438 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 May 2012 10:51:04 +0000
parents
children 2ff802d66b71
comparison
equal deleted inserted replaced
2713:b60751cfdd6c 2714:2952f6dee5cf
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.FLYSArtifact;
17 import de.intevation.flys.artifacts.model.CalculationResult;
18 import de.intevation.flys.artifacts.model.MiddleBedHeightData;
19 import de.intevation.flys.utils.FLYSUtils;
20 import de.intevation.flys.utils.Formatter;
21
22
23 /**
24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
25 */
26 public class MiddleBedHeightExporter extends AbstractExporter {
27
28 private static final Logger logger =
29 Logger.getLogger(MiddleBedHeightExporter.class);
30
31
32 public static final String CSV_KM =
33 "export.bedheight_middle.csv.header.km";
34
35 public static final String CSV_SOUNDING =
36 "export.bedheight_middle.csv.header.sounding";
37
38 public static final String CSV_HEIGHT =
39 "export.bedheight_middle.csv.header.height";
40
41 public static final String CSV_UNCERTAINTY =
42 "export.bedheight_middle.csv.header.uncertainty";
43
44 public static final String CSV_DATA_GAP =
45 "export.bedheight_middle.csv.header.datagap";
46
47 public static final String CSV_SOUNDING_WIDTH =
48 "export.bedheight_middle.csv.header.soundingwidth";
49
50 public static final String CSV_WIDTH =
51 "export.bedheight_middle.csv.header.width";
52
53 public static final String CSV_LOCATIONS =
54 "export.bedheight_middle.csv.header.locations";
55
56
57 protected List<MiddleBedHeightData[]> data;
58
59
60 public void init(Document request, OutputStream out, CallContext cc) {
61 super.init(request, out, cc);
62 data = new ArrayList<MiddleBedHeightData[]>();
63 }
64
65
66 @Override
67 protected void addData(Object d) {
68 if (d instanceof CalculationResult) {
69 d = ((CalculationResult) d).getData();
70
71 if (d instanceof MiddleBedHeightData[]) {
72 logger.debug("Add new data of type MiddleBedHeightData");
73 data.add((MiddleBedHeightData[]) d);
74 }
75 }
76 }
77
78
79 @Override
80 protected void writeCSVData(CSVWriter writer) {
81 logger.info("MiddleBedHeightExporter.writeCSVData");
82 logger.debug("CSV gets " + data.size() + " MiddleBedHeightData objects.");
83
84 writeCSVHeader(writer);
85
86 for (MiddleBedHeightData[] d: data) {
87 data2CSV(writer, d);
88 }
89 }
90
91
92 protected void writeCSVHeader(CSVWriter writer) {
93 writer.writeNext(new String[] {
94 msg(CSV_KM, CSV_KM),
95 msg(CSV_SOUNDING, CSV_SOUNDING),
96 msg(CSV_HEIGHT, CSV_HEIGHT),
97 msg(CSV_UNCERTAINTY, CSV_UNCERTAINTY),
98 msg(CSV_DATA_GAP, CSV_DATA_GAP),
99 msg(CSV_SOUNDING_WIDTH, CSV_SOUNDING_WIDTH),
100 msg(CSV_WIDTH, CSV_WIDTH),
101 msg(CSV_LOCATIONS, CSV_LOCATIONS)
102 });
103 }
104
105
106 protected void data2CSV(CSVWriter writer, MiddleBedHeightData[] mData) {
107 logger.debug("Add next MiddleBedHeightData to CSV");
108
109 FLYSArtifact flys = (FLYSArtifact) master;
110
111 NumberFormat kmF = Formatter.getMiddleBedHeightKM(context);
112 NumberFormat heightF = Formatter.getMiddleBedHeightHeight(context);
113 NumberFormat uncertF = Formatter.getMiddleBedHeightUncert(context);
114 NumberFormat gapF = Formatter.getMiddleBedHeightDataGap(context);
115 NumberFormat soundF = Formatter.getMiddleBedHeightSounding(context);
116 NumberFormat widthF = Formatter.getMiddleBedHeightWidth(context);
117
118 for (MiddleBedHeightData data: mData) {
119 for (int i = 0, n = data.size(); i < n; i++) {
120 int start = data.getStartYear();
121 int end = data.getEndYear();
122
123 if (start == end) {
124 writer.writeNext(new String[] {
125 kmF.format(data.getKM(i)),
126 data.getSoundingName(context),
127 heightF.format(data.getMiddleHeight(i)),
128 uncertF.format(data.getUncertainty(i)),
129 gapF.format(data.getDataGap(i)) + "%",
130 soundF.format(data.getSoundingWidth(i)),
131 widthF.format(data.getWidth(i)),
132 FLYSUtils.getLocationDescription(flys, data.getKM(i)),
133 });
134 }
135 else {
136 writer.writeNext(new String[] {
137 kmF.format(data.getKM(i)),
138 data.getSoundingName(context),
139 heightF.format(data.getMiddleHeight(i)),
140 "",
141 "",
142 "",
143 "",
144 FLYSUtils.getLocationDescription(flys, data.getKM(i)),
145 });
146 }
147
148 }
149 }
150 }
151
152
153 @Override
154 protected void writePDF(OutputStream out) {
155 logger.error("TODO: Implement FlowVelocityExporter.writePDF");
156 }
157 }
158 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org