view artifacts/src/main/java/org/dive4elements/river/artifacts/common/ExportContextPDF.java @ 9150:23945061daec

gigantic refactoring: exporter, result, results to support multiple jaspers -> collisions
author gernotbelger
date Thu, 14 Jun 2018 16:56:31 +0200
parents
children a4121ec450d6
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.DateFormat;
import java.text.NumberFormat;
import java.util.Date;
import java.util.Locale;

import org.apache.commons.lang.math.DoubleRange;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.FLYS;
import org.dive4elements.river.artifacts.resources.Resources;
import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
import org.dive4elements.river.utils.Formatter;

/**
 * @author Domenico Nardi Tironi
 *
 */
public final class ExportContextPDF {

    private NumberFormat kmFormat;

    /** The CallContext object. */
    private final CallContext context;

    public ExportContextPDF(final CallContext context) {
        this.context = context;

    }

    private String msg(final String key) {
        return Resources.getMsg(this.context.getMeta(), key, key);
    }

    private String msg(final String key, final Object... args) {
        return Resources.getMsg(this.context.getMeta(), key, key, args);
    }

    public void addJRMetadata(final MetaAndTableJRDataSource source, final String key, final IResultType type) {
        source.addMetaData(key, type.getPdfHeader(this.context.getMeta()));
    }

    // *** CUSTOM STUFF that is used multiple times ***///
    public void addJRMetaDataDefaults(final MetaAndTableJRDataSource source, final AbstractCalculationResults results) {

        source.addMetaData("header", msg(I18NStrings.CSV_META_HEADER_RESULT_LABEL));
        source.addMetaData("calcMode", results.getCalcModeLabel());

        source.addMetaData("version_label", msg(I18NStrings.CSV_META_VERSION_LABEL));
        source.addMetaData("version", FLYS.VERSION);

        source.addMetaData("user_label", msg(I18NStrings.CSV_META_USER_LABEL));
        source.addMetaData("user", results.getUser());

        final Locale locale = Resources.getLocale(this.context.getMeta());
        final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
        source.addMetaData("date_label", msg(I18NStrings.CSV_META_CREATION_LABEL));
        source.addMetaData("date", df.format(new Date()));
    }

    public void addJRMetaDataUSINFO(final MetaAndTableJRDataSource source, final AbstractCalculationResults results) {

        /* general metadata */
        addJRMetaDataDefaults(source, results);

        final RiverInfo river = results.getRiver();
        final String wstUnitName = river.getWstUnit();

        source.addMetaData("river_label", msg(I18NStrings.CSV_META_RIVER_LABEL));
        source.addMetaData("river", river.getName());
        source.addMetaData("river_unit", wstUnitName);

        final DoubleRange calcRange = results.getCalcRange();
        final NumberFormat kmFormatter = getKmFormatter();
        final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble()));
        source.addMetaData("range_label", msg(I18NStrings.CSV_META_RANGE_LABEL));
        source.addMetaData("range", rangeValue);

        /* column headings */
        // source.addMetaData("station_header", GeneralResultType.station.getPdfHeader(this.context.getMeta()));

        // moved to *result
        /* column headings */
        // source.addMetaData("flowdepth_header", SInfoResultType.flowdepth.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("flowdepth_tkh_header", SInfoResultType.flowdepthtkh.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("tkh_header", SInfoResultType.tkh.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("waterlevel_name_header", SInfoResultType.waterlevelLabel.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("gauge_header", SInfoResultType.gaugeLabel.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta()));
        // source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta()));
    }

    // copy from AbstractExporter TODO merge with ExportContextCSV
    protected NumberFormat getKmFormatter() {

        if (this.kmFormat == null) {
            this.kmFormat = Formatter.getWaterlevelKM(this.context);
        }
        return this.kmFormat;
    }
}

http://dive4elements.wald.intevation.org