comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationProcessor.java @ 9612:f8308db94634

#20 UI, Diagramme
author dnt_bjoernsen <d.tironi@bjoernsen.de>
date Wed, 09 Oct 2019 16:17:16 +0200
parents 08f46ccd37ba
children 26e113e8224f
comparison
equal deleted inserted replaced
9611:8ed6c45136fa 9612:f8308db94634
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; 16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
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.common.AbstractProcessor; 20 import org.dive4elements.river.artifacts.common.AbstractProcessor;
21 import org.dive4elements.river.artifacts.common.ResultFacet;
22 import org.dive4elements.river.artifacts.resources.Resources; 21 import org.dive4elements.river.artifacts.resources.Resources;
23 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; 22 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
23 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.Infrastructure;
24 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.ValueGetter; 24 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.ValueGetter;
25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; 25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
26 import org.dive4elements.river.exports.DiagramGenerator; 26 import org.dive4elements.river.exports.DiagramGenerator;
27 import org.dive4elements.river.model.Attribute.AttributeKey; 27 import org.dive4elements.river.model.Attribute.AttributeKey;
28 import org.dive4elements.river.themes.ThemeDocument; 28 import org.dive4elements.river.themes.ThemeDocument;
36 public final class FloodDurationProcessor extends AbstractProcessor { 36 public final class FloodDurationProcessor extends AbstractProcessor {
37 37
38 private static final String FACET_FLOOD_DURATION_LEFT = "sinfo_facet_flood_duration.left"; 38 private static final String FACET_FLOOD_DURATION_LEFT = "sinfo_facet_flood_duration.left";
39 39
40 private static final String FACET_FLOOD_DURATION_RIGHT = "sinfo_facet_flood_duration.right"; 40 private static final String FACET_FLOOD_DURATION_RIGHT = "sinfo_facet_flood_duration.right";
41
42 private static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description";
43 41
44 private static final String FACET_MAIN_VALUE_DURATION = "mainvalue.duration"; 42 private static final String FACET_MAIN_VALUE_DURATION = "mainvalue.duration";
45 43
46 private static final String FACET_MAIN_VALUE_DURATION_DESCRIPTION = "mainvalue.duration.description"; 44 private static final String FACET_MAIN_VALUE_DURATION_DESCRIPTION = "mainvalue.duration.description";
47 45
58 public FloodDurationProcessor() { 56 public FloodDurationProcessor() {
59 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 57 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
60 } 58 }
61 59
62 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, 60 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
63 final int facetIndex, final int resultIndex) { 61 final int facetIndex, final int resultIndex, final Infrastructure infrastructure) {
64 62
65 if (facetIndex == 0) { 63 final String description = infrastructure.getFloodDurationLabel(context);
66 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_DURATION_DESCRIPTION, FACET_FLOOD_DURATION_DESCRIPTION, 64 final String facetName = infrastructure.getRiverside() == AttributeKey.LEFT ? FACET_FLOOD_DURATION_LEFT : FACET_FLOOD_DURATION_RIGHT;
67 SInfoResultType.localizeRiverside(context, AttributeKey.LEFT)); 65 return new InfrastructureResultFacet(facetIndex, resultIndex, facetName, description, I18N_AXIS_LABEL, id, hash, infrastructure);
68 return new ResultFacet(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 ResultFacet(facetIndex, resultIndex, FACET_FLOOD_DURATION_RIGHT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
74 }
75 } 66 }
76 67
77 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result, 68 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result,
78 final int facetIndex, final int resultIndex, final int dataIndex) { 69 final int facetIndex, final int resultIndex, final int dataIndex) {
79 70
87 @Override 78 @Override
88 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 79 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
89 80
90 final String facetName = bundle.getFacetName(); 81 final String facetName = bundle.getFacetName();
91 82
92 if (FACET_FLOOD_DURATION_LEFT.contentEquals(facetName)) { 83 if (FACET_FLOOD_DURATION_LEFT.contentEquals(facetName) || FACET_FLOOD_DURATION_RIGHT.contentEquals(facetName))
93 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.LEFT); 84 return buildInfrastructureSeries(generator, bundle, theme, visible);
94 }
95
96 if (FACET_FLOOD_DURATION_RIGHT.contentEquals(facetName))
97 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.RIGHT);
98 85
99 if (FACET_MAIN_VALUE_DURATION.contentEquals(facetName)) { 86 if (FACET_MAIN_VALUE_DURATION.contentEquals(facetName)) {
100 87
101 final AbstractCalculationResult data = getResult(generator, bundle); 88 final AbstractCalculationResult data = getResult(generator, bundle);
102 89
117 104
118 final String error = String.format("Unknown facet name: %s", facetName); 105 final String error = String.format("Unknown facet name: %s", facetName);
119 throw new UnsupportedOperationException(error); 106 throw new UnsupportedOperationException(error);
120 } 107 }
121 108
122 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, 109 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme,
123 final AttributeKey riverside) { 110 final boolean visible) {
111
112 final InfrastructureResultFacet infFacet = (InfrastructureResultFacet) bundle.getFacet();
113 final Infrastructure infrastructure = infFacet.getInfrastructure();
124 114
125 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle); 115 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle);
126 116
127 final double[][] points = data.getInfrastructurePoints(SInfoResultType.floodDuration, riverside); 117 final double[][] points = data.getInfrastructurePoints(SInfoResultType.floodDuration, infrastructure);
128 118
129 return buildSeriesForPoints(points, generator, bundle, theme, visible, null); 119 return buildSeriesForPoints(points, generator, bundle, theme, visible, null);
130 } 120 }
131 } 121 }

http://dive4elements.wald.intevation.org