comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineProcessor.java @ 9429:bd5f5d2220fa

Work on salix cross sections; waterlevels work now with different colors Colors and i10n for all themes.
author gernotbelger
date Fri, 17 Aug 2018 17:48:01 +0200
parents 6e7094368e97
children d8e753d0fdb9
comparison
equal deleted inserted replaced
9428:15f274e6d83b 9429:bd5f5d2220fa
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.D4EArtifact; 19 import org.dive4elements.river.artifacts.D4EArtifact;
20 import org.dive4elements.river.artifacts.access.RangeAccess; 20 import org.dive4elements.river.artifacts.access.RangeAccess;
21 import org.dive4elements.river.artifacts.common.AbstractProcessor; 21 import org.dive4elements.river.artifacts.common.AbstractProcessor;
22 import org.dive4elements.river.artifacts.model.CrossSectionWaterLineFacet;
23 import org.dive4elements.river.artifacts.model.FacetTypes;
22 import org.dive4elements.river.artifacts.resources.Resources; 24 import org.dive4elements.river.artifacts.resources.Resources;
25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
23 import org.dive4elements.river.artifacts.uinfo.common.UInfoResultType; 26 import org.dive4elements.river.artifacts.uinfo.common.UInfoResultType;
27 import org.dive4elements.river.artifacts.uinfo.salix.SalixLineCrossSectionIndexData.SalixWaterlevel;
24 import org.dive4elements.river.exports.DiagramGenerator; 28 import org.dive4elements.river.exports.DiagramGenerator;
25 import org.dive4elements.river.themes.ThemeDocument; 29 import org.dive4elements.river.themes.ThemeDocument;
26 30
27 /** 31 /**
28 * Processor to generate the facets and data series of salix line 32 * Processor to generate the facets and data series of salix line
57 private static final String FACET_SALIX_SCENARIO_RAW_DESCRIPTION = "uinfo_facet_salix_scenario.raw.description"; 61 private static final String FACET_SALIX_SCENARIO_RAW_DESCRIPTION = "uinfo_facet_salix_scenario.raw.description";
58 62
59 public static final String FACET_SALIX_RANK = "uinfo_facet_salix_rank"; 63 public static final String FACET_SALIX_RANK = "uinfo_facet_salix_rank";
60 64
61 private static final String FACET_SALIX_RANK_DESCRIPTION = "uinfo_facet_salix_rank.description"; 65 private static final String FACET_SALIX_RANK_DESCRIPTION = "uinfo_facet_salix_rank.description";
66
67 // REMARK: must end with FacetTypes.CROSS_SECTION_WATER_LINE so its correctly recognized as such a theme
68 private static final String FACET_SALIX_CROSS_SECTION_WATER_LINE = "uinfo_facet_salix_line_" + FacetTypes.CROSS_SECTION_WATER_LINE;
69
70 private static final String FACET_SALIX_CROSS_SECTION_WATER_LINE_DESCRIPTION = FACET_SALIX_CROSS_SECTION_WATER_LINE + "_description";
71
72 private static final String FACET_SALIX_SCENARIO_CROSS_SECTION_WATER_LINE = "uinfo_facet_salix_scenario_" + FacetTypes.CROSS_SECTION_WATER_LINE;
73
74 private static final String FACET_SALIX_WATERLEVEL_CROSS_SECTION_WATER_LINE_PREFIX = "uinfo_facet_salix_waterlevel_";
62 75
63 private static final String I18N_AXIS_LABEL = "uinfo.chart.salix_line.section.yaxis.label"; 76 private static final String I18N_AXIS_LABEL = "uinfo.chart.salix_line.section.yaxis.label";
64 77
65 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); 78 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
66 79
105 } 118 }
106 119
107 public static Facet createSalixScenarioFilteredFacet(final CallContext context, final String hash, final String id, final int dataIndex, 120 public static Facet createSalixScenarioFilteredFacet(final CallContext context, final String hash, final String id, final int dataIndex,
108 final int resultIndex, final int facetIndex, final String subLabel) { 121 final int resultIndex, final int facetIndex, final String subLabel) {
109 122
110 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, 123 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION,
111 FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, subLabel); 124 subLabel);
112 return new SalixScenarioResultFacet(facetIndex, resultIndex, dataIndex, FACET_SALIX_SCENARIO_FILTERED, description, I18N_AXIS_LABEL, hash, id); 125 return new SalixScenarioResultFacet(facetIndex, resultIndex, dataIndex, FACET_SALIX_SCENARIO_FILTERED, description, I18N_AXIS_LABEL, hash, id);
113 } 126 }
114 127
115 public static Facet createSalixScenarioRawFacet(final CallContext context, final String hash, final String id, final int dataIndex, final int resultIndex, 128 public static Facet createSalixScenarioRawFacet(final CallContext context, final String hash, final String id, final int dataIndex, final int resultIndex,
116 final int facetIndex, final String subLabel) { 129 final int facetIndex, final String subLabel) {
121 134
122 public static Facet createSalixRankFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { 135 public static Facet createSalixRankFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) {
123 136
124 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_RANK_DESCRIPTION, FACET_SALIX_RANK_DESCRIPTION); 137 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_RANK_DESCRIPTION, FACET_SALIX_RANK_DESCRIPTION);
125 return new SalixRankResultFacet(facetIndex, resultIndex, FACET_SALIX_RANK, description, I18N_AXIS_LABEL, id, hash); 138 return new SalixRankResultFacet(facetIndex, resultIndex, FACET_SALIX_RANK, description, I18N_AXIS_LABEL, id, hash);
139 }
140
141 public static Facet createSalixCrossSectionFacet(final CallContext context, final ComputeType type, final String hash, final String stateId,
142 final int facetIndex) {
143 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_CROSS_SECTION_WATER_LINE_DESCRIPTION);
144 return new CrossSectionWaterLineFacet(facetIndex, FACET_SALIX_CROSS_SECTION_WATER_LINE, description, type, hash, stateId,
145 SalixLineCrossSectionIndexData.salixLine());
146 }
147
148 public static Facet createSalixScenarioCrossSectionFacet(final CallContext context, final ComputeType type, final String hash, final String stateId,
149 final int scenarioIndex, final int facetIndex, final String subLabel) {
150
151 final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION,
152 subLabel);
153
154 return new CrossSectionWaterLineFacet(facetIndex, FACET_SALIX_SCENARIO_CROSS_SECTION_WATER_LINE, description, type, hash, stateId,
155 SalixLineCrossSectionIndexData.scenario(scenarioIndex));
156 }
157
158 public static Facet createSalixWaterlevelCrossSectionFacet(final CallContext context, final ComputeType type, final String hash, final String stateId,
159 final SalixWaterlevel knownWaterlevel, final int facetIndex) {
160 final String facetName = FACET_SALIX_WATERLEVEL_CROSS_SECTION_WATER_LINE_PREFIX + knownWaterlevel.name() + "_" + FacetTypes.CROSS_SECTION_WATER_LINE;
161 final String facetI10n = facetName + "_description";
162 final String facetDescirption = Resources.getMsg(context.getMeta(), facetI10n);
163
164 return new CrossSectionWaterLineFacet(facetIndex, facetName, facetDescirption, type, hash, stateId,
165 SalixLineCrossSectionIndexData.waterlevel(knownWaterlevel));
126 } 166 }
127 167
128 @Override 168 @Override
129 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 169 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
130 170
137 final double[][] scenarioPoints = data.getScenarioPoints(dataIndex); 177 final double[][] scenarioPoints = data.getScenarioPoints(dataIndex);
138 return buildSeriesForPoints(scenarioPoints, generator, bundle, theme, visible, GAP_DISTANCE); 178 return buildSeriesForPoints(scenarioPoints, generator, bundle, theme, visible, GAP_DISTANCE);
139 } 179 }
140 180
141 if (bundle.getFacetName().equals(FACET_SALIX_RANK)) { 181 if (bundle.getFacetName().equals(FACET_SALIX_RANK)) {
142 final CallContext context = generator.getContext();
143 final RangeAccess kmRange = new RangeAccess((D4EArtifact) bundle.getArtifact()); 182 final RangeAccess kmRange = new RangeAccess((D4EArtifact) bundle.getArtifact());
144 // TODO get all rank data (5 ranks) from database 183 // TODO get all rank data (5 ranks) from database
145 final double[][] points = new double[2][2]; 184 final double[][] points = new double[2][2];
146 points[0][0] = kmRange.getLowerKm(); 185 points[0][0] = kmRange.getLowerKm();
147 points[0][1] = kmRange.getUpperKm(); 186 points[0][1] = kmRange.getUpperKm();

http://dive4elements.wald.intevation.org