Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java @ 9040:5294114b1df4
Fixed/changed some FIXMEs/TODOs
author | gernotbelger |
---|---|
date | Wed, 02 May 2018 12:19:31 +0200 |
parents | 05b5588bdd94 |
children | 86d2cbfe7f7f |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java Wed May 02 12:16:47 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java Wed May 02 12:19:31 2018 +0200 @@ -29,6 +29,13 @@ */ public final class WaterlevelDescriptionBuilder { + private static final String CSV_META_Q = "export.waterlevel.csv.meta.q"; + + // FIXME: unit 'NN + m' is wrong: + // - use river-elevation system in case of absolute heights + // - use 'cm am Pegel' in other cases + private static final String CSV_META_W = "export.waterlevel.csv.meta.w"; + private static final String CSV_Q_DESC_HEADER = "export.waterlevel.csv.header.q.desc"; // FIXME: missing in resource-files! hence always the default is used... @@ -63,6 +70,64 @@ return this.atGauge; } + public String getMetadata() { + + switch (this.mode) { + case QFREE: + case QGAUGE: { + final String data = getMetadataQ(); + if (data == null) + return null; + + return Resources.getMsg(this.context.getMeta(), CSV_META_Q, CSV_META_Q, data); + } + + // TODO: probably none, default is wrong here, but this how it was implemented in WaterlevelExporter. + case WFREE: + case WGAUGE: + case NONE: + default: + final double[] ws = RiverUtils.getWs(this.artifact); + + if (ws == null || ws.length <= 0) + return null; + + // FIXME: we also have here a case single?! + + // FIXME: use correct wst unit! + + // FIXME: bad formatting ofd values. Use the correct Formatter! + final String lower = String.valueOf(ws[0]); + final String upper = String.valueOf(ws[ws.length - 1]); + + return Resources.getMsg(this.context.getMeta(), CSV_META_W, CSV_META_W, lower, upper); + } + } + + private String getMetadataQ() { + + final double[] qs = RiverUtils.getQs(this.artifact); + if (qs == null || qs.length == 0) + return null; + + final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode(this.artifact); + + switch (input) { + case ADAPTED: + case RANGE: + return String.valueOf(qs[0]) + " - " + String.valueOf(qs[qs.length - 1]); + + case SINGLE: + String data = String.valueOf(qs[0]); + for (int i = 1; i < qs.length; i++) + data += ", " + String.valueOf(qs[i]); + return data; + + default: + return null; + } + } + public String getColumnHeader() { if (!this.atGauge)