Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractResultType.java @ 9155:9b4f5e61c02e
Changed to list of DateRange, added methods in DateRange to support year ranges
author | mschaefer |
---|---|
date | Tue, 19 Jun 2018 14:15:32 +0200 |
parents | 23945061daec |
children | f9bb5d0a6ff3 |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.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.resources.Resources; /** * @author Domenico Nardi Tironi */ public abstract class AbstractResultType implements IResultType { /* 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; protected AbstractResultType(final String unit, final String csvHeader, final String pdfHeader) { this.unit = unit; this.csvHeader = csvHeader; this.pdfHeader = pdfHeader; } @Override 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; } @Override public final double asDouble(final Object value) { if (value == null) return Double.NaN; if (!(value instanceof Number)) throw new IllegalStateException(); 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)); return this.formatters.get(locale); } protected abstract NumberFormat createFormatter(CallContext context); @Override public final String getCsvHeader() { return this.csvHeader; } public final String getCsvHeader(final CallMeta meta) { return Resources.getMsg(meta, this.csvHeader, this.csvHeader); } public final String getPdfHeader(final CallMeta meta) { return Resources.getMsg(meta, this.pdfHeader, this.pdfHeader); } public final String getUnit() { return this.unit; } }