comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/CalculationSelect.java @ 1190:f514894ec2fd

merged flys-artifacts/2.5
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:17 +0200
parents 47ecf98f09eb
children be06dbc2ed1d
comparison
equal deleted inserted replaced
917:b48c36076e17 1190:f514894ec2fd
1 package de.intevation.flys.artifacts.states;
2
3 import org.apache.log4j.Logger;
4
5 import org.w3c.dom.Element;
6
7 import de.intevation.artifacts.Artifact;
8 import de.intevation.artifacts.CallContext;
9 import de.intevation.artifacts.CallMeta;
10
11 import de.intevation.artifacts.common.utils.XMLUtils;
12
13 import de.intevation.artifactdatabase.data.StateData;
14
15 import de.intevation.flys.artifacts.FLYSArtifact;
16 import de.intevation.flys.artifacts.resources.Resources;
17
18 /**
19 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
20 */
21 public class CalculationSelect extends DefaultState {
22
23 /** The logger that is used in this class. */
24 private static Logger logger = Logger.getLogger(CalculationSelect.class);
25
26
27 public static final String FIELD_MODE = "calculation_mode";
28
29 /** Constant value for the reference line calculation. */
30 public static final String CALCULATION_SURFACE_CURVE =
31 "calc.surface.curve";
32
33 /** Constant value for the differences calculation. */
34 public static final String CALCULATION_DURATION_CURVE =
35 "calc.duration.curve";
36
37 /** Constant value for the flood map calculation. */
38 public static final String CALCULATION_FLOOD_MAP =
39 "calc.flood.map";
40
41 /** Constant value for the profile calculation. */
42 public static final String CALCULATION_DISCHARGE_LONGITUDINAL_CURVE =
43 "calc.discharge.longitudinal.section";
44
45 /** Constant value for the state discharge curve calculation. */
46 public static final String CALCULATION_DISCHARGE_CURVE =
47 "calc.discharge.curve";
48
49 /** Constant value for the state w differences calculation. */
50 public static final String CALCULATION_W_DIFFERENCES =
51 "calc.w.differences";
52
53 /** An array that holds all available calculation modes. */
54 public static final String[] CALCULATIONS = {
55 CALCULATION_SURFACE_CURVE,
56 CALCULATION_FLOOD_MAP,
57 CALCULATION_DISCHARGE_CURVE,
58 CALCULATION_DURATION_CURVE,
59 CALCULATION_DISCHARGE_LONGITUDINAL_CURVE,
60 CALCULATION_W_DIFFERENCES };
61
62
63 /** Error message that is thrown if no mode has been chosen. */
64 public static final String ERROR_NO_CALCULATION_MODE =
65 "error_feed_no_calculation_mode";
66
67 /** Error message that is thrown if an invalid calculation mode has been
68 * chosen. */
69 public static final String ERROR_INVALID_CALCULATION_MODE =
70 "error_feed_invalid_calculation_mode";
71
72
73 public CalculationSelect() {
74 }
75
76
77 @Override
78 protected Element[] createItems(
79 XMLUtils.ElementCreator cr,
80 Artifact artifact,
81 String name,
82 CallContext context)
83 {
84 CallMeta meta = context.getMeta();
85 Element[] calcs = new Element[CALCULATIONS.length];
86
87 int i = 0;
88
89 for (String calc: CALCULATIONS) {
90 calcs[i++] = createItem(
91 cr, new String[] {
92 Resources.getMsg(meta, calc, calc),
93 calc
94 });
95 }
96
97 return calcs;
98 }
99
100
101 @Override
102 public boolean validate(Artifact artifact)
103 throws IllegalArgumentException
104 {
105 logger.debug("CalculationSelect.validate");
106 FLYSArtifact flys = (FLYSArtifact) artifact;
107
108 StateData data = getData(flys, FIELD_MODE);
109 String calc = (data != null) ? (String) data.getValue() : null;
110
111 if (calc == null) {
112 throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE);
113 }
114
115 calc = calc.trim().toLowerCase();
116
117 for (String mode: CALCULATIONS) {
118 if (mode.equals(calc)) {
119 return true;
120 }
121 }
122
123 throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE);
124 }
125 }
126 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org