# HG changeset patch # User Ingo Weinzierl # Date 1351056335 -7200 # Node ID b3aa91e45010f262756822f22cc4db16e21732f4 # Parent adcb8aee1910d8d790ccfdfdd9a77f143b62c0a2 Implemented the Q evaluation mode for historical discharge calculations. Added the calculation itself, created new facets, added themes and improved the chart generator to support the new facets. diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/doc/conf/artifacts/winfo.xml --- a/flys-artifacts/doc/conf/artifacts/winfo.xml Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/doc/conf/artifacts/winfo.xml Wed Oct 24 07:25:35 2012 +0200 @@ -570,6 +570,8 @@ + + diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/doc/conf/default-themes.xml --- a/flys-artifacts/doc/conf/default-themes.xml Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/doc/conf/default-themes.xml Wed Oct 24 07:25:35 2012 +0200 @@ -53,6 +53,32 @@ + + + + + + + + + + + + + + + + + + + + + + diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/doc/conf/second-themes.xml --- a/flys-artifacts/doc/conf/second-themes.xml Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/doc/conf/second-themes.xml Wed Oct 24 07:25:35 2012 +0200 @@ -40,6 +40,32 @@ + + + + + + + + + + + + + + + + + + + + + + diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/doc/conf/themes.xml --- a/flys-artifacts/doc/conf/themes.xml Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/doc/conf/themes.xml Wed Oct 24 07:25:35 2012 +0200 @@ -130,6 +130,8 @@ + + diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/HistoricalDischargeAccess.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/HistoricalDischargeAccess.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/HistoricalDischargeAccess.java Wed Oct 24 07:25:35 2012 +0200 @@ -8,14 +8,28 @@ public class HistoricalDischargeAccess extends RiverAccess { + public static enum EvaluationMode { + W, Q + } + public static final String DATA_EVALUATION_TIME = "year_range"; private Timerange evaluationTimerange; + private EvaluationMode evaluationMode; public HistoricalDischargeAccess(FLYSArtifact artifact) { super(artifact); } + public EvaluationMode getEvaluationMode() { + if (evaluationMode == null) { + int mode = getInteger("historical_mode"); + evaluationMode = mode == 0 ? EvaluationMode.W : EvaluationMode.Q; + } + + return evaluationMode; + } + public Timerange getEvaluationTimerange() { if (evaluationTimerange == null) { long[] startend = getLongArray(DATA_EVALUATION_TIME); diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation6.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation6.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation6.java Wed Oct 24 07:25:35 2012 +0200 @@ -18,24 +18,21 @@ private static final Logger logger = Logger.getLogger(Calculation6.class); - private int mode; - private long[] timerange; + private int mode; + private long[] timerange; private double[] values; - public static final int MODE_W = 0; public static final int MODE_Q = 1; public static final double SCALE = 1d; - public Calculation6(int mode, long[] timerange, double[] values) { - this.mode = mode; + this.mode = mode; this.timerange = timerange; - this.values = values; + this.values = values; } - public CalculationResult calculate(Gauge gauge) { if (!checkParameters() || gauge == null) { logger.warn("Parameters not valid for calculation."); @@ -47,7 +44,7 @@ debug(); } - DischargeTable refTable = fetchReferenceTable(gauge); + DischargeTable refTable = fetchReferenceTable(gauge); List dts = fetchDischargeTables(gauge); int numTables = dts.size(); @@ -65,7 +62,6 @@ return new CalculationResult(wqt, this); } - protected boolean checkParameters() { if (!(mode == MODE_W || mode == MODE_Q)) { logger.warn("Invalid mode '" + mode + "' for calculation."); @@ -85,17 +81,15 @@ return true; } - protected DischargeTable fetchReferenceTable(Gauge gauge) { return gauge.fetchMasterDischargeTable(); } - protected List fetchDischargeTables(Gauge gauge) { List relevant = new ArrayList(); - List all = gauge.getDischargeTables(); + List all = gauge.getDischargeTables(); - for (DischargeTable dt: all) { + for (DischargeTable dt : all) { if (isDischargeTableRelevant(dt)) { relevant.add(dt); } @@ -104,7 +98,6 @@ return relevant; } - protected boolean isDischargeTableRelevant(DischargeTable dt) { TimeInterval ti = dt.getTimeInterval(); @@ -112,14 +105,14 @@ return false; } - Date start = ti.getStartTime(); + Date start = ti.getStartTime(); long startTime = start.getTime(); if (startTime >= timerange[0] && startTime <= timerange[1]) { return true; } - Date stop = ti.getStopTime(); + Date stop = ti.getStopTime(); long stopTime = stop != null ? stop.getTime() : -1l; if (stopTime >= timerange[0] && stopTime <= timerange[1]) { @@ -131,11 +124,8 @@ return false; } - - protected WQTimerange[] prepareCalculationData( - DischargeTable refTable, - List dts - ) { + protected WQTimerange[] prepareCalculationData(DischargeTable refTable, + List dts) { if (refTable == null) { addProblem("cannot.find.hist.q.reftable"); return prepareSimpleData(dts); @@ -145,22 +135,20 @@ } } - protected WQTimerange[] prepareSimpleData(List dts) { - List wqts = - new ArrayList(values.length); + List wqts = new ArrayList(values.length); - for (double value: values) { + for (double value : values) { logger.debug("Prepare data for value: " + value); - String name = mode == MODE_W ? "W=" + value : "Q=" + value; - WQTimerange wqt = null; + String name = mode == MODE_W ? "W=" + value : "Q=" + value; + WQTimerange wqt = null; - for (DischargeTable dt: dts) { - Date[] ti = prepareTimeInterval(dt); + for (DischargeTable dt : dts) { + Date[] ti = prepareTimeInterval(dt); Timerange t = new Timerange(ti[0], ti[1]); - double w; - double q; + double w; + double q; if (mode == MODE_W) { w = value; @@ -174,7 +162,7 @@ } else { q = value; - w = findValueForQ(dt, q); + w = findValueForQ(dt, q, DischargeTables.HISTORICAL_SCALE); } logger.debug("Q=" + q + " | W=" + w); @@ -194,43 +182,42 @@ return wqts.toArray(new WQTimerange[wqts.size()]); } + protected HistoricalWQTimerange[] prepareData(DischargeTable refTable, + List dts) { + List wqts = new ArrayList( + values.length); - protected HistoricalWQTimerange[] prepareData( - DischargeTable refTable, - List dts - ) { - List wqts = - new ArrayList(values.length); - - for (double value: values) { + for (double value : values) { logger.debug("Prepare data plus diff for value: " + value); String name = mode == MODE_W ? "W=" + value : "Q=" + value; - HistoricalWQTimerange wqt = null; + HistoricalWQTimerange wqt = null; double ref; double diff; if (refTable != null && mode == MODE_W) { - ref = findValueForW(refTable, value, DischargeTables.MASTER_SCALE); + ref = findValueForW(refTable, value, + DischargeTables.MASTER_SCALE); } else if (refTable != null) { - ref = findValueForQ(refTable, value); + ref = findValueForQ(refTable, value, + DischargeTables.MASTER_SCALE); } else { ref = Double.NaN; } - for (DischargeTable dt: dts) { + for (DischargeTable dt : dts) { Date[] ti = prepareTimeInterval(dt); - Timerange t = new Timerange(ti[0] ,ti[1]); - double w; - double q; + Timerange t = new Timerange(ti[0], ti[1]); + double w; + double q; if (mode == MODE_W) { - w = value; - q = findValueForW(dt, w, DischargeTables.HISTORICAL_SCALE); + w = value; + q = findValueForW(dt, w, DischargeTables.HISTORICAL_SCALE); if (Double.isNaN(q)) { logger.warn("Cannot find Q for W: " + w); @@ -238,12 +225,18 @@ continue; } - diff = ref-q; + diff = ref - q; } else { - q = value; - w = findValueForQ(dt, q); - diff = ref-w; + q = value; + w = findValueForQ(dt, q, DischargeTables.HISTORICAL_SCALE); + + if (Double.isNaN(w)) { + logger.warn("Cannot find W for Q: " + q); + addProblem("cannot.find.hist.w.for.q", q, ti[0], ti[1]); + continue; + } + diff = ref - w; } logger.debug("Q=" + q + " | W=" + w + " | Ref = " + ref); @@ -260,16 +253,15 @@ } } - return (HistoricalWQTimerange[]) - wqts.toArray(new HistoricalWQTimerange[wqts.size()]); + return (HistoricalWQTimerange[]) wqts + .toArray(new HistoricalWQTimerange[wqts.size()]); } - protected Date[] prepareTimeInterval(DischargeTable dt) { TimeInterval ti = dt.getTimeInterval(); Date start = ti.getStartTime(); - Date end = ti.getStopTime(); + Date end = ti.getStopTime(); if (end == null) { logger.warn("TimeInterval has no stop time set!"); @@ -280,28 +272,25 @@ return new Date[] { start, end }; } - protected double findValueForW(DischargeTable dt, double w, double scale) { double[][] vs = DischargeTables.loadDischargeTableValues(dt, scale); - double [] qs = DischargeTables.getQsForW(vs, w); + double[] qs = DischargeTables.getQsForW(vs, w); return qs.length == 0 ? Double.NaN : qs[0]; } + protected double findValueForQ(DischargeTable dt, double q, double scale) { + double[][] vs = DischargeTables.loadDischargeTableValues(dt, scale); + double[] ws = DischargeTables.getWsForQ(vs, q); - protected double findValueForQ(DischargeTable dt, double q) { - double[][] vs = DischargeTables.loadDischargeTableValues(dt, SCALE); - logger.warn("TODO: IMPLEMENT ME!"); - - return 10; + return ws.length == 0 ? Double.NaN : ws[0]; } - /** * Writes the parameters used for this calculation to logger. */ public void debug() { StringBuilder sb = new StringBuilder(); - for (double value: values) { + for (double value : values) { sb.append(String.valueOf(value) + " "); } diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java Wed Oct 24 07:25:35 2012 +0200 @@ -216,6 +216,8 @@ String HISTORICAL_DISCHARGE_Q = "historical_discharge.historicalq"; String HISTORICAL_DISCHARGE_Q_DIFF = "historical_discharge.historicalq.diff"; + String HISTORICAL_DISCHARGE_W = "historical_discharge.historicalw"; + String HISTORICAL_DISCHARGE_W_DIFF = "historical_discharge.historicalw.diff"; String REFERENCE_CURVE = "reference_curve"; String REFERENCE_CURVE_NORMALIZED = "reference_curve_normalized"; diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java Wed Oct 24 07:25:35 2012 +0200 @@ -2,24 +2,22 @@ import java.util.List; +import org.apache.log4j.Logger; import org.w3c.dom.Element; -import org.apache.log4j.Logger; - +import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; - import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; - -import de.intevation.artifactdatabase.state.Facet; - import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.WINFOArtifact; +import de.intevation.flys.artifacts.access.HistoricalDischargeAccess; +import de.intevation.flys.artifacts.access.HistoricalDischargeAccess.EvaluationMode; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.DataFacet; import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet; import de.intevation.flys.artifacts.model.HistoricalDischargeFacet; -import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet; import de.intevation.flys.artifacts.model.HistoricalWQTimerange; import de.intevation.flys.artifacts.model.ReportFacet; import de.intevation.flys.artifacts.model.WQTimerange; @@ -27,45 +25,31 @@ /** * State to calculate historical discharge curves. + * * @author Ingo Weinzierl */ -public class HistoricalDischargeComputeState -extends DefaultState -implements FacetTypes -{ +public class HistoricalDischargeComputeState extends DefaultState implements + FacetTypes { - private static final Logger logger = - Logger.getLogger(HistoricalDischargeComputeState.class); + private static final Logger logger = Logger + .getLogger(HistoricalDischargeComputeState.class); public static final String DEFAULT_UNIT = "cm"; - @Override - protected void appendItems( - Artifact artifact, - ElementCreator creator, - String name, - CallContext context, - Element select - ) { + protected void appendItems(Artifact artifact, ElementCreator creator, + String name, CallContext context, Element select) { // TODO IMPLEMENT ME } - @Override - public Object computeAdvance( - FLYSArtifact artifact, - String hash, - CallContext context, - List facets, - Object old - ) { + public Object computeAdvance(FLYSArtifact artifact, String hash, + CallContext context, List facets, Object old) { logger.debug("HistoricalDischargeComputeState.computeAdvance"); WINFOArtifact winfo = (WINFOArtifact) artifact; - CalculationResult res = old instanceof CalculationResult - ? (CalculationResult) old + CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old : winfo.getHistoricalDischargeData(); if (facets == null) { @@ -82,60 +66,68 @@ return res; } - facets.add( - new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); + facets + .add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); - facets.add( - new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); + facets + .add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); - prepareFacets(facets, data); + prepareFacets(facets, data, new HistoricalDischargeAccess(artifact)); return res; } - - protected void prepareFacets(List facets, WQTimerange[] wqts) { + protected void prepareFacets(List facets, WQTimerange[] wqts, + HistoricalDischargeAccess access) { int i = 0; - for (WQTimerange wqt: wqts) { + for (WQTimerange wqt : wqts) { logger.debug("Prepare facet for: " + wqt.getName()); - // TODO CREATE BETTER TITLE FOR FACETS - - facets.add(new HistoricalDischargeFacet( - i, - HISTORICAL_DISCHARGE_Q, - createFacetTitle(wqt))); + EvaluationMode evalMode = access.getEvaluationMode(); + if (evalMode == EvaluationMode.W) { + facets.add(new HistoricalDischargeFacet(i, + HISTORICAL_DISCHARGE_Q, createFacetTitle(wqt))); - if (wqt instanceof HistoricalWQTimerange) { - logger.debug("Create another facet for historical differences."); + if (wqt instanceof HistoricalWQTimerange) { + logger + .debug("Create another facet for historical differences."); - facets.add(new HistoricalDischargeDifferenceFacet( - i, - HISTORICAL_DISCHARGE_Q_DIFF, - "DIFF: " + wqt.getName())); + // TODO CREATE BETTER TITLE FOR FACETS + facets.add(new HistoricalDischargeDifferenceFacet(i, + HISTORICAL_DISCHARGE_Q_DIFF, "DIFF: " + wqt.getName())); + } + } + else { + facets.add(new HistoricalDischargeFacet(i, + HISTORICAL_DISCHARGE_W, createFacetTitle(wqt))); + + if (wqt instanceof HistoricalWQTimerange) { + logger + .debug("Create another facet for historical differences."); + + // TODO CREATE BETTER TITLE FOR FACETS + facets.add(new HistoricalDischargeDifferenceFacet(i, + HISTORICAL_DISCHARGE_W_DIFF, "DIFF: " + wqt.getName())); + } } i++; } } - protected String createFacetTitle(WQTimerange wqt) { String name = wqt.getName(); - return name != null && name.indexOf("W") >= 0 - ? createFacetTitleW(wqt) + return name != null && name.indexOf("W") >= 0 ? createFacetTitleW(wqt) : createFacetTitleQ(wqt); } - protected String createFacetTitleW(WQTimerange wqt) { String name = wqt.getName(); return name + " " + DEFAULT_UNIT; } - protected String createFacetTitleQ(WQTimerange wqt) { return wqt.getName(); } diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java Wed Oct 24 07:25:35 2012 +0200 @@ -25,42 +25,36 @@ /** * @author Ingo Weinzierl */ -public class HistoricalDischargeCurveGenerator -extends TimeseriesChartGenerator -implements FacetTypes -{ - private static Logger logger = - Logger.getLogger(HistoricalDischargeCurveGenerator.class); - - - public static final String I18N_CHART_TITLE = - "chart.historical.discharge.title"; +public class HistoricalDischargeCurveGenerator extends TimeseriesChartGenerator + implements FacetTypes { - public static final String I18N_CHART_SUBTITLE = - "chart.historical.discharge.subtitle"; - - public static final String I18N_XAXIS_LABEL = - "chart.historical.discharge.xaxis.label"; + private static Logger logger = Logger + .getLogger(HistoricalDischargeCurveGenerator.class); - public static final String I18N_YAXIS_LABEL = - "chart.historical.discharge.yaxis.label"; + public static final String I18N_CHART_TITLE = "chart.historical.discharge.title"; - public static final String I18N_YAXIS_SECOND_LABEL = - "chart.historical.discharge.yaxis.second.label"; + public static final String I18N_CHART_SUBTITLE = "chart.historical.discharge.subtitle"; + public static final String I18N_XAXIS_LABEL = "chart.historical.discharge.xaxis.label"; + + public static final String I18N_YAXIS_LABEL = "chart.historical.discharge.yaxis.label"; + + public static final String I18N_YAXIS_SECOND_LABEL = "chart.historical.discharge.yaxis.second.label"; public static enum YAXIS { - Q(0); + W(0), Q(1); + protected int idx; + private YAXIS(int c) { idx = c; } } - @Override protected YAxisWalker getYAxisWalker() { return new YAxisWalker() { + @Override public int length() { return YAXIS.values().length; @@ -74,29 +68,23 @@ }; } - @Override protected String getDefaultChartTitle() { return msg(I18N_CHART_TITLE, I18N_CHART_TITLE); } - @Override protected String getDefaultChartSubtitle() { - FLYSArtifact flys = (FLYSArtifact) master; - Timerange evalTime = - new HistoricalDischargeAccess(flys).getEvaluationTimerange(); + FLYSArtifact flys = (FLYSArtifact) master; + Timerange evalTime = new HistoricalDischargeAccess(flys) + .getEvaluationTimerange(); - Object[] args = new Object[] { - FLYSUtils.getReferenceGaugeName(flys), - evalTime.getStart(), - evalTime.getEnd() - }; + Object[] args = new Object[] { FLYSUtils.getReferenceGaugeName(flys), + evalTime.getStart(), evalTime.getEnd() }; return msg(I18N_CHART_SUBTITLE, "", args); } - @Override protected String getDefaultXAxisLabel() { return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL); @@ -121,88 +109,95 @@ plot.setRangeZeroBaselineVisible(true); } - @Override - public void doOut( - ArtifactAndFacet artifactFacet, - Document theme, - boolean visible - ) { + public void doOut(ArtifactAndFacet artifactFacet, Document theme, + boolean visible) { String name = artifactFacet.getFacetName(); logger.debug("HistoricalDischargeCurveGenerator.doOut: " + name); - logger.debug("Theme description is: " + artifactFacet.getFacetDescription()); - + logger.debug("Theme description is: " + + artifactFacet.getFacetDescription()); if (name.equals(HISTORICAL_DISCHARGE_Q)) { - doHistoricalDischargeOut( + doHistoricalDischargeOutQ( (FLYSArtifact) artifactFacet.getArtifact(), artifactFacet.getData(context), - artifactFacet.getFacetDescription(), - theme, - visible); + artifactFacet.getFacetDescription(), theme, visible); } - else if (name.equals(HISTORICAL_DISCHARGE_Q_DIFF)) { - doHistoricalDischargeDifferenceOut( + else if (name.equals(HISTORICAL_DISCHARGE_W)) { + doHistoricalDischargeOutW( (FLYSArtifact) artifactFacet.getArtifact(), artifactFacet.getData(context), - artifactFacet.getFacetDescription(), - theme, - visible); + artifactFacet.getFacetDescription(), theme, visible); + } + else if (name.equals(HISTORICAL_DISCHARGE_Q_DIFF)) { + doHistoricalDischargeDifferenceOutQ( + (FLYSArtifact) artifactFacet.getArtifact(), + artifactFacet.getData(context), + artifactFacet.getFacetDescription(), theme, visible); + } + else if (name.equals(HISTORICAL_DISCHARGE_W_DIFF)) { + doHistoricalDischargeDifferenceOutW( + (FLYSArtifact) artifactFacet.getArtifact(), + artifactFacet.getData(context), + artifactFacet.getFacetDescription(), theme, visible); } else if (FacetTypes.IS.MANUALPOINTS(name)) { - doPoints (artifactFacet.getData(context), - artifactFacet, - theme, visible, YAXIS.Q.idx); + doPoints(artifactFacet.getData(context), artifactFacet, theme, + visible, YAXIS.Q.idx); } - // TODO ADD THE CASE FOR DISPLAYING W VALUES else { - logger.warn("doOut(): unknown facet name: " + name); - return; + logger.warn("doOut(): unknown facet name: " + name); + return; } } - - protected void doHistoricalDischargeOut( - FLYSArtifact artifact, - Object data, - String desc, - Document theme, - boolean visible) - { + protected void doHistoricalDischargeOutQ(FLYSArtifact artifact, + Object data, String desc, Document theme, boolean visible) { logger.debug("doHistoricalDischargeOut(): description = " + desc); WQTimerange wqt = (WQTimerange) data; - TimeSeriesCollection tsc = newTimeSeriesCollection( - wqt.getTimeranges(), - wqt.getQs(), - theme, - desc); + TimeSeriesCollection tsc = newTimeSeriesCollection(wqt.getTimeranges(), + wqt.getQs(), theme, desc); - addAxisDataset(tsc, 0, visible); + addAxisDataset(tsc, YAXIS.Q.idx, visible); } + protected void doHistoricalDischargeOutW(FLYSArtifact artifact, + Object data, String desc, Document theme, boolean visible) { + logger.debug("doHistoricalDischargeOut(): description = " + desc); - protected void doHistoricalDischargeDifferenceOut( - FLYSArtifact artifact, - Object data, - String desc, - Document theme, - boolean visible - ) { + WQTimerange wqt = (WQTimerange) data; + + TimeSeriesCollection tsc = newTimeSeriesCollection(wqt.getTimeranges(), + wqt.getWs(), theme, desc); + + addAxisDataset(tsc, YAXIS.W.idx, visible); + } + + protected void doHistoricalDischargeDifferenceOutQ(FLYSArtifact artifact, + Object data, String desc, Document theme, boolean visible) { logger.debug("doHistoricalDischargeDifferenceOut: desc = " + desc); HistoricalWQTimerange wqt = (HistoricalWQTimerange) data; - TimeSeriesCollection tsc = newTimeSeriesCollection( - wqt.getTimeranges(), - wqt.getDiffs(), - theme, - desc); + TimeSeriesCollection tsc = newTimeSeriesCollection(wqt.getTimeranges(), + wqt.getDiffs(), theme, desc); - addAxisDataset(tsc, 0, visible); + addAxisDataset(tsc, YAXIS.Q.idx, visible); } + protected void doHistoricalDischargeDifferenceOutW(FLYSArtifact artifact, + Object data, String desc, Document theme, boolean visible) { + logger.debug("doHistoricalDischargeDifferenceOut: desc = " + desc); + + HistoricalWQTimerange wqt = (HistoricalWQTimerange) data; + + TimeSeriesCollection tsc = newTimeSeriesCollection(wqt.getTimeranges(), + wqt.getDiffs(), theme, desc); + + addAxisDataset(tsc, YAXIS.W.idx, visible); + } /** * Creates a new TimeSeriesCollection with a single TimeSeries. The @@ -211,15 +206,11 @@ * looks like a "step chart". */ protected TimeSeriesCollection newTimeSeriesCollection( - Timerange[] timeranges, - double[] values, - Document theme, - String desc - ) { + Timerange[] timeranges, double[] values, Document theme, String desc) { logger.debug("Create new TimeSeriesCollection for: " + desc); TimeSeriesCollection tsc = new TimeSeriesCollection(); - TimeSeries series = new StyledTimeSeries(desc, theme); + TimeSeries series = new StyledTimeSeries(desc, theme); for (int i = 0, n = timeranges.length; i < n; i++) { RegularTimePeriod[] rtp = newRegularTimePeriod(timeranges[i]); @@ -249,22 +240,19 @@ return tsc; } - /** * Creates an array that consists of two Minute periods [start, end]. - * - * @param timerange Supports start and end time. - * + * + * @param timerange + * Supports start and end time. + * * @return an array with two Minute periods [start, end]. */ protected RegularTimePeriod[] newRegularTimePeriod(Timerange timerange) { Date start = new Date(timerange.getStart()); - Date end = new Date(timerange.getEnd() - 1000 * 60 * 60 * 24); + Date end = new Date(timerange.getEnd() - 1000 * 60 * 60 * 24); - return new RegularTimePeriod[] { - new Day(start), - new Day(end) - }; + return new RegularTimePeriod[] { new Day(start), new Day(end) }; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/resources/messages.properties --- a/flys-artifacts/src/main/resources/messages.properties Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/resources/messages.properties Wed Oct 24 07:25:35 2012 +0200 @@ -381,6 +381,7 @@ w.w.wkm2.failed = Calculating W for Q = {0,number,#.##} / WST index {1,number,#.##} failed. cannot.find.hist.q.for.w = Cannot find Q for W = {0,number,#.##} in timerange {1, date} - {2, date} +cannot.find.hist.w.for.q = Cannot find W for Q = {0,number,#.##} in timerange {1, date} - {2, date} cannot.find.hist.q.tables = Cannot find Discharge Tables for given timerange. cannot.find.hist.q.reftable = Cannot find reference Discharge Table for specified Gauge. diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/resources/messages_de.properties --- a/flys-artifacts/src/main/resources/messages_de.properties Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/resources/messages_de.properties Wed Oct 24 07:25:35 2012 +0200 @@ -380,7 +380,8 @@ w.w.qkm2.failed = Berechnung von Q f\u00fcr WST-Index {0,number,#.##} fehlgeschlagen. w.w.wkm2.failed = Berechnung von W f\u00fcr Q = {0,number,#.##} / WST-Index {1,number,#.##} fehlgeschlagen. -cannot.find.hist.q.for.w = Konnte zu W = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) kein Abfluss ermitteln. +cannot.find.hist.q.for.w = Konnte zu W = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) keinen Abfluss ermitteln. +cannot.find.hist.w.for.q = Konnte zu Q = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) keinen Wasserstand ermitteln. cannot.find.hist.q.tables = Konnte f\u00fcr den angegebenen Zeitraum keine Abflusstafeln finden. cannot.find.hist.q.reftable = Konnte f\u00fcr den gew\u00e4hlten Pegel keine Bezugs-Abflusstafel ermitteln. diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/resources/messages_de_DE.properties --- a/flys-artifacts/src/main/resources/messages_de_DE.properties Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/resources/messages_de_DE.properties Wed Oct 24 07:25:35 2012 +0200 @@ -377,7 +377,8 @@ w.w.qkm2.failed = Berechnung von Q f\u00fcr WST-Index {0,number,#.##} fehlgeschlagen. w.w.wkm2.failed = Berechnung von W f\u00fcr Q = {0,number,#.##} / WST-Index {1,number,#.##} fehlgeschlagen. -cannot.find.hist.q.for.w = Konnte zu W = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) kein Abfluss ermitteln. +cannot.find.hist.q.for.w = Konnte zu W = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) keinen Abfluss ermitteln. +cannot.find.hist.w.for.q = Konnte zu Q = {0,number,#.##} im Zeitraum ({1,date} - {2,date}) keinen Wasserstand ermitteln. cannot.find.hist.q.tables = Konnte f\u00fcr den angegebenen Zeitraum keine Abflusstafeln finden. cannot.find.hist.q.reftable = Konnte f\u00fcr den gew\u00e4hlten Pegel keine Bezugs-Abflusstafel ermitteln. diff -r adcb8aee1910 -r b3aa91e45010 flys-artifacts/src/main/resources/messages_en.properties --- a/flys-artifacts/src/main/resources/messages_en.properties Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/resources/messages_en.properties Wed Oct 24 07:25:35 2012 +0200 @@ -382,6 +382,7 @@ w.w.wkm2.failed = Calculating W for Q = {0,number,#.##} / WST index {1,number,#.##} failed. cannot.find.hist.q.for.w = Cannot find Q for W = {0,number,#.##} in timerange {1, date} - {2, date} +cannot.find.hist.w.for.q = Cannot find W for Q = {0,number,#.##} in timerange {1, date} - {2, date} cannot.find.hist.q.tables = Cannot find Discharge Tables for given timerange. cannot.find.hist.q.reftable = Cannot find reference Discharge Table for specified Gauge.