Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java @ 257:8c2b6cdf22ad
Modified Transition.isValid() - added the artifact and the current state to the parameter list.
artifacts/trunk@1758 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 28 Apr 2011 10:30:30 +0000 |
parents | 973f244ed568 |
children | f367be55dd35 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java Thu Apr 28 10:27:27 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java Thu Apr 28 10:30:30 2011 +0000 @@ -7,6 +7,8 @@ import org.apache.log4j.Logger; +import de.intevation.artifacts.Artifact; + import de.intevation.artifactdatabase.state.State; import de.intevation.artifactdatabase.state.StateEngine; @@ -81,7 +83,10 @@ * * @return a list of reachable states. */ - public List<State> getReachableStates(State state, StateEngine engine) { + public List<State> getReachableStates( + Artifact artifact, + State state, + StateEngine engine) { List<Transition> transitions = getTransitions(state); List<State> reachable = new ArrayList<State>(); @@ -90,8 +95,10 @@ } for (Transition t: transitions) { - if (t.isValid(state)) { - reachable.add(engine.getState(t.getTo())); + State target = engine.getState(t.getTo()); + + if (t.isValid(artifact, state, target)) { + reachable.add(target); } } @@ -103,6 +110,7 @@ * Determines if a state with a given identifier is reachable from a current * state. * + * @param artifact The owner artifact of state <i>state</i>. * @param targetId The identifier of the target state. * @param state The start state. * @param stateEngine The StateEngine. @@ -110,11 +118,12 @@ * @return true, if the target state is reachable, otherwise false. */ public boolean isStateReachable( + Artifact artifact, String targetId, State state, StateEngine stateEngine) { - List<State> reachable = getReachableStates(state, stateEngine); + List<State> reachable = getReachableStates(artifact, state,stateEngine); if (reachable == null || reachable.size() == 0) { return false;