view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java @ 4241:49cb65d5932d

Improved the historical discharge calculation. The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is improved to support those facets.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Oct 2012 14:34:35 +0200
parents b3aa91e45010
children c72fc256b368
line wrap: on
line source
package de.intevation.flys.artifacts.model;

/** 'Types' of facets. */
public interface FacetTypes {

    /** Static helper class to determine if a Facet name is of a generalized
     * 'type'. */
    public static class IS {
        public static boolean WQ_KM(String type) {
           return type.equals(DISCHARGE_LONGITUDINAL_W)
               || type.equals(LONGITUDINAL_W);
        }
        public static boolean W_KM(String type) {
            return type.equals(STATIC_WKMS)
               || type.equals(HEIGHTMARKS_POINTS)
               || WQ_KM(type);
        }
        public static boolean AREA(String type) {
            return type.equals(AREA)
                || type.equals(CROSS_SECTION_AREA)
                || type.equals(LONGITUDINAL_SECTION_AREA);
        }
        public static boolean W(String type) {
            return type.equals(LONGITUDINAL_W)
                || type.equals(DISCHARGE_LONGITUDINAL_W)
                || type.equals(DURATION_W)
                || type.equals(STATIC_WKMS)
                || type.equals(STATIC_WQKMS_W);
        }
        public static boolean Q(String type) {
            return type.equals(LONGITUDINAL_Q)
                || type.equals(DISCHARGE_LONGITUDINAL_Q)
                || type.equals(DURATION_Q)
                || type.equals(STATIC_WQKMS_Q);
        }
        public static boolean V(String type) {
            return type.equals(FLOW_VELOCITY_MAINCHANNEL)
                || type.equals(FLOW_VELOCITY_TOTALCHANNEL);
        }
        public static boolean T(String type) {
            return type.equals(FLOW_VELOCITY_TAU);
        }
        public static boolean H(String type) {
            return type.equals(MIDDLE_BED_HEIGHT_SINGLE)
                || type.equals(MIDDLE_BED_HEIGHT_EPOCH);
        }
        public static boolean MANUALPOINTS(String type) {
            return type.endsWith("manualpoints");
        }
        public static boolean MANUALLINE(String type) {
            return type.endsWith("manualline");
        }
        public static boolean SQ_CURVE(String type) {
            if (type.equals(SQ_A_CURVE)
                || type.equals(SQ_B_CURVE)
                || type.equals(SQ_C_CURVE)
                || type.equals(SQ_D_CURVE)
                || type.equals(SQ_E_CURVE)
                || type.equals(SQ_F_CURVE)
                || type.equals(SQ_A_OUTLIER_CURVE)
                || type.equals(SQ_B_OUTLIER_CURVE)
                || type.equals(SQ_C_OUTLIER_CURVE)
                || type.equals(SQ_D_OUTLIER_CURVE)
                || type.equals(SQ_E_OUTLIER_CURVE)
                || type.equals(SQ_F_OUTLIER_CURVE)
                )
            {
                return true;
            }

            return false;
        }
        public static boolean SQ_MEASUREMENT(String type) {
            if (type.equals(SQ_A_MEASUREMENT)
                || type.equals(SQ_B_MEASUREMENT)
                || type.equals(SQ_C_MEASUREMENT)
                || type.equals(SQ_D_MEASUREMENT)
                || type.equals(SQ_E_MEASUREMENT)
                || type.equals(SQ_F_MEASUREMENT)
                || type.equals(SQ_A_OUTLIER_MEASUREMENT)
                || type.equals(SQ_B_OUTLIER_MEASUREMENT)
                || type.equals(SQ_C_OUTLIER_MEASUREMENT)
                || type.equals(SQ_D_OUTLIER_MEASUREMENT)
                || type.equals(SQ_E_OUTLIER_MEASUREMENT)
                || type.equals(SQ_F_OUTLIER_MEASUREMENT)
                )
            {
                return true;
            }

            return false;
        }
        public static boolean SQ_OUTLIER(String type) {
            if (type.equals(SQ_A_OUTLIER)
                || type.equals(SQ_B_OUTLIER)
                || type.equals(SQ_C_OUTLIER)
                || type.equals(SQ_D_OUTLIER)
                || type.equals(SQ_E_OUTLIER)
                || type.equals(SQ_F_OUTLIER))
            {
                return true;
            }

            return false;
        }
    };

    /** Available diagram/chart-types.  This enum is evaluated at certain
     * places to iterate over chart-types to e.g. dynamically generate
     * Facet-names (ManualPoints for example). */
    public enum ChartType {
        FD("fix_derivate_curve"),
        LS("longitudinal_section"),
        CS("cross_section"),
        DLS("discharge_longitudinal_section"),
        CDC("computed_discharge_curve"),
        DUC("duration_curve"),
        DIC("discharge_curve"),
        RC("reference_curve"),
        RCN("reference_curve_normalized"),
        WD("wdifferences"),
        FWQC("fix_wq_curve"),
        FDWC("fix_deltawt_curve"),
        FLSC("fix_longitudinal_section_curve"),
        FDC("fix_derivate_curve"),
        HD("historical_discharge");

        private String chartTypeString;

        ChartType(String description) {
            this.chartTypeString = description;
        }

        @Override
        public String toString() {
            return chartTypeString;
        }
    }

    String AREA                        = "area";
    String CROSS_SECTION_AREA          = "cross_section.area";
    String LONGITUDINAL_SECTION_AREA   = "longitudinal_section.area";

    String FLOODMAP_WSPLGEN            = "floodmap.wsplgen";
    String FLOODMAP_BARRIERS           = "floodmap.barriers";
    String FLOODMAP_USERSHAPE          = "floodmap.usershape";
    String FLOODMAP_RIVERAXIS          = "floodmap.riveraxis";
    String FLOODMAP_WMSBACKGROUND      = "floodmap.wmsbackground";
    String FLOODMAP_KMS                = "floodmap.kms";
    String FLOODMAP_QPS                = "floodmap.qps";
    String FLOODMAP_HWS                = "floodmap.hws";
    String FLOODMAP_HYDR_BOUNDARY      = "floodmap.hydr_boundaries";
    String FLOODMAP_HYDR_BOUNDARY_POLY = "floodmap.hydr_boundaries_poly";
    String FLOODMAP_CATCHMENT          = "floodmap.catchment";
    String FLOODMAP_FLOODPLAIN         = "floodmap.floodplain";
    String FLOODMAP_LINES              = "floodmap.lines";
    String FLOODMAP_BUILDINGS          = "floodmap.buildings";
    String FLOODMAP_FIXPOINTS          = "floodmap.fixpoints";
    String FLOODMAP_FLOODMAPS          = "floodmap.floodmaps";
    String FLOODMAP_GAUGE_LOCATION     = "floodmap.gauge_location";
    String FLOODMAP_EXTERNAL_WMS       = "floodmap.externalwms";

    String DISCHARGE_LONGITUDINAL_W = "discharge_longitudinal_section.w";
    String DISCHARGE_LONGITUDINAL_Q = "discharge_longitudinal_section.q";
    String DISCHARGE_LONGITUDINAL_C = "discharge_longitudinal_section.c";

    String LONGITUDINAL_W = "longitudinal_section.w";
    String LONGITUDINAL_Q = "longitudinal_section.q";
    String LONGITUDINAL_ANNOTATION   = "longitudinal_section.annotations";
    String LONGITUDINAL_MANUALPOINTS = "longitudinal_section.manualpoints";

    String W_DIFFERENCES = "w_differences";

    String COMPUTED_DISCHARGE_Q = "computed_discharge_curve.q";
    String COMPUTED_DISCHARGE_MAINVALUES_Q = "computed_discharge_curve.mainvalues.q";
    String COMPUTED_DISCHARGE_MAINVALUES_W = "computed_discharge_curve.mainvalues.w";

    String MAINVALUES_Q = "mainvalues.q";
    String MAINVALUES_W = "mainvalues.w";

    String CROSS_SECTION = "cross_section";
    String CROSS_SECTION_WATER_LINE = "cross_section_water_line";

    String HYK = "hyk";

    String DISCHARGE_CURVE = "discharge_curve.curve";
    String GAUGE_DISCHARGE_CURVE = "gauge_discharge_curve";
    String GAUGE_DISCHARGE_CURVE_AT_EXPORT = "gauge_discharge_curve_at_export";

    String DURATION_W = "duration_curve.w";
    String DURATION_Q = "duration_curve.q";
    String DURATION_MAINVALUES_Q = "duration_curve.mainvalues.q";

    String MANUALPOINTS = "manualpoints";
    String MANUALLINE = "manualline";

    String QSECTOR        = "qsectors";

    String STATIC_WQ      = "other.wq";
    String STATIC_WQ_ANNOTATIONS = "other.wq.annotations";
    String STATIC_WKMS    = "other.wkms";
    String STATIC_WKMS_MARKS = "other.wkms.marks";
    String STATIC_WQKMS   = "other.wqkms";
    String STATIC_WQKMS_W = "other.wqkms.w";
    String STATIC_WQKMS_Q = "other.wqkms.q";
    String STATIC_WKMS_INTERPOL = "other.wkms.interpol";

    String HEIGHTMARKS_POINTS = "heightmarks_points";

    String CSV = "csv";
    String WST = "wst";
    String AT  = "at";
    String PDF = "pdf";

    String REPORT = "report";

    String HISTORICAL_DISCHARGE_Q      = "historical_discharge.historicalq";
    String HISTORICAL_DISCHARGE_Q_DIFF = "historical_discharge.historicalq.diff";
    String HISTORICAL_DISCHARGE_W      = "historical_discharge.historicalw";
    String HISTORICAL_DISCHARGE_W_DIFF = "historical_discharge.historicalw.diff";
    String HISTORICAL_DISCHARGE_WQ_Q   = "historical_discharge.wq.q";
    String HISTORICAL_DISCHARGE_WQ_W   = "historical_discharge.wq.w";
    String HISTORICAL_DISCHARGE_WQ_CURVE = "historical_discharge.wq.curve";

    String REFERENCE_CURVE = "reference_curve";
    String REFERENCE_CURVE_NORMALIZED = "reference_curve_normalized";

    String FLOW_VELOCITY_MAINCHANNEL  = "flow_velocity.mainchannel";
    String FLOW_VELOCITY_TOTALCHANNEL = "flow_velocity.totalchannel";
    String FLOW_VELOCITY_TAU          = "flow_velocity.tau";
    String FLOW_VELOCITY_ANNOTATION   = "flow_velocity.annotation";

    String MIDDLE_BED_HEIGHT_SINGLE     = "bedheight_middle.single";
    String MIDDLE_BED_HEIGHT_EPOCH      = "bedheight_middle.epoch";
    String MIDDLE_BED_HEIGHT_ANNOTATION = "bedheight_middle.annotation";

    String BED_QUALITY_POROSITY_TOPLAYER         = "bed_longitudinal_section.porosity_toplayer";
    String BED_QUALITY_POROSITY_SUBLAYER         = "bed_longitudinal_section.porosity_sublayer";
    String BED_QUALITY_BED_DIAMETER_TOPLAYER     = "bed_longitudinal_section.bed_diameter_toplayer";
    String BED_QUALITY_BED_DIAMETER_SUBLAYER     = "bed_longitudinal_section.bed_diameter_sublayer";
    String BED_QUALITY_SEDIMENT_DENSITY_TOPLAYER = "bed_longitudinal_section.sediment_density_toplayer";
    String BED_QUALITY_SEDIMENT_DENSITY_SUBLAYER = "bed_longitudinal_section.sediment_density_sublayer";
    String BED_QUALITY_BEDLOAD_DIAMETER          = "bed_longitudinal_section.bedload_diameter";

    String BED_DIFFERENCE_YEAR          = "bedheight_difference.year";
    String BED_DIFFERENCE_HEIGHT_YEAR   = "bedheight_difference.height_year";
    String BED_DIFFERENCE_EPOCH         = "bedheight_difference.epoch";
    String BED_DIFFERENCE_MORPH_WIDTH   = "bedheight_difference.morph_width";
    String BED_DIFFERENCE_YEAR_HEIGHT1  = "bedheight_difference.year.height1";
    String BED_DIFFERENCE_YEAR_HEIGHT2  = "bedheight_difference.year.height2";
    String BED_DIFFERENCE_EPOCH_HEIGHT1 = "bedheight_difference.epoch.height1";
    String BED_DIFFERENCE_EPOCH_HEIGHT2 = "bedheight_difference.epoch.height2";

    String SQ_OVERVIEW       = "sq_overview";

    String SQ_A_CURVE       = "sq_a_curve";
    String SQ_A_MEASUREMENT = "sq_a_measurement";
    String SQ_A_OUTLIER     = "sq_a_outlier";
    String SQ_A_OUTLIER_CURVE = "sq_a_outlier_curve";
    String SQ_A_OUTLIER_MEASUREMENT = "sq_a_outlier_measurement";

    String SQ_B_CURVE       = "sq_b_curve";
    String SQ_B_MEASUREMENT = "sq_b_measurement";
    String SQ_B_OUTLIER     = "sq_b_outlier";
    String SQ_B_OUTLIER_CURVE  = "sq_b_outlier_curve";
    String SQ_B_OUTLIER_MEASUREMENT  = "sq_b_outlier_measurement";

    String SQ_C_CURVE       = "sq_c_curve";
    String SQ_C_MEASUREMENT = "sq_c_measurement";
    String SQ_C_OUTLIER     = "sq_c_outlier";
    String SQ_C_OUTLIER_CURVE = "sq_c_outlier_curve";
    String SQ_C_OUTLIER_MEASUREMENT = "sq_c_outlier_measurement";

    String SQ_D_CURVE       = "sq_d_curve";
    String SQ_D_MEASUREMENT = "sq_d_measurement";
    String SQ_D_OUTLIER     = "sq_d_outlier";
    String SQ_D_OUTLIER_CURVE = "sq_d_outlier_curve";
    String SQ_D_OUTLIER_MEASUREMENT = "sq_d_outlier_measurement";

    String SQ_E_CURVE       = "sq_e_curve";
    String SQ_E_MEASUREMENT = "sq_e_measurement";
    String SQ_E_OUTLIER     = "sq_e_outlier";
    String SQ_E_OUTLIER_CURVE = "sq_e_outlier_curve";
    String SQ_E_OUTLIER_MEASUREMENT = "sq_e_outlier_curve_measurement";

    String SQ_F_CURVE       = "sq_f_curve";
    String SQ_F_MEASUREMENT = "sq_f_measurement";
    String SQ_F_OUTLIER     = "sq_f_outlier";
    String SQ_F_OUTLIER_CURVE = "sq_f_outlier_curve";
    String SQ_F_OUTLIER_MEASUREMENT = "sq_f_outlier_measurement";

    String RELATIVE_POINT = "relativepoint";

    String FIX_ANALYSIS_EVENTS_DWT = "fix_analysis_events_dwt";
    String FIX_ANALYSIS_EVENTS_LS = "fix_analysis_events_ls";
    String FIX_ANALYSIS_EVENTS_WQ = "fix_analysis_events_wq";

    String FIX_REFERENCE_EVENTS_DWT = "fix_reference_events_dwt";
    String FIX_REFERENCE_EVENTS_LS = "fix_reference_events_ls";
    String FIX_REFERENCE_EVENTS_WQ = "fix_reference_events_wq";
    String FIX_REFERENCE_PERIOD_DWT = "fix_reference_period_dwt";

    // Note that AVERAGE_DWT will get a postfix (e.g. ..._dwt_1)
    String FIX_SECTOR_AVERAGE_DWT = "fix_sector_average_dwt";
    String FIX_SECTOR_AVERAGE_LS = "fix_sector_average_ls";
    String FIX_SECTOR_AVERAGE_WQ = "fix_sector_average_wq";
    String FIX_SECTOR_AVERAGE_LS_DEVIATION = "fix_sector_average_ls_deviation";

    String FIX_WQ_CURVE = "fix_wq_curve";
    String FIX_OUTLIER = "fix_outlier";

    String FIX_ANALYSIS_PERIODS_DWT = "fix_analysis_periods_dwt";
    String FIX_ANALYSIS_PERIODS_LS = "fix_analysis_periods_ls";
    String FIX_ANALYSIS_PERIODS_WQ = "fix_analysis_periods_wq";

    String FIX_DERIVATE_CURVE = "fix_derivate_curve";

    String FIX_DEVIATION_DWT = "fix_deviation_dwt";
    String FIX_DEVIATION_LS = "fix_deviation_ls";

    String FIX_PARAMETERS = "fix_parameters";

    String STATIC_BEDHEIGHT = "static_bedheight";
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org