Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 2045:d13be39cfd1d
#242 Added header with meta information into CSV exports.
flys-artifacts/trunk@3531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 22 Dec 2011 13:22:55 +0000 |
parents | f73036b991e2 |
children | 97a25b54eea3 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java Thu Dec 22 12:56:46 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java Thu Dec 22 13:22:55 2011 +0000 @@ -2,9 +2,12 @@ import java.io.IOException; import java.io.OutputStream; +import java.text.DateFormat; import java.text.NumberFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -15,11 +18,14 @@ import au.com.bytecode.opencsv.CSVWriter; import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; +import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.WINFOArtifact; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.WQCKms; import de.intevation.flys.artifacts.model.WQKms; +import de.intevation.flys.artifacts.resources.Resources; import de.intevation.flys.utils.FLYSUtils; import de.intevation.flys.utils.Formatter; @@ -46,6 +52,31 @@ public static final String CSV_Q_HEADER = "export.waterlevel.csv.header.q"; + public static final String CSV_META_RESULT = + "export.waterlevel.csv.meta.result"; + + public static final String CSV_META_CREATION = + "export.waterlevel.csv.meta.creation"; + + public static final String CSV_META_CALCULATIONBASE = + "export.waterlevel.csv.meta.calculationbase"; + + public static final String CSV_META_RIVER = + "export.waterlevel.csv.meta.river"; + + public static final String CSV_META_RANGE = + "export.waterlevel.csv.meta.range"; + + public static final String CSV_META_GAUGE = + "export.waterlevel.csv.meta.gauge"; + + public static final String CSV_META_Q = + "export.waterlevel.csv.meta.q"; + + public static final String CSV_META_W = + "export.waterlevel.csv.meta.w"; + + public static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*"); @@ -147,6 +178,7 @@ protected void writeCSVData(CSVWriter writer) { logger.info("WaterlevelExporter.writeData"); + writeCSVMeta(writer); writeCSVHeader(writer); for (WQKms[] tmp: data) { @@ -157,6 +189,115 @@ } + protected void writeCSVMeta(CSVWriter writer) { + logger.info("WaterlevelExporter.writeCSVMeta"); + + CallMeta meta = context.getMeta(); + + FLYSArtifact flys = (FLYSArtifact) master; + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_RESULT, + CSV_META_RESULT, + new Object[] { FLYSUtils.getRivername(flys) }) + }); + + Locale locale = Resources.getLocale(meta); + DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_CREATION, + CSV_META_CREATION, + new Object[] { df.format(new Date()) }) + }); + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_CALCULATIONBASE, + CSV_META_CALCULATIONBASE, + new Object[] { "" }) // TODO what is required at this place? + }); + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_RIVER, + CSV_META_RIVER, + new Object[] { FLYSUtils.getRivername(flys) }) + }); + + double[] kms = FLYSUtils.getKmRange(flys); + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_RANGE, + CSV_META_RANGE, + new Object[] { kms[0], kms[kms.length-1] }) + }); + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_GAUGE, + CSV_META_GAUGE, + new Object[] { FLYSUtils.getGaugename(flys) }) + }); + + FLYSUtils.WQ_MODE wq = FLYSUtils.getWQMode(flys); + if (wq == FLYSUtils.WQ_MODE.QFREE || wq == FLYSUtils.WQ_MODE.QGAUGE) { + double[] qs = FLYSUtils.getQs(flys); + + String lower = ""; + String upper = ""; + + if (qs != null && qs.length > 0) { + lower = String.valueOf(qs[0]); + upper = String.valueOf(qs[qs.length-1]); + } + else { + logger.warn("Could not determine Q range!"); + } + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_Q, + CSV_META_Q, + new Object[] { lower, upper }) + }); + } + else { + double[] ws = FLYSUtils.getWs(flys); + + String lower = ""; + String upper = ""; + + if (ws != null && ws.length > 0) { + lower = String.valueOf(ws[0]); + upper = String.valueOf(ws[ws.length-1]); + } + else { + logger.warn("Could not determine W range!"); + } + + writer.writeNext(new String[] { + Resources.getMsg( + meta, + CSV_META_W, + CSV_META_W, + new Object[] { lower, upper }) + }); + } + + writer.writeNext(new String[] { "" }); + } + + protected void writeCSVHeader(CSVWriter writer) { logger.info("WaterlevelExporter.writeCSVHeader");