Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 2606:619f6dfec901
#460 Fixed duplicated Outputs in DESCRIBE documents.
flys-artifacts/trunk@4186 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 30 Mar 2012 09:38:29 +0000 |
parents | a22e0cb6eace |
children | c553d4fa3957 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Thu Mar 29 11:09:26 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Fri Mar 30 09:38:29 2012 +0000 @@ -264,10 +264,12 @@ facets = flys.cloneFacets(); // Do not clone filter facets! - List<String> stateIds = getPreviousStateIds(); - stateIds.add(getCurrentStateId()); + ArrayList<String> stateIds = (ArrayList<String>) getPreviousStateIds(); + ArrayList<String> toInitialize = (ArrayList<String>) stateIds.clone(); - for (String stateId: stateIds) { + toInitialize.add(getCurrentStateId()); + + for (String stateId: toInitialize) { State state = getState(context, stateId); if (state != null) { @@ -393,16 +395,19 @@ Element result = ec.create("result"); - String targetState = XMLUtils.xpathString( + String currentStateId = getCurrentStateId(); + String targetState = XMLUtils.xpathString( target, XPATH_ADVANCE_TARGET, ArtifactNamespaceContext.INSTANCE); logger.info("FLYSArtifact.advance() to '" + targetState + "'"); - if (isStateReachable(targetState, context)) { + if (!currentStateId.equals(targetState) + && isStateReachable(targetState, context)) + { logger.info("Advance: Step forward"); List<String> prev = getPreviousStateIds(); - prev.add(getCurrentStateId()); + prev.add(currentStateId); setCurrentStateId(targetState); @@ -528,7 +533,9 @@ * @return #getPreviousStateIds() + #getCurrentStateId() */ public List<String> getStateHistoryIds() { - List<String> allIds = getPreviousStateIds(); + ArrayList<String> prevIds = (ArrayList) getPreviousStateIds(); + ArrayList<String> allIds = (ArrayList) prevIds.clone(); + allIds.add(getCurrentStateId()); return allIds; } @@ -1238,13 +1245,15 @@ public void endOfLife(Object context) { logger.info("FLYSArtifact.endOfLife: " + identifier()); - List<String> ids = getPreviousStateIds(); - ids.add(getCurrentStateId()); + ArrayList<String> ids = (ArrayList<String>) getPreviousStateIds(); + ArrayList<String> toDestroy = (ArrayList<String>) ids.clone(); - destroyStates(ids, context); + toDestroy.add(getCurrentStateId()); + + destroyStates(toDestroy, context); } - - + + /** * Determines Facets initial disposition regarding activity (think of * selection in Client ThemeList GUI). This will be checked one time