view flys-artifacts/src/main/java/de/intevation/flys/utils/Formatter.java @ 4573:b87073a05f9d

flys-client: Patch to render combobox options as clickable links. The way of passing data arguments to the links and further to the Artifact feeding service is somewhat hacked and should be refactored (later...).
author Christian Lins <christian.lins@intevation.de>
date Tue, 27 Nov 2012 12:50:10 +0100
parents 04309ca24614
children db4e7ff0b987
line wrap: on
line source
package de.intevation.flys.utils;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;

import de.intevation.artifacts.CallContext;
import de.intevation.artifacts.CallMeta;
import de.intevation.flys.artifacts.resources.Resources;


public final class Formatter {

    // KMS IN ERROR REPORTS.
    public static final int CALCULATION_REPORT_KM_MIN_DIGITS = 1;
    public static final int CALCULATION_REPORT_KM_MAX_DIGITS = 3;

    // WATERLEVEL FORMATTER CONSTANTS
    public static final int WATERLEVEL_KM_MIN_DIGITS = 3;
    public static final int WATERLEVEL_KM_MAX_DIGITS = 3;
    public static final int WATERLEVEL_W_MIN_DIGITS  = 0;
    public static final int WATERLEVEL_W_MAX_DIGITS  = 2;
    public static final int WATERLEVEL_Q_MIN_DIGITS  = 0;
    public static final int WATERLEVEL_Q_MAX_DIGITS  = 2;


    // COMPUTED DISCHARGE CURVE FORMATTER CONSTANTS
    public static final int COMPUTED_DISCHARGE_W_MIN_DIGITS  = 2;
    public static final int COMPUTED_DISCHARGE_W_MAX_DIGITS  = 2;
    public static final int COMPUTED_DISCHARGE_Q_MIN_DIGITS  = 0;
    public static final int COMPUTED_DISCHARGE_Q_MAX_DIGITS  = 2;


    // HISTORICAL DISCHARGE CURVE FORMATTER CONSTANTS
    public static final int HISTORICAL_DISCHARGE_W_MIN_DIGITS = 0;
    public static final int HISTORICAL_DISCHARGE_W_MAX_DIGITS = 2;
    public static final int HISTORICAL_DISCHARGE_Q_MIN_DIGITS = 0;
    public static final int HISTORICAL_DISCHARGE_Q_MAX_DIGITS = 2;


    // DURATION CURVE FORMATTER CONSTANTS
    public static final int DURATION_W_MIN_DIGITS = 0;
    public static final int DURATION_W_MAX_DIGITS = 2;
    public static final int DURATION_Q_MIN_DIGITS = 0;
    public static final int DURATION_Q_MAX_DIGITS = 1;
    public static final int DURATION_D_MIN_DIGITS = 0;
    public static final int DURATION_D_MAX_DIGITS = 0;


    // FLOW VELOCITY FORMATTER CONSTANTS
    public static final int FLOW_VELOCITY_KM_MIN_DIGITS     = 3;
    public static final int FLOW_VELOCITY_KM_MAX_DIGITS     = 3;
    public static final int FLOW_VELOCITY_VALUES_MIN_DIGITS = 2;
    public static final int FLOW_VELOCITY_VALUES_MAX_DIGITS = 2;
    public static final int FLOW_VELOCITY_Q_MIN_DIGITS      = 0;
    public static final int FLOW_VELOCITY_Q_MAX_DIGITS      = 2;


    // MIDDLE BED HEIGHT FORMATTER CONSTANTS
    public static final int MIDDLE_BED_HEIGHT_KM_MIN_DIGITS             = 3;
    public static final int MIDDLE_BED_HEIGHT_KM_MAX_DIGITS             = 3;
    public static final int MIDDLE_BED_HEIGHT_HEIGHT_MIN_DIGITS         = 3;
    public static final int MIDDLE_BED_HEIGHT_HEIGHT_MAX_DIGITS         = 3;
    public static final int MIDDLE_BED_HEIGHT_UNCERT_MIN_DIGITS         = 3;
    public static final int MIDDLE_BED_HEIGHT_UNCERT_MAX_DIGITS         = 3;
    public static final int MIDDLE_BED_HEIGHT_DATAGAP_MIN_DIGITS        = 2;
    public static final int MIDDLE_BED_HEIGHT_DATAGAP_MAX_DIGITS        = 2;
    public static final int MIDDLE_BED_HEIGHT_SOUNDING_WIDTH_MIN_DIGITS = 0;
    public static final int MIDDLE_BED_HEIGHT_SOUNDING_WIDTH_MAX_DIGITS = 0;
    public static final int MIDDLE_BED_HEIGHT_WIDTH_MIN_DIGITS          = 3;
    public static final int MIDDLE_BED_HEIGHT_WIDTH_MAX_DIGITS          = 3;

    public static final int FIX_DELTA_W_KM_MIN_DIGITS = 3;
    public static final int FIX_DELTA_W_KM_MAX_DIGITS = 3;
    public static final int FIX_DELTA_W_DELTA_W_MIN_DIGITS = 3;
    public static final int FIX_DELTA_W_DELTA_W_MAX_DIGITS = 3;
    public static final int FIX_DELTA_W_DELTA_Q_MIN_DIGITS  = 0;
    public static final int FIX_DELTA_W_DELTA_Q_MAX_DIGITS  = 2;

    /**
     * Creates a localized NumberFormatter with given range of decimal digits.
     * @param m CallMeta to find the locale.
     * @param min minimum number of decimal ("fraction") digits.
     * @param max maximum number of decimal ("fraction") digits.
     * @return A NumberFormat. Use #format(NUMBER) to get String representation
     *         of NUMBER.
     */
    public static NumberFormat getFormatter(CallMeta m, int min, int max){
        Locale       locale = Resources.getLocale(m);
        NumberFormat nf     = NumberFormat.getInstance(locale);

        nf.setMaximumFractionDigits(max);
        nf.setMinimumFractionDigits(min);

        return nf;
    }

    public static NumberFormat getFormatter(CallContext c, int min, int max){
        return getFormatter(c.getMeta(), min, max);
    }


    /**
     * Returns a number formatter with no max or min digits set.
     *
     * @param c The CallContext.
     *
     * @return a number formatter.
     */
    public static NumberFormat getRawFormatter(CallContext c) {
        Locale locale = Resources.getLocale(c.getMeta());
        return NumberFormat.getInstance(locale);
    }


    /**
     * Returns a date formatter with SHORT style.
     */
    public static DateFormat getShortDateFormat(CallContext cc) {
        Locale locale = Resources.getLocale(cc.getMeta());
        return DateFormat.getDateInstance(DateFormat.SHORT, locale);
    }


    /**
     * Returns a date formatter with MEDIUM style.
     */
    public static DateFormat getMediumDateFormat(CallContext cc) {
        Locale locale = Resources.getLocale(cc.getMeta());
        return DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
    }


    /**
     * Returns the number formatter for kilometer values in waterlevel exports.
     *
     * @return the number formatter for kilometer values.
     */
    public static NumberFormat getWaterlevelKM(CallContext context) {
        return getFormatter(
                context,
                WATERLEVEL_KM_MIN_DIGITS,
                WATERLEVEL_KM_MAX_DIGITS);
    }

    public static NumberFormat getWaterlevelW(CallMeta meta) {
        return getFormatter(
                meta,
                WATERLEVEL_W_MIN_DIGITS,
                WATERLEVEL_W_MAX_DIGITS);
    }

    /**
     * Returns the number formatter for W values in waterlevel exports.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getWaterlevelW(CallContext context) {
        return getFormatter(
                context,
                WATERLEVEL_W_MIN_DIGITS,
                WATERLEVEL_W_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for Q values in waterlevel exports.
     *
     * @return the number formatter for Q values.
     */
    public static NumberFormat getWaterlevelQ(CallContext context) {
        return getFormatter(
                context,
                WATERLEVEL_Q_MIN_DIGITS,
                WATERLEVEL_Q_MAX_DIGITS);
    }

    public static NumberFormat getWaterlevelQ(CallMeta meta) {
        return getFormatter(
                meta,
                WATERLEVEL_Q_MIN_DIGITS,
                WATERLEVEL_Q_MAX_DIGITS);
    }

    /**
     * Returns the number formatter for W values in exports of computed
     * discharge curves.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getComputedDischargeW(CallContext context) {
        return getFormatter(
                context,
                COMPUTED_DISCHARGE_W_MIN_DIGITS,
                COMPUTED_DISCHARGE_W_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for Q values in exports of computed
     * discharge curves.
     *
     * @return the number formatter for Q values.
     */
    public static NumberFormat getComputedDischargeQ(CallContext context) {
        return getFormatter(
                context,
                COMPUTED_DISCHARGE_Q_MIN_DIGITS,
                COMPUTED_DISCHARGE_Q_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for W values in exports of historical
     * discharge curves.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getHistoricalDischargeW(CallContext context) {
        return getFormatter(
                context,
                HISTORICAL_DISCHARGE_W_MIN_DIGITS,
                HISTORICAL_DISCHARGE_W_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for Q values in exports of historical
     * discharge curves.
     *
     * @return the number formatter for Q values.
     */
    public static NumberFormat getHistoricalDischargeQ(CallContext context) {
        return getFormatter(
                context,
                HISTORICAL_DISCHARGE_Q_MIN_DIGITS,
                HISTORICAL_DISCHARGE_Q_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for W values in duration curve exports.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getDurationW(CallContext context) {
        return getFormatter(
                context,
                DURATION_W_MIN_DIGITS,
                DURATION_W_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for Q values in duration curve exports.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getDurationQ(CallContext context) {
        return getFormatter(
                context,
                DURATION_Q_MIN_DIGITS,
                DURATION_Q_MAX_DIGITS);
    }


    /**
     * Returns the number formatter for D values in duration curve exports.
     *
     * @return the number formatter for W values.
     */
    public static NumberFormat getDurationD(CallContext context) {
        return getFormatter(
                context,
                DURATION_D_MIN_DIGITS,
                DURATION_D_MAX_DIGITS);
    }

    public static NumberFormat getCalculationKm(CallMeta meta) {
        return getFormatter(
                meta,
                CALCULATION_REPORT_KM_MIN_DIGITS,
                CALCULATION_REPORT_KM_MAX_DIGITS);
    }


    public static NumberFormat getFlowVelocityKM(CallContext context) {
        return getFormatter(
                context,
                FLOW_VELOCITY_KM_MIN_DIGITS,
                FLOW_VELOCITY_KM_MAX_DIGITS);
    }


    public static NumberFormat getFlowVelocityValues(CallContext context) {
        return getFormatter(
                context,
                FLOW_VELOCITY_VALUES_MIN_DIGITS,
                FLOW_VELOCITY_VALUES_MAX_DIGITS);
    }


    public static NumberFormat getFlowVelocityQ(CallContext context) {
        return getFormatter(
                context,
                FLOW_VELOCITY_Q_MIN_DIGITS,
                FLOW_VELOCITY_Q_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightKM(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_KM_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_KM_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightHeight(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_HEIGHT_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_HEIGHT_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightUncert(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_UNCERT_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_UNCERT_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightDataGap(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_DATAGAP_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_DATAGAP_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightSounding(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_SOUNDING_WIDTH_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_SOUNDING_WIDTH_MAX_DIGITS);
    }


    public static NumberFormat getMiddleBedHeightWidth(CallContext context) {
        return getFormatter(
                context,
                MIDDLE_BED_HEIGHT_WIDTH_MIN_DIGITS,
                MIDDLE_BED_HEIGHT_WIDTH_MAX_DIGITS);
    }

    public static NumberFormat getFixDeltaWKM(CallContext context) {
        return getFormatter(
                context,
                FIX_DELTA_W_KM_MIN_DIGITS,
                FIX_DELTA_W_KM_MAX_DIGITS);
    }

    public static NumberFormat getFixDeltaWDeltaW(CallContext context) {
        return getFormatter(
                context,
                FIX_DELTA_W_DELTA_W_MIN_DIGITS,
                FIX_DELTA_W_DELTA_W_MAX_DIGITS);
    }

    public static NumberFormat getFixDeltaWQ(CallContext context) {
        return getFormatter(
                context,
                FIX_DELTA_W_DELTA_Q_MIN_DIGITS,
                FIX_DELTA_W_DELTA_Q_MAX_DIGITS);
    }

    public static NumberFormat getFixDeltaWW(CallContext context) {
        return getFormatter(
                context,
                FIX_DELTA_W_DELTA_W_MIN_DIGITS,
                FIX_DELTA_W_DELTA_W_MAX_DIGITS);
    }

    public static NumberFormat getMeterFormat(CallContext context) {
        return getFormatter(
                context,
                0,
                2);

    }

    public static DateFormat getDateFormatter(CallMeta m, String pattern) {
        Locale locale = Resources.getLocale(m);
        return new SimpleDateFormat(pattern, locale);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org