# HG changeset patch # User gernotbelger # Date 1530282563 -7200 # Node ID 6393e05a96103fd2ffaf0920bb7acd53c1a08f7c # Parent d177121fc95d76c3cb6b996f466f22ebef48bfa3 refactoring on processors diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonExporter.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonExporter.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonExporter.java Fri Jun 29 16:29:23 2018 +0200 @@ -93,15 +93,6 @@ protected abstract void writeCSVGlobalMetadata(final ExportContextCSV exportContext, final RESULTS results); - /** - * Formats header with unit and label: msg [unit] (label) - */ - // TODO: REMOVE, because it has moved to ExportContextCSV - protected final String msgUnitLabel(final String key, final String unit, final String label) { - final String msg = msg(key); - return String.format("%s [%s] (%s)", msg, unit, label); - } - @Override protected final void writePDF(final OutputStream out) { doWritePdf(out, this.results); diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionFacet.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionFacet.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionFacet.java Fri Jun 29 16:29:23 2018 +0200 @@ -17,6 +17,7 @@ import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.common.DefaultCalculationResult; import org.dive4elements.river.artifacts.common.GeneralResultType; import org.dive4elements.river.artifacts.common.ResultRow; import org.dive4elements.river.artifacts.model.BlackboardDataFacet; @@ -63,7 +64,7 @@ rows.add(ResultRow.create().putValue(GeneralResultType.station, value.getStation()) // .putValue(SInfoResultType.collisionCount, value.getCount()).putValue(SInfoResultType.collisionGaugeW, value.getGaugeW())); } - return new CollisionCalcOverviewResult(series.getFilename(), rows); + return new DefaultCalculationResult(series.getFilename(), rows); } /** diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoLineProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoLineProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoLineProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -30,6 +30,15 @@ import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; +/** + * + * @author Domenico Nardi Tironi + * + * @deprecated Use + * {@link AbstractSInfoProcessor#buildSeriesForType(DiagramGenerator, ArtifactAndFacet, ThemeDocument, boolean, org.dive4elements.river.artifacts.common.IResultType, Double)} + * instead + */ +@Deprecated abstract class AbstractSInfoLineProcessor extends AbstractSInfoProcessor { private static final double GAP_DISTANCE = 0.101; @@ -38,6 +47,7 @@ super(i18nAxisLabel, handledFacetType); } + // FIXME: @Override protected final String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -10,12 +10,25 @@ package org.dive4elements.river.artifacts.sinfo.common; +import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.access.RiverAccess; +import org.dive4elements.river.artifacts.common.AbstractCalculationResult; +import org.dive4elements.river.artifacts.common.IResultType; +import org.dive4elements.river.artifacts.context.RiverContext; +import org.dive4elements.river.artifacts.math.MovingAverage; +import org.dive4elements.river.artifacts.model.ZoomScale; import org.dive4elements.river.exports.DiagramGenerator; +import org.dive4elements.river.exports.StyledSeriesBuilder; import org.dive4elements.river.exports.process.DefaultProcessor; +import org.dive4elements.river.jfree.StyledAreaSeriesCollection; +import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -27,6 +40,8 @@ */ public abstract class AbstractSInfoProcessor extends DefaultProcessor { + protected static final double GAP_DISTANCE = 0.101; + private final static Logger log = Logger.getLogger(AbstractSInfoProcessor.class); private String yAxisLabel; @@ -55,6 +70,103 @@ */ protected abstract String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible); + protected final String buildSeriesForType(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, + final IResultType resultType, final Double gapDistance) { + final CallContext context = generator.getContext(); + final Map metaData = bundle.getFacet().getMetaData(); + + final Artifact artifact = bundle.getArtifact(); + + final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); + series.putMetaData(metaData, artifact, context); + + final String facetName = bundle.getFacetName(); + + final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); + if (data == null) { + // Check has been here before so we keep it for security reasons + // this should never happen though. + throw new IllegalStateException("Data is null for facet: " + facetName); + } + + final double[][] points = generatePoints(context, artifact, data, facetName, resultType); + + if (gapDistance == null) + StyledSeriesBuilder.addPoints(series, points, true); + else + StyledSeriesBuilder.addPoints(series, points, true, gapDistance); + + generator.addAxisSeries(series, getAxisName(), visible); + + return metaData.get("Y"); + } + + protected final String buildSeriesForTkh(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, + final boolean visible) { + final CallContext context = generator.getContext(); + + final String facetName = bundle.getFacetName(); + final AbstractTkhCalculationResult data = (AbstractTkhCalculationResult) bundle.getData(context); + if (data == null) { + // Check has been here before so we keep it for security reasons + // this should never happen though. + throw new IllegalStateException("Data is null for facet: " + facetName); + } + + final StyledXYSeries seriesUp = new StyledXYSeries(bundle.getFacetDescription(), theme); + final double[][] pointsUp = data.getTkhUpPoints(); + StyledSeriesBuilder.addPoints(seriesUp, pointsUp, true); + + // REMARK: we add " " because the description is misused as id, which must be unique. + final StyledXYSeries seriesDown = new StyledXYSeries(bundle.getFacetDescription() + " ", theme); + final double[][] pointsDown = data.getTkhDownPoints(); + StyledSeriesBuilder.addPoints(seriesDown, pointsDown, true); + + final StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); + area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); + area.addSeries(seriesUp); + area.addSeries(seriesDown); + + generator.addAreaSeries(area, getAxisName(), visible); + + return null; + } + + private Double findRadius(final CallContext context, final Artifact artifact) { + final Double start = (Double) context.getContextValue("startkm"); + final Double end = (Double) context.getContextValue("endkm"); + + if (start == null || end == null) + return null; + + final RiverContext fc = (RiverContext) context.globalContext(); + final ZoomScale scales = (ZoomScale) fc.get("zoomscale"); + final RiverAccess access = new RiverAccess((D4EArtifact) artifact); + final String river = access.getRiverName(); + + return scales.getRadius(river, start, end); + } + + private double[][] generatePoints(final CallContext context, final Artifact artifact, final AbstractCalculationResult data, final String facetName, + final IResultType resultType) { + + final double[][] points = data.getStationPoints(resultType); + if (facetName.endsWith(".filtered")) { + final Double radius = findRadius(context, artifact); + return movingAverage(radius, points); + } + + return points; + } + + private double[][] movingAverage(final Double radius, final double[][] points) { + + if (radius == null) + return points; + + return MovingAverage.weighted(points, radius); + } + @Override public final boolean canHandle(final String facettype) { return this.handled_facet_types.contains(facettype); diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCalcProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCalcProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCalcProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,21 +11,16 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.common.AbstractCalculationResult; -import org.dive4elements.river.artifacts.common.IResultType; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.collision.CollisionCalcFacet; import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -55,35 +50,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.collisionCount); - } - - // FIXME: move to super classs and use in many implementations - protected final String buildSeriesForType(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, - final IResultType resultType) { - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(resultType); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.collisionCount, null); } public static final Facet createFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCountProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCountProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCountProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; import org.dive4elements.river.artifacts.resources.Resources; -import org.dive4elements.river.artifacts.sinfo.collision.CollisionCalcOverviewResult; import org.dive4elements.river.artifacts.sinfo.collision.CollisionFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -53,37 +47,15 @@ super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); } - @Override - protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - - final CollisionCalcOverviewResult data = (CollisionCalcOverviewResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.collisionCount); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); - } - public static Facet createFacet(final CallMeta callMeta, final String seriesName) { return new CollisionFacet(FACET_COLLISION_COUNT, Resources.getMsg(callMeta, I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, seriesName), I18N_AXIS_LABEL); } + @Override + protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { + + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.collisionCount, null); + } + } \ No newline at end of file diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/D50Processor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/D50Processor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/D50Processor.java Fri Jun 29 16:29:23 2018 +0200 @@ -13,11 +13,14 @@ import java.util.HashSet; import java.util.Set; +import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.common.AbstractCalculationResult; +import org.dive4elements.river.exports.DiagramGenerator; +import org.dive4elements.river.themes.ThemeDocument; -public final class D50Processor extends AbstractSInfoLineProcessor { +public final class D50Processor extends AbstractSInfoProcessor { public static final String FACET_TKH_D50_FILTERED = "sinfo_facet_d50"; @@ -38,10 +41,11 @@ } @Override - protected double[][] doGetPoints(final AbstractTkhCalculationResult data, final String facetName) { + protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { + final String facetName = bundle.getFacetName(); if (FACET_TKH_D50_FILTERED.contentEquals(facetName)) - return data.getStationPoints(SInfoResultType.d50); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.d50, GAP_DISTANCE); final String error = String.format("Unknown facet name: %s", facetName); throw new UnsupportedOperationException(error); diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/InfrastructureHeightProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/InfrastructureHeightProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/InfrastructureHeightProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; -import org.dive4elements.river.artifacts.common.AbstractCalculationResult; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.flood_duration.InfrastructureFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -56,28 +50,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.infrastructureHeight); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.infrastructureHeight, null); } public static Facet createFacet(final CallMeta callMeta, final String seriesName) { diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelDepthProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelDepthProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelDepthProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; -import org.dive4elements.river.artifacts.common.AbstractCalculationResult; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.predefinedchannel.PredefinedChannelFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -53,35 +47,14 @@ super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); } - @Override - protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.channelDepth); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); - } - public static Facet createFacet(final CallMeta callMeta, final String seriesName) { return new PredefinedChannelFacet(FACET_PREDEFINED_CHANNEL_DEPTH, Resources.getMsg(callMeta, I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, seriesName), I18N_AXIS_LABEL); } + + @Override + protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { + + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.collisionCount, null); + } } \ No newline at end of file diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelWidthProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelWidthProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedChannelWidthProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; -import org.dive4elements.river.artifacts.common.AbstractCalculationResult; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.predefinedchannel.PredefinedChannelFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -56,32 +50,12 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.channelWidth); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.channelWidth, null); } public static Facet createFacet(final CallMeta callMeta, final String seriesName) { return new PredefinedChannelFacet(FACET_PREDEFINED_CHANNEL_WIDTH, Resources.getMsg(callMeta, I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, seriesName), I18N_AXIS_LABEL); } + } \ No newline at end of file diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolPerYearProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolPerYearProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolPerYearProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; -import org.dive4elements.river.artifacts.common.AbstractCalculationResult; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.predefineddepthevol.PredefinedDepthEvolFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -56,28 +50,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.flowdepthDevelopmentPerYear); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.flowdepthDevelopmentPerYear, null); } public static Facet createFacet(final CallMeta callMeta, final String seriesName) { diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedDepthEvolProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -11,20 +11,14 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; -import org.dive4elements.artifacts.Artifact; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; -import org.dive4elements.river.artifacts.common.AbstractCalculationResult; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.predefineddepthevol.PredefinedDepthEvolFacet; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -56,28 +50,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - final Map metaData = bundle.getFacet().getMetaData(); - - final Artifact artifact = bundle.getArtifact(); - - final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); - series.putMetaData(metaData, artifact, context); - - final String facetName = bundle.getFacetName(); - final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - - final double[][] points = data.getStationPoints(SInfoResultType.flowdepthDevelopment); - - StyledSeriesBuilder.addPoints(series, points, true); - generator.addAxisSeries(series, getAxisName(), visible); - - return metaData.get("Y"); + return buildSeriesForType(generator, bundle, theme, visible, SInfoResultType.flowdepthDevelopment, null); } public static Facet createFacet(final CallMeta callMeta, final String seriesName) { diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedFlowDepthProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedFlowDepthProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedFlowDepthProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -47,7 +47,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - + // TOO MANY DIFFERENCES TO super.buildSeriesForTkh(generator, bundle, theme, visible); final CallContext context = generator.getContext(); final Map metaData = bundle.getFacet().getMetaData(); diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedTkhProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedTkhProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/PredefinedTkhProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -14,11 +14,7 @@ import java.util.Set; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; -import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledAreaSeriesCollection; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; /** @@ -45,32 +41,7 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - - final String facetName = bundle.getFacetName(); - final AbstractTkhCalculationResult data = (AbstractTkhCalculationResult) bundle.getData(context); // differs from standard! - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } + return buildSeriesForTkh(generator, bundle, theme, visible); - final StyledXYSeries seriesUp = new StyledXYSeries(bundle.getFacetDescription(), theme); - final double[][] pointsUp = data.getTkhUpPoints(); - StyledSeriesBuilder.addPoints(seriesUp, pointsUp, true); - - // REMARK: we add " " because the description is misused as id, which must be unique. - final StyledXYSeries seriesDown = new StyledXYSeries(bundle.getFacetDescription() + " ", theme); - final double[][] pointsDown = data.getTkhDownPoints(); - StyledSeriesBuilder.addPoints(seriesDown, pointsDown, true); - - final StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); - area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); - area.addSeries(seriesUp); - area.addSeries(seriesDown); - - generator.addAreaSeries(area, getAxisName(), visible); - - return null; } } \ No newline at end of file diff -r d177121fc95d -r 6393e05a9610 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/TkhProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/TkhProcessor.java Fri Jun 29 16:15:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/TkhProcessor.java Fri Jun 29 16:29:23 2018 +0200 @@ -20,9 +20,6 @@ import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; import org.dive4elements.river.exports.DiagramGenerator; -import org.dive4elements.river.exports.StyledSeriesBuilder; -import org.dive4elements.river.jfree.StyledAreaSeriesCollection; -import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; public final class TkhProcessor extends AbstractSInfoProcessor { @@ -47,33 +44,9 @@ @Override protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { - final CallContext context = generator.getContext(); - - final String facetName = bundle.getFacetName(); - final AbstractTkhCalculationResult data = (AbstractTkhCalculationResult) bundle.getData(context); - if (data == null) { - // Check has been here before so we keep it for security reasons - // this should never happen though. - throw new IllegalStateException("Data is null for facet: " + facetName); - } - final StyledXYSeries seriesUp = new StyledXYSeries(bundle.getFacetDescription(), theme); - final double[][] pointsUp = data.getTkhUpPoints(); - StyledSeriesBuilder.addPoints(seriesUp, pointsUp, true); + return buildSeriesForTkh(generator, bundle, theme, visible); - // REMARK: we add " " because the description is misused as id, which must be unique. - final StyledXYSeries seriesDown = new StyledXYSeries(bundle.getFacetDescription() + " ", theme); - final double[][] pointsDown = data.getTkhDownPoints(); - StyledSeriesBuilder.addPoints(seriesDown, pointsDown, true); - - final StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); - area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); - area.addSeries(seriesUp); - area.addSeries(seriesDown); - - generator.addAreaSeries(area, getAxisName(), visible); - - return null; } public static Facet createTkhFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, final int index) {