Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/CalculationSelectMinfo.java @ 4269:0c766c475805
Add Panel and Tree UI classes for dispayling the measurement station info
The new ui classes are using the new extracted base class InfoPanel and InfoTree
which are in common with the gauge info.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 26 Oct 2012 12:22:06 +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 :