comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 123:ebb1cb69d847

The operations feed() and advance() return the current description of the artifact now. flys-artifacts/trunk@1449 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 10 Mar 2011 08:38:05 +0000
parents d3b8b0b1d010
children 43f03f6047b9
comparison
equal deleted inserted replaced
122:d3b8b0b1d010 123:ebb1cb69d847
142 * 142 *
143 * @return a document that contains a SUCCESS or FAILURE message. 143 * @return a document that contains a SUCCESS or FAILURE message.
144 */ 144 */
145 @Override 145 @Override
146 public Document feed(Document target, CallContext context) { 146 public Document feed(Document target, CallContext context) {
147 logger.info("FLYSArtifact.feed()");
148
147 Document doc = XMLUtils.newDocument(); 149 Document doc = XMLUtils.newDocument();
148 150
149 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( 151 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
150 doc, 152 doc,
151 ArtifactNamespaceContext.NAMESPACE_URI, 153 ArtifactNamespaceContext.NAMESPACE_URI,
154 Element result = creator.create("result"); 156 Element result = creator.create("result");
155 doc.appendChild(result); 157 doc.appendChild(result);
156 158
157 try { 159 try {
158 saveData(target, XPATH_FEED_INPUT); 160 saveData(target, XPATH_FEED_INPUT);
159 creator.addAttr(result, "type", OPERATION_SUCCESSFUL, true); 161 return describe(target, context);
160 } 162 }
161 catch (IllegalArgumentException iae) { 163 catch (IllegalArgumentException iae) {
162 creator.addAttr(result, "type", OPERATION_FAILED, true); 164 creator.addAttr(result, "type", OPERATION_FAILED, true);
163 165
164 // TODO I18N this message - getMessage() returns a lookup string, no 166 // TODO I18N this message - getMessage() returns a lookup string, no
178 * @param context The CallContext. 180 * @param context The CallContext.
179 * 181 *
180 * @return a document that contains a SUCCESS or FAILURE message. 182 * @return a document that contains a SUCCESS or FAILURE message.
181 */ 183 */
182 public Document advance(Document target, CallContext context) { 184 public Document advance(Document target, CallContext context) {
185 logger.info("FLYSArtifact.advance()");
186
183 Document doc = XMLUtils.newDocument(); 187 Document doc = XMLUtils.newDocument();
184 188
185 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( 189 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
186 doc, 190 doc,
187 ArtifactNamespaceContext.NAMESPACE_URI, 191 ArtifactNamespaceContext.NAMESPACE_URI,
188 ArtifactNamespaceContext.NAMESPACE_PREFIX); 192 ArtifactNamespaceContext.NAMESPACE_PREFIX);
189 193
190 Element result = ec.create("result"); 194 Element result = ec.create("result");
191 doc.appendChild(result);
192 195
193 String targetState = XMLUtils.xpathString( 196 String targetState = XMLUtils.xpathString(
194 target, XPATH_ADVANCE_TARGET, ArtifactNamespaceContext.INSTANCE); 197 target, XPATH_ADVANCE_TARGET, ArtifactNamespaceContext.INSTANCE);
195 198
196 if (isStateReachable(targetState, context)) { 199 if (isStateReachable(targetState, context)) {
199 Vector<String> prev = getPreviousStateIds(); 202 Vector<String> prev = getPreviousStateIds();
200 prev.add(getCurrentStateId()); 203 prev.add(getCurrentStateId());
201 204
202 setCurrentStateId(targetState); 205 setCurrentStateId(targetState);
203 206
204 ec.addAttr(result, "type", OPERATION_SUCCESSFUL, true); 207 return describe(target, context);
205
206 return doc;
207 } 208 }
208 209
209 // TODO IMPLEMENT STEP BACK! 210 // TODO IMPLEMENT STEP BACK!
210 211
211 logger.warn("Advance: Cannot advance to '" + targetState + "'"); 212 logger.warn("Advance: Cannot advance to '" + targetState + "'");
212
213 ec.addAttr(result, "type", OPERATION_FAILED, true); 213 ec.addAttr(result, "type", OPERATION_FAILED, true);
214
215 doc.appendChild(result);
214 216
215 return doc; 217 return doc;
216 } 218 }
217 219
218 220

http://dive4elements.wald.intevation.org