Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationProcessor.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; |
27 import org.dive4elements.river.model.Attribute.AttributeKey; | |
26 import org.dive4elements.river.themes.ThemeDocument; | 28 import org.dive4elements.river.themes.ThemeDocument; |
27 | 29 |
28 /** | 30 /** |
29 * Processor to generate the facet and data series of infrastructure flood durations | 31 * Processor to generate the facet and data series of infrastructure flood durations |
30 * | 32 * |
31 * @author Matthias Schäfer | 33 * @author Matthias Schäfer |
32 * | 34 * |
33 */ | 35 */ |
34 public final class FloodDurationProcessor extends AbstractSInfoProcessor { | 36 public final class FloodDurationProcessor extends AbstractSInfoProcessor { |
35 | 37 |
36 private static final String FACET_FLOOD_DURATION = "sinfo_facet_flood_duration"; | 38 private static final String FACET_FLOOD_DURATION_LEFT = "sinfo_facet_flood_duration.left"; |
39 | |
40 private static final String FACET_FLOOD_DURATION_RIGHT = "sinfo_facet_flood_duration.right"; | |
37 | 41 |
38 private static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description"; | 42 private static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description"; |
39 | 43 |
40 private static final String FACET_MAIN_VALUE_DURATION = "mainvalue.duration"; | 44 private static final String FACET_MAIN_VALUE_DURATION = "mainvalue.duration"; |
41 | 45 |
44 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.section.yaxis.label"; | 48 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.section.yaxis.label"; |
45 | 49 |
46 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); | 50 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); |
47 | 51 |
48 static { | 52 static { |
49 HANDLED_FACET_TYPES.add(FACET_FLOOD_DURATION); | 53 HANDLED_FACET_TYPES.add(FACET_FLOOD_DURATION_LEFT); |
54 HANDLED_FACET_TYPES.add(FACET_FLOOD_DURATION_RIGHT); | |
50 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_DURATION); | 55 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_DURATION); |
51 | |
52 } | 56 } |
53 | 57 |
54 public FloodDurationProcessor() { | 58 public FloodDurationProcessor() { |
55 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); | 59 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); |
56 } | 60 } |
57 | 61 |
58 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, | 62 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, |
59 final int resultIndex) { | 63 final int facetIndex, final int resultIndex) { |
60 | 64 |
61 return AbstractSInfoProcessor.createFacet(context, hash, id, result, resultIndex, I18N_AXIS_LABEL, FACET_FLOOD_DURATION, | 65 if (facetIndex == 0) { |
62 FACET_FLOOD_DURATION_DESCRIPTION); | 66 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_DURATION_DESCRIPTION, FACET_FLOOD_DURATION_DESCRIPTION, |
67 SInfoResultType.localizeRiverside(context, AttributeKey.LEFT)); | |
68 return new SInfoResultFacet(facetIndex, resultIndex, FACET_FLOOD_DURATION_LEFT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash); | |
69 } | |
70 else { | |
71 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_DURATION_DESCRIPTION, FACET_FLOOD_DURATION_DESCRIPTION, | |
72 SInfoResultType.localizeRiverside(context, AttributeKey.RIGHT)); | |
73 return new SInfoResultFacet(facetIndex, resultIndex, FACET_FLOOD_DURATION_RIGHT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash); | |
74 } | |
63 } | 75 } |
64 | 76 |
65 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result, | 77 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result, |
66 final int facetIndex, final int resultIndex, final int dataIndex) { | 78 final int facetIndex, final int resultIndex, final int dataIndex) { |
67 | 79 |
72 id); | 84 id); |
73 } | 85 } |
74 | 86 |
75 @Override | 87 @Override |
76 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { | 88 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { |
89 | |
77 final String facetName = bundle.getFacetName(); | 90 final String facetName = bundle.getFacetName(); |
78 | 91 |
79 if (FACET_FLOOD_DURATION.contentEquals(facetName)) | 92 if (FACET_FLOOD_DURATION_LEFT.contentEquals(facetName)) { |
80 return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.floodDuration, null); | 93 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.LEFT); |
94 } | |
95 | |
96 if (FACET_FLOOD_DURATION_RIGHT.contentEquals(facetName)) | |
97 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.RIGHT); | |
81 | 98 |
82 if (FACET_MAIN_VALUE_DURATION.contentEquals(facetName)) { | 99 if (FACET_MAIN_VALUE_DURATION.contentEquals(facetName)) { |
83 | 100 |
84 final AbstractCalculationResult data = getResult(generator, bundle); | 101 final AbstractCalculationResult data = getResult(generator, bundle); |
85 | 102 |
92 public double getValue(final DurationWaterlevel waterlevel) { | 109 public double getValue(final DurationWaterlevel waterlevel) { |
93 return waterlevel.getFloodDurDaysPerYear(); | 110 return waterlevel.getFloodDurDaysPerYear(); |
94 } | 111 } |
95 }; | 112 }; |
96 final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(generator, valuegetter, index); | 113 final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(generator, valuegetter, index); |
97 return buildSeriesForType(points, generator, bundle, theme, visible, null); | 114 return buildStepLineSeriesForType(points, generator, bundle, theme, visible); |
98 } | 115 } |
99 } | 116 } |
100 | 117 |
101 final String error = String.format("Unknown facet name: %s", facetName); | 118 final String error = String.format("Unknown facet name: %s", facetName); |
102 throw new UnsupportedOperationException(error); | 119 throw new UnsupportedOperationException(error); |
103 } | 120 } |
121 | |
122 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, | |
123 final AttributeKey riverside) { | |
124 | |
125 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle); | |
126 | |
127 final double[][] points = data.getInfrastructurePoints(SInfoResultType.floodDuration, riverside); | |
128 | |
129 return buildSeriesForType(points, generator, bundle, theme, visible, null); | |
130 } | |
104 } | 131 } |