view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/CalculationSelectMinfo.java @ 5627:2d9eb188fa51

Flys Issue 759 write longer strings and explicitly break the lines This makes the dem hover item layout more robust as it works with different string lengths
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 10 Apr 2013 10:25:33 +0200
parents edaa2297aea3
children
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import org.apache.log4j.Logger;

import org.w3c.dom.Element;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.CallContext;
import de.intevation.artifacts.CallMeta;

import de.intevation.artifacts.common.utils.XMLUtils;

import de.intevation.artifactdatabase.data.StateData;

import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.resources.Resources;

/**
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class CalculationSelectMinfo extends DefaultState {

    /** The logger that is used in this class. */
    private static Logger logger = Logger.getLogger(CalculationSelectMinfo.class);


    public static final String FIELD_MODE = "calculation_mode";

    public static final String CALC_BED_MIDDLE    = "calc.bed.middle";
    public static final String CALC_BED_DIFF      = "calc.bed.diff";
    public static final String CALC_BED_QUALITY   = "calc.bed.quality";
    public static final String CALC_SEDIMENT_LOAD = "calc.sediment.load";
    public static final String CALC_FLOW_VELOCITY = "calc.flow.velocity";
    public static final String CALC_SQ_RELATION   = "calc.sq.relation";

    /** An array that holds all available calculation modes. */
    public static final String[] CALCULATIONS = {
        CALC_BED_MIDDLE,
        CALC_BED_DIFF,
        CALC_BED_QUALITY,
        CALC_SEDIMENT_LOAD,
        CALC_FLOW_VELOCITY,
        CALC_SQ_RELATION
    };


    /** Error message that is thrown if no mode has been chosen. */
    public static final String ERROR_NO_CALCULATION_MODE =
        "error_feed_no_calculation_mode";

    /** Error message that is thrown if an invalid calculation mode has been
     * chosen. */
    public static  final String ERROR_INVALID_CALCULATION_MODE =
        "error_feed_invalid_calculation_mode";


    public CalculationSelectMinfo() {
    }


    @Override
    protected Element[] createItems(
        XMLUtils.ElementCreator cr,
        Artifact    artifact,
        String      name,
        CallContext context)
    {
        CallMeta meta   = context.getMeta();
        Element[] calcs = new Element[CALCULATIONS.length];

        for (int i = 0; i < CALCULATIONS.length; ++i) {
            String calc = CALCULATIONS[i];
            calcs[i] = createItem(
                cr, new String[] {
                    Resources.getMsg(meta, calc, calc),
                    calc
                });
        }

        return calcs;
    }


    @Override
    public boolean validate(Artifact artifact)
    throws IllegalArgumentException
    {
        logger.debug("CalculationSelect.validate");
        FLYSArtifact flys = (FLYSArtifact) artifact;

        StateData data = getData(flys, FIELD_MODE);
        String    calc = (data != null) ? (String) data.getValue() : null;

        if (calc == null) {
            throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE);
        }

        calc = calc.trim().toLowerCase();

        for (String mode: CALCULATIONS) {
            if (mode.equals(calc)) {
                return true;
            }
        }

        throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org