Mercurial > dive4elements > river
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 } |