Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java @ 9612:f8308db94634
#20 UI, Diagramme
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 09 Oct 2019 16:17:16 +0200 |
parents | f318359b81a2 |
children | d889ffe2fb05 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java Wed Oct 09 15:58:46 2019 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java Wed Oct 09 16:17:16 2019 +0200 @@ -10,7 +10,9 @@ package org.dive4elements.river.artifacts.sinfo.flood_duration; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.dive4elements.artifactdatabase.state.Facet; @@ -25,7 +27,7 @@ import org.dive4elements.river.artifacts.model.ReportFacet; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; -import org.dive4elements.river.artifacts.sinfo.flood_duration.RiversideRadioChoice.RiversideChoiceKey; +import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult.Infrastructure; import org.dive4elements.river.artifacts.states.DefaultState; import org.dive4elements.river.model.Attribute.AttributeKey; @@ -80,6 +82,7 @@ int resultIndex = 0; int themeCount = 0; + for (final FloodDurationCalculationResult result : resultList) { if (resultIndex == 0) { @@ -92,51 +95,45 @@ } final FloodDurationAccess access = new FloodDurationAccess(sinfo); - if ((access.getRiverside() == RiversideChoiceKey.LEFT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) - facets.add(FloodDurationProcessor.createFloodDurationFacet(context, hash, this.id, result, 0, resultIndex)); - if ((access.getRiverside() == RiversideChoiceKey.RIGHT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) - facets.add(FloodDurationProcessor.createFloodDurationFacet(context, hash, this.id, result, 1, resultIndex)); final int waterlevelCount = result.getWaterlevelCount(); - if ((access.getRiverside() == RiversideChoiceKey.LEFT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) - facets.add(FloodHeightProcessor.createFloodHeightFacet(context, hash, this.id, result, 0, resultIndex)); - if ((access.getRiverside() == RiversideChoiceKey.RIGHT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) - facets.add(FloodHeightProcessor.createFloodHeightFacet(context, hash, this.id, result, 1, resultIndex)); - for (int j = 0; j < waterlevelCount; j++) { // final String waterlevelLabel = result.getMainValueLabel(j); // FIXME: use label as label for theme // final int facetIndex, final int resultIndex, final int dataIndex - facets.add(FloodDurationProcessor.createMainValueDurationFacet(context, hash, this.id, result, themeCount, resultIndex, j)); - facets.add(FloodHeightProcessor.createMainValueHeightFacet(context, hash, this.id, result, themeCount, resultIndex, j)); + facets.add(FloodDurationProcessor.createMainValueDurationFacet(context, hash, this.id, result, themeCount++, resultIndex, j)); + facets.add(FloodHeightProcessor.createMainValueHeightFacet(context, hash, this.id, result, themeCount++, resultIndex, j)); - themeCount++; } final String nameW = Resources.getMsg(context.getMeta(), "sinfo.chart.flood_duration.curve.w"); final String nameQ = Resources.getMsg(context.getMeta(), "sinfo.chart.flood_duration.curve.q"); - facets.add(FloodDurationCurveProcessor.createFloodDurationWCurveFacet(context, hash, this.id, result, 0, resultIndex, nameW)); - facets.add(FloodDurationCurveProcessor.createFloodDurationQCurveFacet(context, hash, this.id, result, 1, resultIndex, nameQ)); + facets.add(FloodDurationCurveProcessor.createFloodDurationWCurveFacet(context, hash, this.id, result, themeCount++, resultIndex, nameW)); + facets.add(FloodDurationCurveProcessor.createFloodDurationQCurveFacet(context, hash, this.id, result, themeCount++, resultIndex, nameQ)); if (waterlevelCount >= 1) { - facets.add(FloodDurationCurveProcessor.createMainValuesWFacet(context, hash, this.id, result, 0, resultIndex, + facets.add(FloodDurationCurveProcessor.createMainValuesWFacet(context, hash, this.id, result, themeCount++, resultIndex, Resources.getMsg(context.getMeta(), "sinfo.chart.flood_duration.curve.mainw"))); - facets.add(FloodDurationCurveProcessor.createMainValuesQFacet(context, hash, this.id, result, 1, resultIndex, - Resources.getMsg(context.getMeta(), "sinfo.chart.flood_duration.curve.mainq"))); + facets.add(FloodDurationCurveProcessor.createMainValuesQFacet(context, hash, this.id, result, themeCount++, resultIndex, + Resources.getMsg(context.getMeta(), "sinfo.chart.flood_duration.curve.mainq"), null)); } - if ((access.getRiverside() == RiversideChoiceKey.LEFT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) { - facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, 0, resultIndex, - Resources.getMsg(context.getMeta(), "sinfo_facet_flood_duration_curve.infra.w.left.description"), AttributeKey.LEFT, true)); - facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, 0, resultIndex, - Resources.getMsg(context.getMeta(), "sinfo_facet_flood_duration_curve.infra.q.left.description"), AttributeKey.LEFT, false)); + + final AttributeKey choice = access.getRiverside().getAttributeKey(); + + for (final AttributeKey riversideC : getRiversides(choice)) { + facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, themeCount++, resultIndex, true, riversideC)); + + facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, themeCount++, resultIndex, false, riversideC)); } - if ((access.getRiverside() == RiversideChoiceKey.RIGHT) || (access.getRiverside() == RiversideChoiceKey.BOTH)) { - facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, 0, resultIndex, - Resources.getMsg(context.getMeta(), "sinfo_facet_flood_duration_curve.infra.w.right.description"), AttributeKey.RIGHT, true)); - facets.add(FloodDurationCurveProcessor.createInfrastructureFacet(context, hash, this.id, result, 0, resultIndex, - Resources.getMsg(context.getMeta(), "sinfo_facet_flood_duration_curve.infra.q.right.description"), AttributeKey.RIGHT, false)); + + final Set<Infrastructure> infrastructures = result.getInfastructureMap(); + for (final Infrastructure entry : infrastructures) { + + facets.add(FloodDurationProcessor.createFloodDurationFacet(context, hash, this.id, result, themeCount++, resultIndex, entry)); + + facets.add(FloodHeightProcessor.createFloodHeightFacet(context, hash, this.id, result, themeCount++, resultIndex, entry)); } facets.add(new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id)); @@ -152,6 +149,20 @@ return res; } + private Set<AttributeKey> getRiversides(final AttributeKey choice) { + final Set<AttributeKey> usedRiversides = new HashSet<>(); + if (choice.equals(AttributeKey.LEFT)) + usedRiversides.add(AttributeKey.LEFT); + else if (choice.equals(AttributeKey.RIGHT)) + usedRiversides.add(AttributeKey.RIGHT); + + else { + usedRiversides.add(AttributeKey.RIGHT); + usedRiversides.add(AttributeKey.LEFT); + } + return usedRiversides; + } + private CalculationResult doCompute(final SINFOArtifact sinfo, final CallContext context, final Object old) { if (old instanceof CalculationResult) return (CalculationResult) old;