comparison artifacts/src/main/java/org/dive4elements/river/exports/process/BedHeightProcessor.java @ 9617:1d4262a68f1f

#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
author dnt_bjoernsen <d.tironi@bjoernsen.de>
date Thu, 10 Oct 2019 15:29:02 +0200
parents 9b8e8fc1f408
children
comparison
equal deleted inserted replaced
9616:cedcee24a21a 9617:1d4262a68f1f
9 package org.dive4elements.river.exports.process; 9 package org.dive4elements.river.exports.process;
10 10
11 import java.util.Map; 11 import java.util.Map;
12 12
13 import org.apache.log4j.Logger; 13 import org.apache.log4j.Logger;
14 import org.jfree.data.xy.XYSeries;
15
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; 14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
17 import org.dive4elements.artifacts.CallContext; 15 import org.dive4elements.artifacts.CallContext;
18 import org.dive4elements.artifacts.CallMeta; 16 import org.dive4elements.artifacts.CallMeta;
19
20 import org.dive4elements.river.artifacts.resources.Resources;
21 import org.dive4elements.river.artifacts.D4EArtifact; 17 import org.dive4elements.river.artifacts.D4EArtifact;
22 import org.dive4elements.river.artifacts.access.RiverAccess; 18 import org.dive4elements.river.artifacts.access.RiverAccess;
23 import org.dive4elements.river.artifacts.model.FacetTypes; 19 import org.dive4elements.river.artifacts.model.FacetTypes;
24 import org.dive4elements.river.exports.XYChartGenerator; 20 import org.dive4elements.river.artifacts.resources.Resources;
25 import org.dive4elements.river.exports.DiagramGenerator; 21 import org.dive4elements.river.exports.DiagramGenerator;
26 import org.dive4elements.river.exports.StyledSeriesBuilder; 22 import org.dive4elements.river.exports.StyledSeriesBuilder;
23 import org.dive4elements.river.exports.XYChartGenerator;
27 import org.dive4elements.river.jfree.StyledXYSeries; 24 import org.dive4elements.river.jfree.StyledXYSeries;
28 import org.dive4elements.river.themes.ThemeDocument; 25 import org.dive4elements.river.themes.ThemeDocument;
26 import org.jfree.data.xy.XYSeries;
29 27
30 public class BedHeightProcessor extends DefaultProcessor { 28 public class BedHeightProcessor extends DefaultProcessor {
31 29
32 private final static Logger log = 30 private final static Logger log = Logger.getLogger(BedHeightProcessor.class);
33 Logger.getLogger(BedHeightProcessor.class);
34 31
35 public static final String I18N_AXIS_LABEL = 32 public static final String I18N_AXIS_LABEL = "chart.bedheight_middle.section.yaxis.label";
36 "chart.bedheight_middle.section.yaxis.label";
37 33
38 public final static String FACET_BED_HEIGHTS_MIN = "bedheight_min"; 34 public final static String FACET_BED_HEIGHTS_MIN = "bedheight_min";
39 35
40 public final static String FACET_BED_HEIGHTS_MAX = "bedheight_min"; 36 public final static String FACET_BED_HEIGHTS_MAX = "bedheight_min";
41 37
42 protected static final double GAP_TOLERANCE = 0.101d; 38 protected static final double GAP_TOLERANCE = 0.101d;
43 39
44 protected String yAxisLabel; 40 protected String yAxisLabel;
45 41
46 @Override 42 @Override
47 public void doOut( 43 public void doOut(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
48 DiagramGenerator generator, 44 final XYSeries series = prepareSeries(bundle, theme, generator.getContext());
49 ArtifactAndFacet bundle,
50 ThemeDocument theme,
51 boolean visible) {
52 XYSeries series = prepareSeries(
53 bundle, theme, generator.getContext());
54 if (series != null) { 45 if (series != null) {
55 generator.addAxisSeries(series, axisName, visible); 46 generator.addAxisSeries(series, this.axisName, visible);
56 } 47 }
57 } 48 }
58 49
59 @Override 50 @Override
60 public void doOut( 51 public void doOut(final XYChartGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, final int index) {
61 XYChartGenerator generator, 52 final XYSeries series = prepareSeries(bundle, theme, generator.getContext());
62 ArtifactAndFacet bundle,
63 ThemeDocument theme,
64 boolean visible,
65 int index
66 ) {
67 XYSeries series = prepareSeries(
68 bundle, theme, generator.getContext());
69 if (series != null) { 53 if (series != null) {
70 generator.addAxisSeries(series, index, visible); 54 generator.addAxisSeries(series, index, visible);
71 } 55 }
72 } 56 }
73 57
74 /** Prepare an series, independent of axis. */ 58 /** Prepare an series, independent of axis. */
75 private XYSeries prepareSeries( 59 private XYSeries prepareSeries(final ArtifactAndFacet bundle, final ThemeDocument theme, final CallContext context) {
76 ArtifactAndFacet bundle, 60 final Map<String, String> metaData = bundle.getFacet().getMetaData(bundle.getArtifact(), context);
77 ThemeDocument theme, 61 final StyledXYSeries series = new StyledXYSeries(bundle.getFacetName(), bundle.getFacetDescription(), theme);
78 CallContext context
79 ) {
80 Map<String, String> metaData = bundle.getFacet().getMetaData(
81 bundle.getArtifact(), context);
82 StyledXYSeries series = new StyledXYSeries(bundle.getFacetName(), bundle.getFacetDescription(),
83 theme);
84 series.putMetaData(metaData, bundle.getArtifact(), context); 62 series.putMetaData(metaData, bundle.getArtifact(), context);
85 yAxisLabel = metaData.get("Y"); 63 this.yAxisLabel = metaData.get("Y");
86 64
87 Object raw = bundle.getData(context); 65 final Object raw = bundle.getData(context);
88 if (raw == null) { 66 if (raw == null) {
89 return null; 67 return null;
90 } 68 }
91 if (!(raw instanceof double[][])) { 69 if (!(raw instanceof double[][])) {
92 log.error("Unkown datatype: " + raw.getClass().getName()); 70 log.error("Unkown datatype: " + raw.getClass().getName());
93 return null; 71 return null;
94 } 72 }
95 73
96 double[][] data = (double[][])raw; 74 final double[][] data = (double[][]) raw;
97 StyledSeriesBuilder.addPoints(series, 75 StyledSeriesBuilder.addPoints(series, data, false, GAP_TOLERANCE);
98 data,
99 false,
100 GAP_TOLERANCE);
101 return series; 76 return series;
102 } 77 }
103 78
104
105 @Override 79 @Override
106 public boolean canHandle(String facetType) { 80 public boolean canHandle(final String facetType) {
107 return FacetTypes.BEDHEIGHT.equals(facetType) 81 return FacetTypes.BEDHEIGHT.equals(facetType) || FACET_BED_HEIGHTS_MIN.equals(facetType) || FACET_BED_HEIGHTS_MAX.equals(facetType)
108 || FACET_BED_HEIGHTS_MIN.equals(facetType) 82 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT1.equals(facetType) || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT2.equals(facetType)
109 || FACET_BED_HEIGHTS_MAX.equals(facetType) 83 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT1_FILTERED.equals(facetType) || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED.equals(facetType);
110 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT1.equals(facetType)
111 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT2.equals(facetType)
112 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT1_FILTERED.equals(
113 facetType)
114 || FacetTypes.BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED.equals(
115 facetType);
116 } 84 }
117 85
118 @Override 86 @Override
119 public String getAxisLabel(DiagramGenerator generator) { 87 public String getAxisLabel(final DiagramGenerator generator) {
120 D4EArtifact flys = (D4EArtifact) generator.getMaster(); 88 final D4EArtifact flys = (D4EArtifact) generator.getMaster();
121 String unit = new RiverAccess(flys).getRiver().getWstUnit().getName(); 89 final String unit = new RiverAccess(flys).getRiver().getWstUnit().getName();
122 90
123 CallMeta meta = generator.getContext().getMeta(); 91 final CallMeta meta = generator.getContext().getMeta();
124 92
125 if (yAxisLabel != null && !yAxisLabel.isEmpty()) { 93 if (this.yAxisLabel != null && !this.yAxisLabel.isEmpty()) {
126 return Resources.getMsg( 94 return Resources.getMsg(meta, this.yAxisLabel, new Object[] { unit });
127 meta,
128 yAxisLabel,
129 new Object[] {unit});
130 } 95 }
131 return Resources.getMsg( 96 return Resources.getMsg(meta, I18N_AXIS_LABEL, new Object[] { unit });
132 meta,
133 I18N_AXIS_LABEL,
134 new Object[] { unit });
135 } 97 }
136 } 98 }

http://dive4elements.wald.intevation.org