# HG changeset patch # User Andre Heinecke # Date 1359652865 -3600 # Node ID 529a3d873809d7d417e189e80f07fbdeef1a7510 # Parent 04c68af455347704bc453f296e4ee45c3c7ec6db# Parent 840250040a7d58834442f251480b2a3a2e08501e Merge diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Thu Jan 31 18:21:05 2013 +0100 @@ -174,11 +174,11 @@ protected void initialize(Artifact artifact, Object context, CallMeta meta) { logger.debug("MainValuesArtifact.initialize"); FLYSArtifact winfo = (FLYSArtifact) artifact; - RangeAccess rangeAccess = new RangeAccess(this, null); + RangeAccess rangeAccess = new RangeAccess(winfo, null); double [] locations = rangeAccess.getLocations(); if (locations != null) { double location = locations[0]; - addData("location", new DefaultStateData("location", null, null, + addData("ld_locations", new DefaultStateData("ld_locations", null, null, String.valueOf(location))); } else { @@ -245,7 +245,7 @@ River river = FLYSUtils.getRiver(this); // TODO use helper to get location as double - String locationStr = getDataAsString("location"); + String locationStr = getDataAsString("ld_locations"); if (river == null || locationStr == null) { return null; @@ -262,7 +262,7 @@ * @return the location. */ public double getLocation() { - double location = Double.parseDouble(getDataAsString("location")); + double location = Double.parseDouble(getDataAsString("ld_locations")); return location; } diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/java/de/intevation/flys/exports/ATExporter.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/ATExporter.java Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/ATExporter.java Thu Jan 31 18:21:05 2013 +0100 @@ -3,6 +3,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.IOException; +import java.util.List; import org.w3c.dom.Document; @@ -19,6 +20,9 @@ import de.intevation.flys.artifacts.model.WQ; import de.intevation.flys.collections.FLYSArtifactCollection; +import de.intevation.flys.model.Gauge; +import de.intevation.flys.model.River; +import de.intevation.flys.model.TimeInterval; import de.intevation.flys.utils.FLYSUtils; import de.intevation.flys.artifacts.access.RangeAccess; @@ -83,15 +87,38 @@ throw new IOException(iae); } - String river = FLYSUtils.getRiver(master).getName(); + River river = FLYSUtils.getRiver(master); RangeAccess rangeAccess = new RangeAccess(master, context); double[] kms = rangeAccess.getLocations(); - at.write( - new OutputStreamWriter(out, DEFAULT_ENCODING), - context.getMeta(), - river, - kms[0]); + Gauge gauge = river.determineGaugeByPosition(kms[0]); + if (kms[0] == gauge.getStation().doubleValue() + 1e-4) { + // at gauge. + TimeInterval interval = + gauge.fetchMasterDischargeTable().getTimeInterval(); + at.write( + new OutputStreamWriter(out, DEFAULT_ENCODING), + context.getMeta(), + river.getName(), + kms[0], + gauge.getName(), + gauge.getDatum(), + interval.getStartTime(), + 100d); + } + else { + // at km + at.write( + new OutputStreamWriter(out), + context.getMeta(), + river.getName(), + kms[0], + null, + null, + null, + 0d); + } + } diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/java/de/intevation/flys/exports/ATWriter.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/ATWriter.java Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/ATWriter.java Thu Jan 31 18:21:05 2013 +0100 @@ -3,7 +3,11 @@ import java.io.IOException; import java.io.Writer; import java.io.PrintWriter; +import java.math.BigDecimal; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; import java.util.Locale; import de.intevation.artifacts.CallMeta; @@ -31,6 +35,9 @@ public static final String I18N_AT_HEADER = "export.discharge.curve.at.header"; + public static final String I18N_AT_GAUGE_HEADER = + "export.discharge.curve.at.gauge.header"; + public static final String EMPTY = " "; protected double minW; @@ -105,12 +112,31 @@ } + protected static void printGaugeHeader( + PrintWriter out, + CallMeta callMeta, + String river, + double km, + String gName, + BigDecimal datum, + Date date + ) { + DateFormat f = DateFormat.getDateInstance(); + out.print(Resources.getMsg( + callMeta, + I18N_AT_GAUGE_HEADER, + I18N_AT_GAUGE_HEADER, + new Object[] { river, gName, f.format(date), datum } )); + out.print("\r\n"); + } + protected static void printHeader( PrintWriter out, CallMeta callMeta, String river, double km ) { + DateFormat f = DateFormat.getDateInstance(); out.print(Resources.getMsg( callMeta, I18N_AT_HEADER, @@ -119,15 +145,27 @@ out.print("\r\n"); } - - public void write(Writer writer, CallMeta meta, String river, double km) + public void write( + Writer writer, + CallMeta meta, + String river, + double km, + String gName, + BigDecimal datum, + Date date, + double scale) throws IOException { PrintWriter out = new PrintWriter(writer); // a header is required, because the desktop version of FLYS will skip // the first row. - printHeader(out, meta, river, km); + if (gName != null) { + printGaugeHeader(out, meta, river, km, gName, datum, date); + } + else { + printHeader(out, meta, river, km); + } double rest = (minW * 100.0) % 10.0; @@ -141,7 +179,7 @@ int col = 0; for (double w = startW; w <= maxW; w += 0.01) { if (col == 0) { - out.printf(Locale.US, "%8d", (int)Math.round(w*100.0)); + out.printf(Locale.US, "%8d", (int)Math.round(w * scale)); } if (w < minW) { diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/resources/messages.properties --- a/flys-artifacts/src/main/resources/messages.properties Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/resources/messages.properties Thu Jan 31 18:21:05 2013 +0100 @@ -325,6 +325,7 @@ export.discharge.longitudinal.section.csv.header.cw = W corr. export.discharge.longitudinal.section.csv.header.q = Q [m\u00b3/s] export.discharge.curve.at.header = Computed Discharge Curve for {0} {0}-km: {1} +export.discharge.curve.at.gauge.header = Discharge Table for {1}/{0} since {2} PNP[NN+m] = {3} export.historical.discharge.csv.header.timerange = Timerange export.historical.discharge.csv.header.waterlevel = Waterlevel [cm] export.historical.discharge.csv.header.discharge = Discharge [m\u00b3/s] diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/resources/messages_de.properties --- a/flys-artifacts/src/main/resources/messages_de.properties Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/resources/messages_de.properties Thu Jan 31 18:21:05 2013 +0100 @@ -314,7 +314,8 @@ export.discharge.longitudinal.section.csv.header.w = W [NN + m] export.discharge.longitudinal.section.csv.header.cw = W korr. export.discharge.longitudinal.section.csv.header.q = Q [m\u00b3/s] -export.discharge.curve.at.header = Berechnete Abflusskurve f\u00fcr {0} {0}-km: {1} +export.discharge.curve.at.header = Berechnete Abflusstafel f\u00fcr {0}, km {1} +export.discharge.curve.at.gauge.header = Abflusstafel f\u00fcr {1}/{0} ab {2} PNP[NN+m] = {3} export.historical.discharge.csv.header.timerange = Zeitraum export.historical.discharge.csv.header.waterlevel = Wasserstand [cm] export.historical.discharge.csv.header.discharge = Abfluss [m\u00b3/s] diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/resources/messages_de_DE.properties --- a/flys-artifacts/src/main/resources/messages_de_DE.properties Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/resources/messages_de_DE.properties Thu Jan 31 18:21:05 2013 +0100 @@ -323,7 +323,8 @@ export.discharge.longitudinal.section.csv.header.w = W [NN + m] export.discharge.longitudinal.section.csv.header.cw = W korr. export.discharge.longitudinal.section.csv.header.q = Q [m\u00b3/s] -export.discharge.curve.at.header = Berechnete Abflusskurve f\u00fcr {0} {0}-km: {1} +export.discharge.curve.at.gauge.header = Abflusstafel f\u00fcr {1}/{0} ab {2} PNP[NN+m] = {3} +export.discharge.curve.at.header = Berechnete Abflusstafel f\u00fcr {0}, km {1} export.historical.discharge.csv.header.timerange = Zeitraum export.historical.discharge.csv.header.waterlevel = Wasserstand [cm] export.historical.discharge.csv.header.discharge = Abfluss [m\u00b3/s] diff -r 840250040a7d -r 529a3d873809 flys-artifacts/src/main/resources/messages_en.properties --- a/flys-artifacts/src/main/resources/messages_en.properties Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-artifacts/src/main/resources/messages_en.properties Thu Jan 31 18:21:05 2013 +0100 @@ -327,6 +327,7 @@ export.discharge.longitudinal.section.csv.header.cw = W corr. export.discharge.longitudinal.section.csv.header.q = Q [m\u00b3/s] export.discharge.curve.at.header = Computed Discharge Curve for {0} {0}-km: {1} +export.discharge.curve.at.gauge.header = Dischargetable for {1}/{0} since {2} Datum[NN+m] = {3} export.historical.discharge.csv.header.timerange = Timerange export.historical.discharge.csv.header.waterlevel = Waterlevel [cm] export.historical.discharge.csv.header.discharge = Discharge [m\u00b3/s] diff -r 840250040a7d -r 529a3d873809 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Thu Jan 31 18:18:05 2013 +0100 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Thu Jan 31 18:21:05 2013 +0100 @@ -207,7 +207,7 @@ computed_discharge_curves = Abflusskurven longitudinal_section = L\u00e4ngsschnitt duration_curve = Dauerlinie -discharge_longitudinal_section = W f\u00fcr ungleichwertigen Abflussl\u00e4ngsschnitt +discharge_longitudinal_section = W f\u00fcr benutzerdefinierten Abflussl\u00e4ngsschnitt floodmap = \u00dcberschwemmungsfl\u00e4che historical_discharge = Zeit Diagramm historical_discharge_wq = WQ Diagramm