Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultType.java @ 9000:50cc99579a46
Work on uinfo
author | gernotbelger |
---|---|
date | Thu, 12 Apr 2018 19:16:10 +0200 |
parents | 7c1611b5a59e |
children | 7134a4c7d1b6 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultType.java Thu Apr 12 19:15:42 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultType.java Thu Apr 12 19:16:10 2018 +0200 @@ -10,15 +10,12 @@ package org.dive4elements.river.artifacts.sinfo.common; import java.text.NumberFormat; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; import org.apache.commons.lang.StringUtils; import org.dive4elements.artifacts.CallContext; -import org.dive4elements.artifacts.CallMeta; +import org.dive4elements.river.artifacts.common.AbstractResultType; +import org.dive4elements.river.artifacts.common.I18NStrings; import org.dive4elements.river.artifacts.resources.Resources; -import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKind; import org.dive4elements.river.utils.Formatter; import org.dive4elements.river.utils.RiverUtils; @@ -28,22 +25,18 @@ * * @author Gernot Belger */ -public enum SInfoResultType { +public abstract class SInfoResultType extends AbstractResultType { - station(SInfoI18NStrings.UNIT_KM, SInfoI18NStrings.CSV_KM_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } + private SInfoResultType(final String unit, final String csvHeader) { + super(unit, csvHeader, csvHeader); + } - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getWaterlevelKM(context); - } - }, + private SInfoResultType(final String unit, final String csvHeader, final String pdfHeader) { + super(unit, csvHeader, pdfHeader); + } - waterlevel(null, SInfoI18NStrings.CSV_WATERLEVEL_HEADER,"sinfo.export.flow_depth.pdf.header.waterlevel") { + public static final SInfoResultType waterlevel = new SInfoResultType(null, SInfoI18NStrings.CSV_WATERLEVEL_HEADER, + "sinfo.export.flow_depth.pdf.header.waterlevel") { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -56,9 +49,9 @@ // digits. return Formatter.getFlowDepth(context); } - }, + }; - waterlevelLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LABEL_HEADER) { + public static final SInfoResultType waterlevelLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LABEL_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { return exportStringValue(value); @@ -68,9 +61,9 @@ protected NumberFormat createFormatter(final CallContext context) { throw new UnsupportedOperationException(); } - }, + }; - discharge(SInfoI18NStrings.UNIT_CUBIC_M, SInfoI18NStrings.CSV_DISCHARGE_HEADER) { + public static final SInfoResultType discharge = new SInfoResultType(I18NStrings.UNIT_CUBIC_M, SInfoI18NStrings.CSV_DISCHARGE_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -82,9 +75,10 @@ protected NumberFormat createFormatter(final CallContext context) { return Formatter.getWaterlevelQ(context); } - }, + }; - meanBedHeight(null, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT) { + public static final SInfoResultType meanBedHeight = new SInfoResultType(null, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, + SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT) { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -95,9 +89,9 @@ protected NumberFormat createFormatter(final CallContext context) { return Formatter.getMeanBedHeight(context); } - }, + }; - soundingLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_SOUNDING_HEADER) { + public static final SInfoResultType soundingLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_SOUNDING_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { return exportStringValue(value); @@ -107,9 +101,22 @@ protected NumberFormat createFormatter(final CallContext context) { throw new UnsupportedOperationException(); } - }, + }; + public static final SInfoResultType flowdepthDevelopmentPerYear = new SInfoResultType(I18NStrings.UNIT_CM_A, + SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } - flowdepthmin(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MIN_HEADER) { + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getFlowDepthDevelopmentPerYear(context); + } + }; + + public static final SInfoResultType flowdepthmin = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MIN_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -120,9 +127,9 @@ protected NumberFormat createFormatter(final CallContext context) { return Formatter.getFlowDepth(context); } - }, + }; - flowdepthmax(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MAX_HEADER) { + public static final SInfoResultType flowdepthmax = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MAX_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -133,9 +140,9 @@ protected NumberFormat createFormatter(final CallContext context) { return Formatter.getFlowDepth(context); } - }, + }; - gaugeLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_GAUGE_HEADER) { + public static final SInfoResultType gaugeLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_GAUGE_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { return exportStringValue(value); @@ -145,9 +152,9 @@ protected NumberFormat createFormatter(final CallContext context) { throw new UnsupportedOperationException(); } - }, + }; - location(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LOCATION_HEADER) { + public static final SInfoResultType location = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LOCATION_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { return exportStringValue(value); @@ -157,9 +164,10 @@ protected NumberFormat createFormatter(final CallContext context) { throw new UnsupportedOperationException(); } - }, + }; - soilkind(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_TKHKIND_HEADER, "sinfo.export.tkh.pdf.header.tkhkind") { + public static final SInfoResultType soilkind = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_TKHKIND_HEADER, + "sinfo.export.tkh.pdf.header.tkhkind") { @Override public String exportValue(final CallContext context, final Object value) { @@ -176,173 +184,9 @@ protected NumberFormat createFormatter(final CallContext context) { throw new UnsupportedOperationException(); } - }, - - flowdepth(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getFlowDepth(context); - } - }, - - d50(null, null) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - throw new UnsupportedOperationException(); - } - }, - - velocity(null, null) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - throw new UnsupportedOperationException(); - } - }, - - tau(null, null) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - throw new UnsupportedOperationException(); - } - }, - - tkh(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_TKH_HEADER, SInfoI18NStrings.CSV_TKH_HEADER_SHORT) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getTkh(context); - } - }, - - tkhup(SInfoI18NStrings.UNIT_CM, null) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - throw new UnsupportedOperationException(); - } - }, + }; - tkhdown(SInfoI18NStrings.UNIT_CM, null) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - throw new UnsupportedOperationException(); - } - }, - - flowdepthtkh(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTHTKH_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getFlowDepth(context); - } - }, - - flowdepthDevelopment(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_HEADER, SInfoI18NStrings.PDF_FLOWDEPTH_DEVELOPMENT_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getTkh(context); - } - }, - flowdepthDevelopmentPerYear(SInfoI18NStrings.UNIT_CM_A, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getFlowDepthDevelopmentPerYear(context); - } - }, - waterlevelDifference(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_WATERLEVEL_DIFFERENCE_HEADER, "sinfo.export.pdf.header.waterlevel.difference") { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getTkh(context); - } - }, - bedHeightDifference(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_DIFFERENCE_HEADER, "sinfo.export.pdf.header.mean_bed_height.difference") { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getTkh(context); - } - }, - flowdepthCurrent(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_CURRENT_HEADER) { - @Override - public String exportValue(final CallContext context, final Object value) { - final double doubleValue = asDouble(value); - return exportDoubleValue(context, doubleValue); - } - - @Override - protected NumberFormat createFormatter(final CallContext context) { - return Formatter.getFlowDepth(context); - } - }, - flowdepthHistorical(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HISTORICAL_HEADER) { + public static final SInfoResultType flowdepth = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HEADER) { @Override public String exportValue(final CallContext context, final Object value) { final double doubleValue = asDouble(value); @@ -355,82 +199,173 @@ } }; - /* Cache for formatters because Formatter will always create new formats (which is very expensive) */ - private final Map<Locale, NumberFormat> formatters = new HashMap<>(); - - private final String unit; - - private final String csvHeader; - - private final String pdfHeader; - - private SInfoResultType(final String unit, final String csvAndPdfHeader) { - this(unit, csvAndPdfHeader, csvAndPdfHeader); - } - - private SInfoResultType(final String unit, final String csvHeader, final String pdfHeader) { - this.unit = unit; - this.csvHeader = csvHeader; - this.pdfHeader = pdfHeader; - } - - public abstract String exportValue(final CallContext context, final Object value); - - protected final String exportStringValue(final Object value) { - - if (value == null) - return StringUtils.EMPTY; - - if (!(value instanceof String)) - throw new IllegalStateException(); - - return (String) value; - } - - protected final double asDouble(final Object value) { - if (value == null) - return Double.NaN; - - if (!(value instanceof Number)) - throw new IllegalStateException(); + public static final SInfoResultType d50 = new SInfoResultType(null, null) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } - final Number number = (Number) value; - return number.doubleValue(); - } - - protected final String exportDoubleValue(final CallContext context, final double value) { - if (Double.isNaN(value)) - return StringUtils.EMPTY; - - final NumberFormat formatter = getFormatter(context); - return formatter.format(value); - } - - private NumberFormat getFormatter(final CallContext context) { - final CallMeta meta = context.getMeta(); - final Locale locale = Resources.getLocale(meta); - - if (!this.formatters.containsKey(locale)) - this.formatters.put(locale, createFormatter(context)); + @Override + protected NumberFormat createFormatter(final CallContext context) { + throw new UnsupportedOperationException(); + } + }; - return this.formatters.get(locale); - } - - protected abstract NumberFormat createFormatter(CallContext context); + public static final SInfoResultType velocity = new SInfoResultType(null, null) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } - public final String getCsvHeader() { - return this.csvHeader; - } - - public final String getCsvHeader(final CallMeta meta) { - return Resources.getMsg(meta, this.csvHeader, this.csvHeader); - } + @Override + protected NumberFormat createFormatter(final CallContext context) { + throw new UnsupportedOperationException(); + } + }; - public final String getPdfHeader(final CallMeta meta) { - return Resources.getMsg(meta, this.pdfHeader, this.pdfHeader); - } + public static final SInfoResultType tau = new SInfoResultType(null, null) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } - public final String getUnit() { - return this.unit; - } + @Override + protected NumberFormat createFormatter(final CallContext context) { + throw new UnsupportedOperationException(); + } + }; + + public static final SInfoResultType tkh = new SInfoResultType(I18NStrings.UNIT_CM, SInfoI18NStrings.CSV_TKH_HEADER, SInfoI18NStrings.CSV_TKH_HEADER_SHORT) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getTkh(context); + } + }; + + public static final SInfoResultType tkhup = new SInfoResultType(I18NStrings.UNIT_M, null) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + throw new UnsupportedOperationException(); + } + }; + + public static final SInfoResultType tkhdown = new SInfoResultType(I18NStrings.UNIT_M, null) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + throw new UnsupportedOperationException(); + } + }; + + public static final SInfoResultType flowdepthtkh = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTHTKH_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getFlowDepth(context); + } + }; + + public static final SInfoResultType flowdepthDevelopment = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_HEADER, + SInfoI18NStrings.PDF_FLOWDEPTH_DEVELOPMENT_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getTkh(context); + } + }; + + public static final SInfoResultType depthDevelopmentPerYear = new SInfoResultType(I18NStrings.UNIT_CM_A, + SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getFlowDepthDevelopmentPerYear(context); + } + }; + public static final SInfoResultType waterlevelDifference = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_WATERLEVEL_DIFFERENCE_HEADER, + "sinfo.export.pdf.header.waterlevel.difference") { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getTkh(context); + } + }; + public static final SInfoResultType bedHeightDifference = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_DIFFERENCE_HEADER, + "sinfo.export.pdf.header.mean_bed_height.difference") { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getTkh(context); + } + }; + public static final SInfoResultType flowdepthCurrent = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_CURRENT_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getFlowDepth(context); + } + }; + public static final SInfoResultType flowdepthHistorical = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HISTORICAL_HEADER) { + @Override + public String exportValue(final CallContext context, final Object value) { + final double doubleValue = asDouble(value); + return exportDoubleValue(context, doubleValue); + } + + @Override + protected NumberFormat createFormatter(final CallContext context) { + return Formatter.getFlowDepth(context); + } + }; + } \ No newline at end of file