Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/exports/process/BedheightProcessor.java @ 4536:ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Thu, 15 Nov 2012 16:21:21 +0100 |
parents | |
children | 2fadc6c5cdad |
rev | line source |
---|---|
4536
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.exports.process; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
2 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
3 import java.util.List; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
4 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
5 import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
6 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
7 import org.apache.log4j.Logger; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
8 import org.jfree.data.xy.XYSeries; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
9 import org.w3c.dom.Document; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
10 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
11 import de.intevation.artifactdatabase.state.ArtifactAndFacet; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.artifacts.CallContext; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
13 import de.intevation.flys.artifacts.model.minfo.BedHeightSingle; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
14 import de.intevation.flys.exports.XYChartGenerator; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
15 import de.intevation.flys.jfree.StyledXYSeries; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
16 import de.intevation.flys.model.BedHeightSingleValue; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
17 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
18 public class BedheightProcessor implements Processor { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
19 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
20 private final static Logger logger = |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
21 Logger.getLogger(BedheightProcessor.class); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
22 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
23 private final static String BEDHEIGHT = "bedheight"; |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
24 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
25 @Override |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
26 public void doOut(XYChartGenerator generator, ArtifactAndFacet aandf, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
27 Document theme, boolean visible, int index) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
28 CallContext context = generator.getCallContext(); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
29 Object data = aandf.getData(context); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
30 if (data instanceof BedHeightSingle) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
31 doBedheightSingleOut(generator, aandf, theme, index, visible, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
32 (BedHeightSingle)data); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
33 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
34 else if (data instanceof List<?>) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
35 doBedheightSingeValuesOut(generator, aandf, theme, index, visible, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
36 (List<BedHeightSingleValue>)data); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
37 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
38 logger.error("Can't process " + data.getClass().getName() + " objects"); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
39 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
40 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
41 private void doBedheightSingeValuesOut(XYChartGenerator generator, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
42 ArtifactAndFacet aandf, Document theme, int index, boolean visible, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
43 List<BedHeightSingleValue> data) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
44 logger.debug("doBedheightSingleOut"); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
45 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
46 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
47 theme); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
48 for(BedHeightSingleValue bvalue: data) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
49 series.add(bvalue.getStation(), bvalue.getSoundingWidth()); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
50 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
51 generator.addAxisSeries(series, index, visible); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
52 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
53 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
54 @Override |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
55 public boolean canHandle(String facettype) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
56 return BEDHEIGHT.equals(facettype); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
57 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
58 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
59 public void doBedheightSingleOut(XYChartGenerator generator, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
60 ArtifactAndFacet aandf, Document theme, int index, boolean visible, |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
61 BedHeightSingle data) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
62 double[] width = data.getMorphWidths(); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
63 double[] stations = data.getStations().toNativeArray(); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
64 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
65 logger.debug("doBedheightSingleOut"); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
66 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
67 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
68 theme); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
69 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
70 for (int i = 0; i < width.length; i++) { |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
71 series.add(stations[i], width[i], false); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
72 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
73 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
74 generator.addAxisSeries(series, index, visible); |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
75 } |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
76 |
ce4ff444f215
Implement a BedheightProcessor to generate charts from bed height data
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
77 } |