comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodHeightProcessor.java @ 9229:0dcd1cd41915

Different themes/facets for left bank and right bank infrastructures in S-Info flood durations, some fixmes done
author mschaefer
date Thu, 05 Jul 2018 16:49:42 +0200
parents 0fc9c82e744e
children e5367900dd6d
comparison
equal deleted inserted replaced
9228:dba14da43f23 9229:0dcd1cd41915
17 import org.dive4elements.artifactdatabase.state.Facet; 17 import org.dive4elements.artifactdatabase.state.Facet;
18 import org.dive4elements.artifacts.CallContext; 18 import org.dive4elements.artifacts.CallContext;
19 import org.dive4elements.river.artifacts.common.AbstractCalculationResult; 19 import org.dive4elements.river.artifacts.common.AbstractCalculationResult;
20 import org.dive4elements.river.artifacts.resources.Resources; 20 import org.dive4elements.river.artifacts.resources.Resources;
21 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoProcessor; 21 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoProcessor;
22 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultFacet;
22 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; 23 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
23 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.ValueGetter; 24 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.ValueGetter;
24 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; 25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
25 import org.dive4elements.river.exports.DiagramGenerator; 26 import org.dive4elements.river.exports.DiagramGenerator;
26 import org.dive4elements.river.exports.LongitudinalSectionGenerator; 27 import org.dive4elements.river.exports.LongitudinalSectionGenerator;
28 import org.dive4elements.river.model.Attribute.AttributeKey;
27 import org.dive4elements.river.themes.ThemeDocument; 29 import org.dive4elements.river.themes.ThemeDocument;
28 30
29 /** 31 /**
30 * Processor to generate the facet and data series of infrastructure flood heights 32 * Processor to generate the facet and data series of infrastructure flood heights
31 * 33 *
32 * @author Matthias Schäfer 34 * @author Matthias Schäfer
33 * 35 *
34 */ 36 */
35 public final class FloodHeightProcessor extends AbstractSInfoProcessor { 37 public final class FloodHeightProcessor extends AbstractSInfoProcessor {
36 38
37 private static final String FACET_FLOOD_HEIGHT = "sinfo_facet_flood_height"; 39 private static final String FACET_FLOOD_HEIGHT_LEFT = "sinfo_facet_flood_height.left";
40
41 private static final String FACET_FLOOD_HEIGHT_RIGHT = "sinfo_facet_flood_height.right";
38 42
39 private static final String FACET_FLOOD_HEIGHT_DESCRIPTION = "sinfo_facet_flood_height.description"; 43 private static final String FACET_FLOOD_HEIGHT_DESCRIPTION = "sinfo_facet_flood_height.description";
40 44
41 private static final String FACET_MAIN_VALUE_HEIGHT = "mainvalue.w"; 45 private static final String FACET_MAIN_VALUE_HEIGHT = "mainvalue.w";
42 46
45 private static final String I18N_AXIS_LABEL = LongitudinalSectionGenerator.I18N_YAXIS_LABEL; 49 private static final String I18N_AXIS_LABEL = LongitudinalSectionGenerator.I18N_YAXIS_LABEL;
46 50
47 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); 51 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
48 52
49 static { 53 static {
50 HANDLED_FACET_TYPES.add(FACET_FLOOD_HEIGHT); 54 HANDLED_FACET_TYPES.add(FACET_FLOOD_HEIGHT_LEFT);
55 HANDLED_FACET_TYPES.add(FACET_FLOOD_HEIGHT_RIGHT);
51 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_HEIGHT); 56 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_HEIGHT);
52 } 57 }
53 58
54 public FloodHeightProcessor() { 59 public FloodHeightProcessor() {
55 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 60 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
56 } 61 }
57 62
58 public static Facet createFloodHeightFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, 63 public static Facet createFloodHeightFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
59 final int index) { 64 final int facetIndex, final int resultIndex) {
60 return AbstractSInfoProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, FACET_FLOOD_HEIGHT, FACET_FLOOD_HEIGHT_DESCRIPTION); 65
66 if (facetIndex == 0) {
67 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_HEIGHT_DESCRIPTION, FACET_FLOOD_HEIGHT_DESCRIPTION,
68 SInfoResultType.localizeRiverside(context, AttributeKey.LEFT));
69 return new SInfoResultFacet(facetIndex, resultIndex, FACET_FLOOD_HEIGHT_LEFT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
70 }
71 else {
72 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_HEIGHT_DESCRIPTION, FACET_FLOOD_HEIGHT_DESCRIPTION,
73 SInfoResultType.localizeRiverside(context, AttributeKey.RIGHT));
74 return new SInfoResultFacet(facetIndex, resultIndex, FACET_FLOOD_HEIGHT_RIGHT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
75 }
61 } 76 }
62 77
63 public static Facet createMainValueHeightFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result, 78 public static Facet createMainValueHeightFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result,
64 final int facetIndex, final int resultIndex, final int dataIndex) { 79 final int facetIndex, final int resultIndex, final int dataIndex) {
65 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, 80 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION,
71 @Override 86 @Override
72 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 87 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
73 88
74 final String facetName = bundle.getFacetName(); 89 final String facetName = bundle.getFacetName();
75 90
76 if (FACET_FLOOD_HEIGHT.contentEquals(facetName)) 91 if (FACET_FLOOD_HEIGHT_LEFT.contentEquals(facetName)) {
77 return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.infrastructureHeight, null); 92 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.LEFT);
93 }
94
95 if (FACET_FLOOD_HEIGHT_RIGHT.contentEquals(facetName))
96 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.RIGHT);
78 97
79 if (FACET_MAIN_VALUE_HEIGHT.contentEquals(facetName)) { 98 if (FACET_MAIN_VALUE_HEIGHT.contentEquals(facetName)) {
80 99
81 final AbstractCalculationResult data = getResult(generator, bundle); 100 final AbstractCalculationResult data = getResult(generator, bundle);
82 101
96 } 115 }
97 116
98 final String error = String.format("Unknown facet name: %s", facetName); 117 final String error = String.format("Unknown facet name: %s", facetName);
99 throw new UnsupportedOperationException(error); 118 throw new UnsupportedOperationException(error);
100 } 119 }
120
121 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible,
122 final AttributeKey riverside) {
123
124 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle);
125
126 final double[][] points = data.getInfrastructurePoints(SInfoResultType.infrastructureHeight, riverside);
127
128 return buildSeriesForType(points, generator, bundle, theme, visible, null);
129 }
101 } 130 }

http://dive4elements.wald.intevation.org