comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/AbstractSInfoProcessor.java @ 8886:cc86b0f9b3c3

SINFO-FlowDepth - work on tkh themes
author gernotbelger
date Wed, 14 Feb 2018 18:10:53 +0100
parents 7a8c12706834
children
comparison
equal deleted inserted replaced
8885:e5f688820951 8886:cc86b0f9b3c3
8 * documentation coming with Dive4Elements River for details. 8 * documentation coming with Dive4Elements River for details.
9 */ 9 */
10 10
11 package org.dive4elements.river.artifacts.sinfo.flowdepth; 11 package org.dive4elements.river.artifacts.sinfo.flowdepth;
12 12
13 import java.util.Map;
14 import java.util.Set; 13 import java.util.Set;
15 14
16 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
17 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; 16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
18 import org.dive4elements.artifacts.CallContext;
19 import org.dive4elements.river.exports.DiagramGenerator; 17 import org.dive4elements.river.exports.DiagramGenerator;
20 import org.dive4elements.river.exports.StyledSeriesBuilder;
21 import org.dive4elements.river.exports.process.DefaultProcessor; 18 import org.dive4elements.river.exports.process.DefaultProcessor;
22 import org.dive4elements.river.jfree.StyledXYSeries;
23 import org.dive4elements.river.themes.ThemeDocument; 19 import org.dive4elements.river.themes.ThemeDocument;
24 20
25 /** 21 /**
26 * Abstraction for some processor implementation within S-INFO. Probably this abstraction could also be used for other 22 * Abstraction for some processor implementation within S-INFO. Probably this abstraction could also be used for other
27 * cases as well. 23 * cases as well.
44 this.handled_facet_types = handled_facet_types; 40 this.handled_facet_types = handled_facet_types;
45 } 41 }
46 42
47 @Override 43 @Override
48 public final void doOut(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 44 public final void doOut(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
49 45 try {
50 final CallContext context = generator.getCallContext(); 46 this.yAxisLabel = generateSeries(generator, bundle, theme, visible);
51 final Map<String, String> metaData = bundle.getFacet().getMetaData();
52
53 final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
54 series.putMetaData(metaData, bundle.getArtifact(), context);
55
56 this.yAxisLabel = metaData.get("Y");
57
58 final String facetName = bundle.getFacetName();
59 final FlowDepthCalculationResult data = (FlowDepthCalculationResult) bundle.getData(context);
60 if (data == null) {
61 // Check has been here before so we keep it for security reasons
62 // this should never happen though.
63 log.error("Data is null for facet: " + facetName);
64 return;
65 } 47 }
66 48 catch (final Exception e) {
67 final double[][] points = generatePoints(data, facetName); 49 log.error(e.getMessage(), e);
68 50 }
69 StyledSeriesBuilder.addPoints(series, points, true);
70 generator.addAxisSeries(series, this.axisName, visible);
71 } 51 }
72 52
73 /** 53 /**
74 * Override to implement, call super as last line for default case. 54 * @return The axis label
75 */ 55 */
76 protected double[][] generatePoints(@SuppressWarnings("unused") final FlowDepthCalculationResult data, final String facetName) { 56 protected abstract String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible);
77 final String error = String.format("Unknown facet name: %s", facetName);
78 log.error(error);
79 throw new UnsupportedOperationException(error);
80 }
81 57
82 @Override 58 @Override
83 public final boolean canHandle(final String facettype) { 59 public final boolean canHandle(final String facettype) {
84 return this.handled_facet_types.contains(facettype); 60 return this.handled_facet_types.contains(facettype);
85 } 61 }

http://dive4elements.wald.intevation.org