comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodHeightProcessor.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;
37 37
38 private static final String FACET_FLOOD_HEIGHT_LEFT = "sinfo_facet_flood_height.left"; 38 private static final String FACET_FLOOD_HEIGHT_LEFT = "sinfo_facet_flood_height.left";
39 39
40 private static final String FACET_FLOOD_HEIGHT_RIGHT = "sinfo_facet_flood_height.right"; 40 private static final String FACET_FLOOD_HEIGHT_RIGHT = "sinfo_facet_flood_height.right";
41 41
42 private static final String FACET_FLOOD_HEIGHT_DESCRIPTION = "sinfo_facet_flood_height.description"; 42 private static final String FACET_MAIN_VALUE_HEIGHT_DESCRIPTION = "mainvalue.w.description";
43 43
44 private static final String FACET_MAIN_VALUE_HEIGHT = "mainvalue.w"; 44 private static final String FACET_MAIN_VALUE_HEIGHT = "mainvalue.w";
45
46 private static final String FACET_MAIN_VALUE_HEIGHT_DESCRIPTION = "mainvalue.w.description";
47 45
48 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.height.section.yaxis.label"; 46 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.height.section.yaxis.label";
49 47
50 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); 48 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
51 49
58 public FloodHeightProcessor() { 56 public FloodHeightProcessor() {
59 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 57 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
60 } 58 }
61 59
62 public static Facet createFloodHeightFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, 60 public static Facet createFloodHeightFacet(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 facetName = infrastructure.getRiverside().equals(AttributeKey.LEFT) ? FACET_FLOOD_HEIGHT_LEFT : FACET_FLOOD_HEIGHT_RIGHT;
66 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_HEIGHT_DESCRIPTION, FACET_FLOOD_HEIGHT_DESCRIPTION, 64 final String description = infrastructure.getFloodHeightLabel(context);
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_HEIGHT_LEFT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
69 }
70 else {
71 final String description = Resources.getMsg(context.getMeta(), FACET_FLOOD_HEIGHT_DESCRIPTION, FACET_FLOOD_HEIGHT_DESCRIPTION,
72 SInfoResultType.localizeRiverside(context, AttributeKey.RIGHT));
73 return new ResultFacet(facetIndex, resultIndex, FACET_FLOOD_HEIGHT_RIGHT, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
74 }
75 } 66 }
76 67
77 public static Facet createMainValueHeightFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result, 68 public static Facet createMainValueHeightFacet(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 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, 70 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION,
85 @Override 76 @Override
86 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 77 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
87 78
88 final String facetName = bundle.getFacetName(); 79 final String facetName = bundle.getFacetName();
89 80
90 if (FACET_FLOOD_HEIGHT_LEFT.contentEquals(facetName)) { 81 if (FACET_FLOOD_HEIGHT_LEFT.contentEquals(facetName) || FACET_FLOOD_HEIGHT_RIGHT.contentEquals(facetName))
91 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.LEFT); 82 return buildInfrastructureSeries(generator, bundle, theme, visible);
92 }
93
94 if (FACET_FLOOD_HEIGHT_RIGHT.contentEquals(facetName))
95 return buildInfrastructureSeries(generator, bundle, theme, visible, AttributeKey.RIGHT);
96 83
97 if (FACET_MAIN_VALUE_HEIGHT.contentEquals(facetName)) { 84 if (FACET_MAIN_VALUE_HEIGHT.contentEquals(facetName)) {
98 85
99 final AbstractCalculationResult data = getResult(generator, bundle); 86 final AbstractCalculationResult data = getResult(generator, bundle);
100 87
115 102
116 final String error = String.format("Unknown facet name: %s", facetName); 103 final String error = String.format("Unknown facet name: %s", facetName);
117 throw new UnsupportedOperationException(error); 104 throw new UnsupportedOperationException(error);
118 } 105 }
119 106
120 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, 107 private String buildInfrastructureSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme,
121 final AttributeKey riverside) { 108 final boolean visible) {
109
110 final InfrastructureResultFacet infFacet = (InfrastructureResultFacet) bundle.getFacet();
111 final Infrastructure infrastructure = infFacet.getInfrastructure();
122 112
123 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle); 113 final FloodDurationCalculationResult data = (FloodDurationCalculationResult) getResult(generator, bundle);
124 114
125 final double[][] points = data.getInfrastructurePoints(SInfoResultType.infrastructureHeight, riverside); 115 final double[][] points = data.getInfrastructurePoints(SInfoResultType.infrastructureHeight, infrastructure);
126 116
127 return buildSeriesForPoints(points, generator, bundle, theme, visible, null); 117 return buildSeriesForPoints(points, generator, bundle, theme, visible, null);
128 } 118 }
129 } 119 }

http://dive4elements.wald.intevation.org