Mercurial > dive4elements > river
changeset 9370:a773accce425
Merge
author | gernotbelger |
---|---|
date | Thu, 02 Aug 2018 17:47:20 +0200 |
parents | 1a4d2ce77423 (current diff) 6f7e92c16050 (diff) |
children | 6657d89a0b34 |
files | artifacts/doc/conf/seddb-db.xml |
diffstat | 14 files changed, 262 insertions(+), 72 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/doc/conf/artifacts/uinfo.xml Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/doc/conf/artifacts/uinfo.xml Thu Aug 02 17:47:20 2018 +0200 @@ -171,9 +171,13 @@ <outputmodes> <outputmode name="uinfo_salix_line" description="output.uinfo_salix_line" mime-type="image/png" type="chart"> <facets> + <facet name="uinfo_facet_salix_line.filtered" description="salix line, filtered by current zoom state" /> <facet name="uinfo_facet_salix_line" description="salix line"/> + <facet name="uinfo_facet_salix_mnwmw.filtered" description="nmw-mw differences, filtered by current zoom state" /> <facet name="uinfo_facet_salix_mnwmw" description="mnw-mw differences"/> + <facet name="uinfo_facet_salix_scenario.filtered" description="scenario salix line, filtered by current zoom state" /> <facet name="uinfo_facet_salix_scenario" description="scenario salix line"/> + <facet name="uinfo_facet_salix_rank" description="salix ranks" /> </facets> </outputmode>
--- a/artifacts/doc/conf/seddb-db.xml Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/doc/conf/seddb-db.xml Thu Aug 02 17:47:20 2018 +0200 @@ -5,7 +5,7 @@ <password>seddb</password> <dialect>org.hibernate.dialect.PostgreSQLDialect</dialect> <driver>org.postgresql.Driver</driver> - <url>jdbc:postgresql://localhost:5432/seddb</url> + <url>jdbc:postgresql://localhost:63333/seddb2</url> <validation-query>select 1 from gewaesser</validation-query> <max-wait>30000</max-wait> <!--
--- a/artifacts/doc/conf/themes.xml Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/doc/conf/themes.xml Thu Aug 02 17:47:20 2018 +0200 @@ -475,8 +475,12 @@ <mapping from="sinfo_floodduration_curve.manualpoints" to="ManualPoints" /> <mapping from="uinfo_facet_salix_line" to="UInfoSalixLine" /> + <mapping from="uinfo_facet_salix_line.filtered" to="UInfoSalixLine" /> <mapping from="uinfo_facet_salix_mnwmw" to="UInfoSalixMnwMw" /> + <mapping from="uinfo_facet_salix_mnwmw.filtered" to="UInfoSalixMnwMw" /> <mapping from="uinfo_facet_salix_scenario" to="UInfoSalixScenario" /> + <mapping from="uinfo_facet_salix_scenario.filtered" to="UInfoSalixScenario" /> + <mapping from="uinfo_facet_salix_rank" to="UInfoSalixRank" /> <mapping from="uinfo_salix_line.manualpoints" to="ManualPoints" /> </mappings>
--- a/artifacts/doc/conf/themes/default.xml Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/doc/conf/themes/default.xml Thu Aug 02 17:47:20 2018 +0200 @@ -2937,4 +2937,16 @@ <field name="linecolor" type="Color" display="Linienfarbe" default="0, 0, 0" /> </fields> </theme> + <theme name="UInfoSalixRank"> + <inherits> + <inherit from="Areas" /> + </inherits> + <fields> + <field name="areashowbg" type="boolean" display="Hintergrund anzeigen" default="true" hints="hidden" /> + <field name="areashowborder" type="boolean" display="Begrenzung" default="false" hints="hidden" /> + <field name="areabordercolor" type="Color" default="0, 0, 0" display="Begrenzungslinienfarbe" hints="hidden" /> + <field name="showarea" type="boolean" display="Flaeche anzeigen" default="true" hints="hidden" /> + <field name="showarealabel" type="boolean" display="Flächenbeschriftung anzeigen" default="false" /> + </fields> + </theme> </themegroup> \ No newline at end of file
--- a/artifacts/doc/conf/themes/second.xml Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/doc/conf/themes/second.xml Thu Aug 02 17:47:20 2018 +0200 @@ -2925,4 +2925,16 @@ <field name="linecolor" type="Color" display="Linienfarbe" default="0, 0, 0" /> </fields> </theme> + <theme name="UInfoSalixRank"> + <inherits> + <inherit from="Areas" /> + </inherits> + <fields> + <field name="areashowbg" type="boolean" display="Hintergrund anzeigen" default="true" hints="hidden" /> + <field name="areashowborder" type="boolean" display="Begrenzung" default="false" hints="hidden" /> + <field name="areabordercolor" type="Color" default="0, 0, 0" display="Begrenzungslinienfarbe" hints="hidden" /> + <field name="showarea" type="boolean" display="Flaeche anzeigen" default="true" hints="hidden" /> + <field name="showarealabel" type="boolean" display="Flächenbeschriftung anzeigen" default="false" /> + </fields> + </theme> </themegroup> \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/UINFOArtifact.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/UINFOArtifact.java Thu Aug 02 17:47:20 2018 +0200 @@ -50,7 +50,15 @@ final String name = facet.getName(); - if (SalixLineProcessor.FACET_SALIX_SCENARIO.equals(name)) + if (SalixLineProcessor.FACET_SALIX_LINE_RAW.equals(name)) + return Boolean.FALSE; + if (SalixLineProcessor.FACET_SALIX_MNWMW_RAW.equals(name)) + return Boolean.FALSE; + if (SalixLineProcessor.FACET_SALIX_RANK.equals(name)) + return Boolean.FALSE; + if (SalixLineProcessor.FACET_SALIX_SCENARIO_FILTERED.equals(name)) + return Boolean.FALSE; + if (SalixLineProcessor.FACET_SALIX_SCENARIO_RAW.equals(name)) return Boolean.FALSE; return null;
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java Thu Aug 02 17:47:20 2018 +0200 @@ -49,6 +49,9 @@ private final Map<Gauge, QPosition> gaugeMwPos; private final Map<Gauge, QPosition> gaugeMnwPos; private final Map<Gauge, QPosition> gaugeMhwPos; + private QPosition refGaugeMwPos; + private QPosition refGaugeMnwPos; + private QPosition refGaugeMhwPos; private Calculation problems; @@ -96,6 +99,7 @@ this.gaugeMwPos.clear(); this.gaugeMnwPos.clear(); this.gaugeMhwPos.clear(); + boolean first = true; for (final Gauge gauge : this.riverInfoProvider.getGauges()) { this.gaugeMwPos.put(gauge, null); this.gaugeMnwPos.put(gauge, null); @@ -109,24 +113,39 @@ else if (mv.getMainValue().getName().equalsIgnoreCase("mhq")) this.gaugeMhwPos.put(gauge, this.wst.getQPosition(gaugeKm, mv.getValue().doubleValue())); } + if (first) { + this.refGaugeMwPos = this.gaugeMwPos.get(gauge); + this.refGaugeMnwPos = this.gaugeMnwPos.get(gauge); + this.refGaugeMhwPos = this.gaugeMhwPos.get(gauge); + first = false; + } + } + if (this.refGaugeMwPos == null) + this.problems.addProblem("uinfo_salix_calc.warning.missing_mq"); + else { + if (this.refGaugeMhwPos == null) + this.problems.addProblem("uinfo_salix_calc.warning.missing_mhq"); + if (this.refGaugeMnwPos == null) + this.problems.addProblem("uinfo_salix_calc.warning.missing_mnq"); } } /** * Create a result row for a station and its gauge, and add w-q-values as selected - * - * @param rangeScenarios2 */ private ResultRow createRow(final double station, final NavigableMap<Double, List<Double>> rangeScenarios) { final ResultRow row = ResultRow.create(); - // Find station's gauge - final Gauge gauge = this.riverInfoProvider.getGauge(station, true); row.putValue(GeneralResultType.station, station); + // Find station's gauge + // final Gauge gauge = this.riverInfoProvider.getGauge(station, true); // Interpolate mnw, mw, and mhw - final double mnw = interpolateW(station, this.gaugeMnwPos.get(gauge)); - final double mw = interpolateW(station, this.gaugeMwPos.get(gauge)); - final double mhw = interpolateW(station, this.gaugeMhwPos.get(gauge)); + // final double mnw = interpolateW(station, this.gaugeMnwPos.get(gauge)); + // final double mw = interpolateW(station, this.gaugeMwPos.get(gauge)); + // final double mhw = interpolateW(station, this.gaugeMhwPos.get(gauge)); + final double mnw = interpolateW(station, this.refGaugeMnwPos); + final double mw = interpolateW(station, this.refGaugeMwPos); + final double mhw = interpolateW(station, this.refGaugeMhwPos); row.putValue(SInfoResultType.waterlevel, mnw); row.putValue(SInfoResultType.waterlevel1, mw); row.putValue(SInfoResultType.waterlevel2, mhw); @@ -155,7 +174,6 @@ private double interpolateW(final double station, final QPosition qPosition) { if (qPosition != null) return this.wst.interpolateW(station, qPosition, this.problems); - return Double.NaN; } @@ -175,8 +193,6 @@ /** * Gets the station-specific list of delta-ws of the active scenario, at least with one 0 item in any case - * - * @param rangeScenarios */ private double[] getDeltaWs(final double station, final NavigableMap<Double, List<Double>> rangeScenarios) { final Entry<Double, List<Double>> stationScenarios = rangeScenarios.floorEntry(station);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineProcessor.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineProcessor.java Thu Aug 02 17:47:20 2018 +0200 @@ -20,7 +20,6 @@ import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.uinfo.common.UInfoResultType; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.process.WOutProcessor; import org.dive4elements.river.themes.ThemeDocument; /** @@ -31,70 +30,132 @@ */ public final class SalixLineProcessor extends AbstractProcessor { - private static final String FACET_SALIX_LINE = "uinfo_facet_salix_line"; - - private static final String FACET_SALIX_LINE_DESCRIPTION = "uinfo_facet_salix_line.description"; + private static final String FACET_SALIX_LINE_FILTERED = "uinfo_facet_salix_line.filtered"; - private static final String FACET_SALIX_MNWMW = "uinfo_facet_salix_mnwmw"; + private static final String FACET_SALIX_LINE_FILTERED_DESCRIPTION = "uinfo_facet_salix_line.filtered.description"; - private static final String FACET_SALIX_MNWMW_DESCRIPTION = "uinfo_facet_salix_mnwmw.description"; + public static final String FACET_SALIX_LINE_RAW = "uinfo_facet_salix_line"; - public static final String FACET_SALIX_SCENARIO = "uinfo_facet_salix_scenario"; + private static final String FACET_SALIX_LINE_RAW_DESCRIPTION = "uinfo_facet_salix_line.raw.description"; - private static final String FACET_SALIX_SCENARIO_DESCRIPTION = "uinfo_facet_salix_scenario.description"; + private static final String FACET_SALIX_MNWMW_FILTERED = "uinfo_facet_salix_mnwmw.filtered"; + + private static final String FACET_SALIX_MNWMW_FILTERED_DESCRIPTION = "uinfo_facet_salix_mnwmw.filtered.description"; + + public static final String FACET_SALIX_MNWMW_RAW = "uinfo_facet_salix_mnwmw"; + + private static final String FACET_SALIX_MNWMW_RAW_DESCRIPTION = "uinfo_facet_salix_mnwmw.raw.description"; + + public static final String FACET_SALIX_SCENARIO_FILTERED = "uinfo_facet_salix_scenario.filtered"; + + private static final String FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION = "uinfo_facet_salix_scenario.filtered.description"; + + public static final String FACET_SALIX_SCENARIO_RAW = "uinfo_facet_salix_scenario"; + + private static final String FACET_SALIX_SCENARIO_RAW_DESCRIPTION = "uinfo_facet_salix_scenario.raw.description"; + + public static final String FACET_SALIX_RANK = "uinfo_facet_salix_rank"; + + private static final String FACET_SALIX_RANK_DESCRIPTION = "uinfo_facet_salix_rank.description"; + + private static final String I18N_AXIS_LABEL = "uinfo.chart.salix_line.section.yaxis.label"; private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); static { - HANDLED_FACET_TYPES.add(FACET_SALIX_LINE); - HANDLED_FACET_TYPES.add(FACET_SALIX_MNWMW); - HANDLED_FACET_TYPES.add(FACET_SALIX_SCENARIO); - } - - public static Facet createSalixLineFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { - - final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_LINE_DESCRIPTION, FACET_SALIX_LINE_DESCRIPTION); - return new SalixLineResultFacet(facetIndex, resultIndex, FACET_SALIX_LINE, description, WOutProcessor.I18N_AXIS_LABEL, id, hash); - } - - public static Facet createSalixMnwMwFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { - - final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_MNWMW_DESCRIPTION, FACET_SALIX_MNWMW_DESCRIPTION); - return new SalixMnwMwResultFacet(facetIndex, resultIndex, FACET_SALIX_MNWMW, description, WOutProcessor.I18N_AXIS_LABEL, id, hash); - } - - public static Facet createSalixScenarioFacet(final CallContext context, final String hash, final String id, final int dataIndex, final int resultIndex, - final int facetIndex, final String subLabel) { - - final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_DESCRIPTION, FACET_SALIX_SCENARIO_DESCRIPTION, subLabel); - return new SalixScenarioResultFacet(facetIndex, resultIndex, dataIndex, FACET_SALIX_SCENARIO, description, WOutProcessor.I18N_AXIS_LABEL, hash, id); + HANDLED_FACET_TYPES.add(FACET_SALIX_LINE_FILTERED); + HANDLED_FACET_TYPES.add(FACET_SALIX_LINE_RAW); + HANDLED_FACET_TYPES.add(FACET_SALIX_MNWMW_FILTERED); + HANDLED_FACET_TYPES.add(FACET_SALIX_MNWMW_RAW); + HANDLED_FACET_TYPES.add(FACET_SALIX_SCENARIO_FILTERED); + HANDLED_FACET_TYPES.add(FACET_SALIX_SCENARIO_RAW); + HANDLED_FACET_TYPES.add(FACET_SALIX_RANK); } public SalixLineProcessor() { - super(WOutProcessor.I18N_AXIS_LABEL, HANDLED_FACET_TYPES); + super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); + } + + public static Facet createSalixLineFilteredFacet(final CallContext context, final String hash, final String id, final int facetIndex, + final int resultIndex) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_LINE_FILTERED_DESCRIPTION, FACET_SALIX_LINE_FILTERED_DESCRIPTION); + return new SalixLineResultFacet(facetIndex, resultIndex, FACET_SALIX_LINE_FILTERED, description, I18N_AXIS_LABEL, id, hash); + } + + public static Facet createSalixLineRawFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_LINE_RAW_DESCRIPTION, FACET_SALIX_LINE_RAW_DESCRIPTION); + return new SalixLineResultFacet(facetIndex, resultIndex, FACET_SALIX_LINE_RAW, description, I18N_AXIS_LABEL, id, hash); + } + + public static Facet createSalixMnwMwFilteredFacet(final CallContext context, final String hash, final String id, final int facetIndex, + final int resultIndex) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_MNWMW_FILTERED_DESCRIPTION, FACET_SALIX_MNWMW_FILTERED_DESCRIPTION); + return new SalixMnwMwResultFacet(facetIndex, resultIndex, FACET_SALIX_MNWMW_FILTERED, description, I18N_AXIS_LABEL, id, hash); + } + + public static Facet createSalixMnwMwRawFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_MNWMW_RAW_DESCRIPTION, FACET_SALIX_MNWMW_RAW_DESCRIPTION); + return new SalixMnwMwResultFacet(facetIndex, resultIndex, FACET_SALIX_MNWMW_RAW, description, I18N_AXIS_LABEL, id, hash); + } + + public static Facet createSalixScenarioFilteredFacet(final CallContext context, final String hash, final String id, final int dataIndex, + final int resultIndex, final int facetIndex, final String subLabel) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, + FACET_SALIX_SCENARIO_FILTERED_DESCRIPTION, subLabel); + return new SalixScenarioResultFacet(facetIndex, resultIndex, dataIndex, FACET_SALIX_SCENARIO_FILTERED, description, I18N_AXIS_LABEL, hash, id); + } + + public static Facet createSalixScenarioRawFacet(final CallContext context, final String hash, final String id, final int dataIndex, final int resultIndex, + final int facetIndex, final String subLabel) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_SCENARIO_RAW_DESCRIPTION, FACET_SALIX_SCENARIO_RAW_DESCRIPTION, subLabel); + return new SalixScenarioResultFacet(facetIndex, resultIndex, dataIndex, FACET_SALIX_SCENARIO_RAW, description, I18N_AXIS_LABEL, hash, id); + } + + public static Facet createSalixRankFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) { + + final String description = Resources.getMsg(context.getMeta(), FACET_SALIX_RANK_DESCRIPTION, FACET_SALIX_RANK_DESCRIPTION); + return new SalixRankResultFacet(facetIndex, resultIndex, FACET_SALIX_RANK, description, I18N_AXIS_LABEL, id, hash); } @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { // log.debug("Processing facet: " + bundle.getFacetName()); - final CallContext context = generator.getContext(); - final SalixLineCalculationResult data = (SalixLineCalculationResult) bundle.getData(context); - if (bundle.getFacetName().equals(FACET_SALIX_LINE)) { - return buildSeriesForType(generator, bundle, theme, visible, UInfoResultType.salixline, GAP_DISTANCE); - } - - if (bundle.getFacetName().equals(FACET_SALIX_MNWMW)) { - return buildSeriesForType(generator, bundle, theme, visible, UInfoResultType.salix_mw_mnw, GAP_DISTANCE); - } - - if (bundle.getFacetName().equals(FACET_SALIX_SCENARIO)) { + if (bundle.getFacetName().equals(FACET_SALIX_SCENARIO_FILTERED) || bundle.getFacetName().equals(FACET_SALIX_SCENARIO_RAW)) { + final CallContext context = generator.getContext(); + final SalixLineCalculationResult data = (SalixLineCalculationResult) bundle.getData(context); final int dataIndex = ((SalixScenarioResultFacet) bundle.getFacet()).getDataIndex(); final double[][] scenarioPoints = data.getScenarioPoints(dataIndex); return buildSeriesForPoints(scenarioPoints, generator, bundle, theme, visible, GAP_DISTANCE); } - throw new UnsupportedOperationException(); + if (bundle.getFacetName().equals(FACET_SALIX_RANK)) { + // TODO return buildSeriesForType(generator, bundle, theme, visible, UInfoResultType.salixline, GAP_DISTANCE); + } + + return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), GAP_DISTANCE); + } + + protected UInfoResultType doGetType(final String facetName) { + + if (FACET_SALIX_LINE_FILTERED.contentEquals(facetName)) + return UInfoResultType.salixline; + if (FACET_SALIX_LINE_RAW.contentEquals(facetName)) + return UInfoResultType.salixline; + + if (FACET_SALIX_MNWMW_FILTERED.contentEquals(facetName)) + return UInfoResultType.salix_mw_mnw; + if (FACET_SALIX_MNWMW_RAW.contentEquals(facetName)) + return UInfoResultType.salix_mw_mnw; + + final String error = String.format("Unknown facet name: %s", facetName); + throw new UnsupportedOperationException(error); } } \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineState.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineState.java Thu Aug 02 17:47:20 2018 +0200 @@ -80,8 +80,11 @@ int facetIndex = 0; if (!resultList.isEmpty()) { - facets.add(SalixLineProcessor.createSalixLineFacet(context, hash, this.id, facetIndex++, 0)); - facets.add(SalixLineProcessor.createSalixMnwMwFacet(context, hash, this.id, facetIndex++, 0)); + facets.add(SalixLineProcessor.createSalixLineFilteredFacet(context, hash, this.id, facetIndex++, 0)); + facets.add(SalixLineProcessor.createSalixLineRawFacet(context, hash, this.id, facetIndex++, 0)); + facets.add(SalixLineProcessor.createSalixMnwMwFilteredFacet(context, hash, this.id, facetIndex++, 0)); + facets.add(SalixLineProcessor.createSalixMnwMwRawFacet(context, hash, this.id, facetIndex++, 0)); + facets.add(SalixLineProcessor.createSalixRankFacet(context, hash, this.id, facetIndex++, 0)); final SalixLineCalculationResult result = resultList.get(0); @@ -90,7 +93,8 @@ result.getScenarioLabel(i)); // REMARK: using data index as facetIndex, as we know there is only one result of this type. Else we should just // increment - facets.add(SalixLineProcessor.createSalixScenarioFacet(context, hash, this.id, i, 0, facetIndex++, sublabel)); + facets.add(SalixLineProcessor.createSalixScenarioFilteredFacet(context, hash, this.id, i, 0, facetIndex++, sublabel)); + facets.add(SalixLineProcessor.createSalixScenarioRawFacet(context, hash, this.id, i, 0, facetIndex++, sublabel)); } final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixRankResultFacet.java Thu Aug 02 17:47:20 2018 +0200 @@ -0,0 +1,46 @@ +/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ + +package org.dive4elements.river.artifacts.uinfo.salix; + +import org.apache.log4j.Logger; +import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.river.artifacts.common.ResultFacet; +import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; + +/** + * Facet of the U-Info salix rank areas. + */ +public class SalixRankResultFacet extends ResultFacet { + + private static final long serialVersionUID = 1L; + + private static Logger log = Logger.getLogger(SalixRankResultFacet.class); + + public SalixRankResultFacet() { + // required for clone operation deepCopy() + } + + public SalixRankResultFacet(final int facetIndex, final int resultIndex, final String name, final String description, final String yAxisLabelKey, + final String stateId, final String hash) { + super(facetIndex, resultIndex, name, description, yAxisLabelKey, ComputeType.ADVANCE, stateId, hash); + } + + /** Copy deeply. */ + @Override + public Facet deepCopy() { + // FIXME: why not simply use the full constructor instead? + final SalixRankResultFacet copy = new SalixRankResultFacet(); + // FIXME: why does DataFacet does not override set? Bad access to variables of parent! + copy.set(this); + copy.type = this.type; + copy.hash = this.hash; + copy.stateId = this.stateId; + return copy; + } +} \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/utils/DoubleUtil.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/DoubleUtil.java Thu Aug 02 17:47:20 2018 +0200 @@ -58,11 +58,12 @@ } public static final double round(double x, double precision) { + // REMARK/FIXME: Gives 0 for NaN - is this intended? return Math.round(x * precision)/precision; } public static final double round(double x) { - return Math.round(x * DEFAULT_STEP_PRECISION)/DEFAULT_STEP_PRECISION; + return round(x, DEFAULT_STEP_PRECISION); } /**
--- a/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java Thu Aug 02 17:47:20 2018 +0200 @@ -386,6 +386,8 @@ } public static double roundFlowDepth(final double value) { + if (Double.isNaN(value)) + return Double.NaN; return Math.round(value * FLOWDEPTH_ROUND_MULT) / FLOWDEPTH_ROUND_MULT; } @@ -394,6 +396,8 @@ } public static double roundW(final double value) { + if (Double.isNaN(value)) + return Double.NaN; return Math.round(value * W_ROUND_MULT) / W_ROUND_MULT; }
--- a/artifacts/src/main/resources/messages.properties Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/resources/messages.properties Thu Aug 02 17:47:20 2018 +0200 @@ -168,8 +168,8 @@ scenario.scenario = Scenario floodplain.option = Use Floodplain? -floodplain.active = Activ -floodplain.inactive = Inactiv +floodplain.active = Active +floodplain.inactive = Inactive outlier.method.grubbs=Grubbs outlier.method.std-dev=Residual standard error @@ -845,8 +845,8 @@ help.state.sinfo.flow_depth_development = ${help.url}/OnlineHilfe/SINFO#help.state.sinfo.flow_depth_development useTransportBodies.option = Transportk\u00f6rperh\u00f6hen miteinbeziehen? -useTransportBodies.active = Activ -useTransportBodies.inactive = Inactiv +useTransportBodies.active = Active +useTransportBodies.inactive = Inactive state.sinfo.flowdepthdevlopment_current_select = Aktuelles Differenzenpaar help.state.sinfo.flowdepthdevlopment_current_select = ${help.url}/OnlineHilfe/SINFO#help.state.sinfo.flowdepthdevlopment_current_select @@ -1084,8 +1084,8 @@ state.uinfo.inundation.scenario = Werte f\u00fcr \u00c4nderung der Sohl- bzw. Mittelwasserlage eingeben state.uinfo.use_scenario=Szenariobetrachtung useScenario.option = Zus\u00e4tzlich Szenariobetrachtung miteinbeziehen? -useScenario.active = Activ -useScenario.inactive = Inactiv +useScenario.active = Active +useScenario.inactive = Inactive help.state.uinfo.use_scenario=${help.url}/OnlineHilfe/UINFO#help.state.uinfo.use_scenario state.uinfo.scenario_type = Szenariotyp @@ -1139,15 +1139,24 @@ uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario ({0}, {1}cm) uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario ({0}, {1}cm) uinfo.chart.salix_line.section.title = Salix-Linie (Fluss/Aue-Konnektivit\u00e4t) - L\u00e4ngsschnitt +uinfo.chart.salix_line.section.yaxis.label = [m] uinfo_facet_salix_line = Salix-Linie -uinfo_facet_salix_line.description = Salix-Linie +uinfo_facet_salix_line.filtered.description = Salix-Linie +uinfo_facet_salix_line.raw.description = Salix-Linie (Rohdaten) uinfo_facet_salix_mnwmw = (MW-MNW)x(-1) -uinfo_facet_salix_mnwmw.description = (MW-MNW)x(-1) +uinfo_facet_salix_mnwmw.filtered.description = (MW-MNW)x(-1) +uinfo_facet_salix_mnwmw.raw.description = (MW-MNW)x(-1) (Rohdaten) uinfo_facet_salix_scenario = Salix-Linie Szenario, {0} -uinfo_facet_salix_scenario.description = Salix-Linie Szenario, {0} +uinfo_facet_salix_scenario.filtered.description = Salix-Linie Szenario, {0} +uinfo_facet_salix_scenario.raw.description = Salix-Linie Szenario, {0} (Rohdaten) uinfo_salix_scenario_deltaw = \u0394MW={0} uinfo_salix_scenario_supraregional = \u00fcberregional uinfo_salix_scenario_historical = historisch +uinfo_facet_salix_rank = Bewertungsschema +uinfo_facet_salix_rank.description = Bewertungsschema +uinfo_salix_calc.warning.missing_mq = MQ (MW) missing at reference gauge, no calculation possible +uinfo_salix_calc.warning.missing_mhq = MHQ (MHW) missing at reference gauge, no salix calculation possible +uinfo_salix_calc.warning.missing_mnq = MNQ (MNW) missing at reference gauge, no (MW-MNW) calculation possible predefineddepthevol.total.title = Gesamt: {0} predefineddepthevol.peryear.title = J\u00e4hrlich: {0}
--- a/artifacts/src/main/resources/messages_de.properties Thu Aug 02 17:39:13 2018 +0200 +++ b/artifacts/src/main/resources/messages_de.properties Thu Aug 02 17:47:20 2018 +0200 @@ -1139,15 +1139,24 @@ uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario ({0}, {1}cm) uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario ({0}, {1}cm) uinfo.chart.salix_line.section.title = Salix-Linie (Fluss/Aue-Konnektivit\u00e4t) - L\u00e4ngsschnitt +uinfo.chart.salix_line.section.yaxis.label = [m] uinfo_facet_salix_line = Salix-Linie -uinfo_facet_salix_line.description = Salix-Linie +uinfo_facet_salix_line.filtered.description = Salix-Linie +uinfo_facet_salix_line.raw.description = Salix-Linie (Rohdaten) uinfo_facet_salix_mnwmw = (MW-MNW)x(-1) -uinfo_facet_salix_mnwmw.description = (MW-MNW)x(-1) +uinfo_facet_salix_mnwmw.filtered.description = (MW-MNW)x(-1) +uinfo_facet_salix_mnwmw.raw.description = (MW-MNW)x(-1) (Rohdaten) uinfo_facet_salix_scenario = Salix-Linie Szenario, {0} -uinfo_facet_salix_scenario.description = Salix-Linie Szenario, {0} +uinfo_facet_salix_scenario.filtered.description = Salix-Linie Szenario, {0} +uinfo_facet_salix_scenario.raw.description = Salix-Linie Szenario, {0} (Rohdaten) uinfo_salix_scenario_deltaw = \u0394MW={0} uinfo_salix_scenario_supraregional = \u00fcberregional uinfo_salix_scenario_historical = historisch +uinfo_facet_salix_rank = Bewertungsschema +uinfo_facet_salix_rank.description = Bewertungsschema +uinfo_salix_calc.warning.missing_mq = MQ (MW) fehlt am Bezugspegel, Berechnung nicht m\u00fglich +uinfo_salix_calc.warning.missing_mhq = MHQ (MHW) fehlt am Bezugspegel, Berechnung der Salix-Linie nicht m\u00fglich +uinfo_salix_calc.warning.missing_mnq = MNQ (MNW) fehlt am Bezugspegel, Berechnung von (MW-MNW) nicht m\u00fglich predefineddepthevol.total.title = Gesamt: {0} predefineddepthevol.peryear.title = J\u00e4hrlich: {0} @@ -1273,6 +1282,6 @@ state.title.distance_state = Berechnungsstrecke w\u00e4hlen [km] state.title.location_distance_state = Berechnungsort(e) / strecke w\u00e4hlen [km] state.title.distance_part_state = Festlegen eines Teilabschnitts +state.title.salix.historical.distance_part_state = Festlegen eines Teilabschnitts state.title.uinfo.bezugswst.miss_vol.distance_part_state = Strecke der zu ermittelnden Fehltiefen w\u00e4hlen [km] -state.title.salix.historical.distance_part_state = Festlegen eines Teilabschnitts state.title.distance_only_inundationduration_state = Darstellungsbereich w\u00e4hlen [km] \ No newline at end of file