annotate artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATExport.java @ 7691:fa4fbd66e752

(issue1579) Fix axes syncronisation at Gauges The SyncNumberAxis was completely broken. It only synced in one direction and even that did not work correctly when data was added to the axis (and the syncAxis rescaled but forgot the old axis) then there were lots of ways to bypass that scaling. And i also think the trans calculation was wrong. It has been replaced by a "mostly" simple method to just keep the W in M and W in CM+Datum axes in sync. I say "Mostly" because it had to deal with the Bounds interface.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 13 Dec 2013 19:03:00 +0100
parents 1b35b2ddfc28
children e4606eae8ea5
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
9 package org.dive4elements.river.exports.fixings;
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
11 import au.com.bytecode.opencsv.CSVWriter;
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
13 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
14
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
15 import org.dive4elements.river.artifacts.D4EArtifact;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
16
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
17 import org.dive4elements.river.artifacts.access.FixAccess;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
18
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6325
diff changeset
19 import org.dive4elements.river.themes.ThemeDocument;
6325
ee701de9c875 Add special case handling for Fixing AT export at a gauge
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
20 import org.dive4elements.river.utils.RiverUtils;
ee701de9c875 Add special case handling for Fixing AT export at a gauge
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
21
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
22 import org.dive4elements.river.artifacts.math.fitting.Function;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
23 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
24
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
25 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
26 import org.dive4elements.river.artifacts.model.Parameters;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
27
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
28 import org.dive4elements.river.artifacts.model.fixings.FixResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
29
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5148
diff changeset
30 import org.dive4elements.river.exports.AbstractExporter;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
31
6325
ee701de9c875 Add special case handling for Fixing AT export at a gauge
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
32 import org.dive4elements.river.model.River;
ee701de9c875 Add special case handling for Fixing AT export at a gauge
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
33
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 import java.io.IOException;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 import java.io.OutputStream;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 import java.io.OutputStreamWriter;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 import java.io.Writer;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 import org.apache.log4j.Logger;
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
40
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 import org.w3c.dom.NodeList;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42
3650
cbe2febe30cc Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3601
diff changeset
43 /** Export result of fixation analysis. */
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 public class FixATExport extends AbstractExporter {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45
3650
cbe2febe30cc Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3601
diff changeset
46 /** Private logger. */
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 private static Logger logger =
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 Logger.getLogger(FixATExport.class);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 protected Function function;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 protected Parameters parameters;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 @Override
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6325
diff changeset
55 public void doOut(ArtifactAndFacet bundle, ThemeDocument attr, boolean visible) {
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 logger.debug("AT Export doOut().");
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 Object data = bundle.getData(context);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 if (data instanceof CalculationResult) {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 CalculationResult cr = (CalculationResult)data;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 Object resData = cr.getData();
5055
3b974a24a8e1 Fixed AT-Export in 'ausgel. WSPL'.
Raimund Renkert <rrenkert@intevation.de>
parents: 4949
diff changeset
61 if (resData instanceof FixResult) {
3b974a24a8e1 Fixed AT-Export in 'ausgel. WSPL'.
Raimund Renkert <rrenkert@intevation.de>
parents: 4949
diff changeset
62 this.parameters = ((FixResult)resData).getParameters();
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 else {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 logger.debug("No CalculationResult found for AT export.");
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 return;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 }
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
69 FixAccess access = new FixAccess((D4EArtifact)this.master);
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 String f = access.getFunction();
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 if (f == null || f.length() == 0) {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 logger.debug("No function found for AT export.");
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 return;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 this.function = FunctionFactory.getInstance().getFunction(f);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 @Override
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 public void generate() throws IOException {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 if (this.function == null || this.parameters == null) {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 logger.debug("No function or paramters for AT export.");
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 return;
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 Writer writer = new OutputStreamWriter(out, DEFAULT_CSV_CHARSET);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 FixATWriter atWriter = new FixATWriter(this.function, this.parameters);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 NodeList nodes = request.getElementsByTagName("km");
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 String km = nodes.item(0).getTextContent();
3601
6c94153cc4a4 Removed superfluous import. s/Double.valueOf/Double.parseDouble/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3600
diff changeset
90 double dkm = Double.parseDouble(km);
6325
ee701de9c875 Add special case handling for Fixing AT export at a gauge
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
91 River river = RiverUtils.getRiver((D4EArtifact)master);
3599
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 atWriter.write(writer, context.getMeta(), river, dkm);
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 writer.close();
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 @Override
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 protected void writeCSVData(CSVWriter writer) throws IOException {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 // The concrete writer is used to write csv data.
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 @Override
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 protected void writePDF(OutputStream out) {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 // Implement me!
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106 @Override
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
107 protected void addData(Object data) {
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
108 // Nothing to do here.
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109 }
659c1111db13 FixA: Added exporter for AT files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110 }
3650
cbe2febe30cc Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3601
diff changeset
111 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org