comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/MinMaxState.java @ 725:dde7f51dbe1e

Improved exception handling while feeding an artifact. gnv-artifacts/trunk@757 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 10 Mar 2010 13:27:14 +0000
parents 65f09139e9b3
children 9a828e5a2390
comparison
equal deleted inserted replaced
724:9ba6bb85d6dd 725:dde7f51dbe1e
1 package de.intevation.gnv.state; 1 package de.intevation.gnv.state;
2 2
3 import de.intevation.artifactdatabase.XMLUtils; 3 import de.intevation.artifactdatabase.XMLUtils;
4 4
5 import de.intevation.artifacts.CallContext;
5 import de.intevation.artifacts.CallMeta; 6 import de.intevation.artifacts.CallMeta;
6 7
7 import de.intevation.gnv.artifacts.ressource.RessourceFactory; 8 import de.intevation.gnv.artifacts.ressource.RessourceFactory;
8 9
9 import de.intevation.gnv.geobackend.base.Result; 10 import de.intevation.gnv.geobackend.base.Result;
35 * @author Tim Englich (tim.englich@intevation.de) 36 * @author Tim Englich (tim.englich@intevation.de)
36 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) 37 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
37 */ 38 */
38 public class MinMaxState extends StateBase { 39 public class MinMaxState extends StateBase {
39 40
40 /**
41 * The UID of this Class
42 */
43 private static final long serialVersionUID = -3525903792105187408L;
44 /** 41 /**
45 * the logger, used to log exceptions and additonaly information 42 * the logger, used to log exceptions and additonaly information
46 */ 43 */
47 private static Logger log = Logger.getLogger(MinMaxState.class); 44 private static Logger log = Logger.getLogger(MinMaxState.class);
48 45
82 /** 79 /**
83 * @see de.intevation.gnv.state.StateBase#feed(java.util.Collection, 80 * @see de.intevation.gnv.state.StateBase#feed(java.util.Collection,
84 * java.lang.String) 81 * java.lang.String)
85 */ 82 */
86 @Override 83 @Override
87 public void feed(Collection<InputData> inputData, String uuid) 84 public Document feed(
88 throws StateException 85 CallContext context,
89 { 86 Collection<InputData> inputData,
90 if (inputData == null) 87 String uuid)
91 return; 88 throws StateException {
89 RessourceFactory resFactory = RessourceFactory.getInstance();
90
91 if (inputData == null) {
92 String msg = "No input data given.";
93 log.warn(msg);
94 return feedFailure(msg);
95 }
92 96
93 InputValidator iv = new InputValidator(); 97 InputValidator iv = new InputValidator();
94 Iterator iter = inputData.iterator(); 98 Iterator iter = inputData.iterator();
95 99
96 Object min = null; 100 Object min = null;
97 Object max = null; 101 Object max = null;
98 102
99 while (iter.hasNext()) { 103 while (iter.hasNext()) {
100 InputData tmp = (InputData) iter.next(); 104 InputData tmp = (InputData) iter.next();
101 InputValue meta = inputValues.get(tmp.getName()); 105 InputValue meta = inputValues.get(tmp.getName());
106 String type = meta.getType();
102 String value = tmp.getValue(); 107 String value = tmp.getValue();
103 String name = tmp.getName(); 108 String name = tmp.getName();
104 109
105 if (meta == null) { 110 if (meta == null) {
106 log.warn("Input data not expected here. Data will be ignored."); 111 String msg = "Input data not expected here. Data will be ignored.";
107 return; 112 log.warn(msg);
108 } 113 return feedFailure(msg);
109 114 }
110 boolean valid = iv.isInputValid(value, meta.getType()); 115
116 boolean valid = iv.isInputValid(value, type);
111 if (!valid) { 117 if (!valid) {
112 String msg = "Input is not valid for this state."; 118 String msg = "Input is not valid for this state.";
113 log.error(msg); 119 log.error(msg);
114 throw new StateException(msg); 120 return feedFailure(msg);
115 } 121 }
116 122
117 if (name.equals(MINVALUEFIELDNAME)) { 123 if (name.equals(MINVALUEFIELDNAME)) {
118 min = value; 124 min = value;
119 } 125 }
120 126
121 if (name.equals(MAXVALUEFIELDNAME)) { 127 if (name.equals(MAXVALUEFIELDNAME)) {
122 max = value; 128 max = value;
123 } 129 }
124 } 130
125 131 if (min != null && max != null) {
126 if (min != null && max != null) { 132 if (!iv.isInputValid((String) min, (String) max, type)) {
127 DescribeData values = new DefaultMinMaxDescribeData( 133 String msg = "Input is not valid for this state.";
128 dataName, min, max, getID()); 134 log.error(msg);
129 135 return feedFailure(msg);
130 this.inputData.put(dataName, new DefaultInputData(dataName, values)); 136 }
131 } 137 }
138 }
139
140
141
142 DescribeData values = new DefaultMinMaxDescribeData(
143 dataName, min, max, getID());
144
145 this.inputData.put(dataName, new DefaultInputData(dataName, values));
146
147 return feedSuccess();
132 } 148 }
133 149
134 150
135 @Override 151 @Override
136 protected void appendToStaticNode( 152 protected void appendToStaticNode(

http://dive4elements.wald.intevation.org