Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/fixings/ParametersExporter.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/exports/fixings/ParametersExporter.java@bd047b71ab37 |
children | 4897a58c8746 |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
1 package org.dive4elements.river.exports.fixings; | |
2 | |
3 import au.com.bytecode.opencsv.CSVWriter; | |
4 | |
5 import org.dive4elements.artifacts.CallContext; | |
6 | |
7 import org.dive4elements.river.artifacts.model.CalculationResult; | |
8 import org.dive4elements.river.artifacts.model.Parameters; | |
9 | |
10 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult; | |
11 | |
12 import org.dive4elements.river.artifacts.resources.Resources; | |
13 | |
14 import org.dive4elements.river.exports.AbstractExporter; | |
15 | |
16 import java.io.IOException; | |
17 import java.io.OutputStream; | |
18 | |
19 import java.text.NumberFormat; | |
20 | |
21 import java.util.ArrayList; | |
22 import java.util.List; | |
23 | |
24 import org.apache.log4j.Logger; | |
25 | |
26 import org.w3c.dom.Document; | |
27 | |
28 public class ParametersExporter | |
29 extends AbstractExporter | |
30 { | |
31 private static Logger log = Logger.getLogger(ParametersExporter.class); | |
32 | |
33 protected List<Parameters> parametersList; | |
34 | |
35 @Override | |
36 public void init(Document request, OutputStream out, CallContext context) { | |
37 log.debug("ParametersExporter.init"); | |
38 super.init(request, out, context); | |
39 parametersList = new ArrayList<Parameters>(); | |
40 } | |
41 | |
42 @Override | |
43 protected void addData(Object d) { | |
44 log.debug("ParametersExporter.addData"); | |
45 if (!(d instanceof CalculationResult)) { | |
46 log.warn("Invalid data type"); | |
47 return; | |
48 } | |
49 | |
50 Object data = ((CalculationResult)d).getData(); | |
51 if (!(data instanceof FixAnalysisResult)) { | |
52 log.warn("Invalid data stored in result."); | |
53 return; | |
54 } | |
55 | |
56 FixAnalysisResult result = (FixAnalysisResult)data; | |
57 parametersList.add(result.getParameters()); | |
58 } | |
59 | |
60 @Override | |
61 public void generate() | |
62 throws IOException | |
63 { | |
64 log.debug("ParametersExporter.generate"); | |
65 | |
66 if (facet == null) { | |
67 throw new IOException("invalid (null) facet for exporter"); | |
68 } | |
69 | |
70 if (facet.equals(FIX_PARAMETERS)) { | |
71 generateCSV(); | |
72 } | |
73 else { | |
74 throw new IOException( | |
75 "invalid facet for exporter: '" + facet + "'"); | |
76 } | |
77 } | |
78 | |
79 @Override | |
80 protected void writeCSVData(final CSVWriter writer) throws IOException { | |
81 | |
82 if (parametersList.isEmpty()) { | |
83 return; | |
84 } | |
85 | |
86 Parameters parameters = parametersList.get(0); | |
87 writer.writeNext(parameters.getColumnNames()); | |
88 | |
89 final int numColumns = parameters.getNumberColumns(); | |
90 | |
91 parameters.visit(new Parameters.Visitor() { | |
92 | |
93 String [] row = new String[numColumns]; | |
94 | |
95 NumberFormat format = NumberFormat.getInstance( | |
96 Resources.getLocale(context.getMeta())); | |
97 | |
98 @Override | |
99 public void visit(double [] data) { | |
100 for (int i = 0; i < data.length; ++i) { | |
101 row[i] = format.format(data[i]); | |
102 } | |
103 writer.writeNext(row); | |
104 } | |
105 }, new double[numColumns]); | |
106 | |
107 writer.flush(); | |
108 } | |
109 | |
110 @Override | |
111 protected void writePDF(OutputStream out) { | |
112 // TODO: Implement me! | |
113 } | |
114 } | |
115 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |