comparison 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
comparison
equal deleted inserted replaced
256:55d08706ccf2 257:8c2b6cdf22ad
4 import java.util.HashMap; 4 import java.util.HashMap;
5 import java.util.List; 5 import java.util.List;
6 import java.util.Map; 6 import java.util.Map;
7 7
8 import org.apache.log4j.Logger; 8 import org.apache.log4j.Logger;
9
10 import de.intevation.artifacts.Artifact;
9 11
10 import de.intevation.artifactdatabase.state.State; 12 import de.intevation.artifactdatabase.state.State;
11 import de.intevation.artifactdatabase.state.StateEngine; 13 import de.intevation.artifactdatabase.state.StateEngine;
12 14
13 15
79 * @param state The current state. 81 * @param state The current state.
80 * @param engine The state engine. 82 * @param engine The state engine.
81 * 83 *
82 * @return a list of reachable states. 84 * @return a list of reachable states.
83 */ 85 */
84 public List<State> getReachableStates(State state, StateEngine engine) { 86 public List<State> getReachableStates(
87 Artifact artifact,
88 State state,
89 StateEngine engine) {
85 List<Transition> transitions = getTransitions(state); 90 List<Transition> transitions = getTransitions(state);
86 List<State> reachable = new ArrayList<State>(); 91 List<State> reachable = new ArrayList<State>();
87 92
88 if (transitions == null) { 93 if (transitions == null) {
89 return reachable; 94 return reachable;
90 } 95 }
91 96
92 for (Transition t: transitions) { 97 for (Transition t: transitions) {
93 if (t.isValid(state)) { 98 State target = engine.getState(t.getTo());
94 reachable.add(engine.getState(t.getTo())); 99
100 if (t.isValid(artifact, state, target)) {
101 reachable.add(target);
95 } 102 }
96 } 103 }
97 104
98 return reachable; 105 return reachable;
99 } 106 }
101 108
102 /** 109 /**
103 * Determines if a state with a given identifier is reachable from a current 110 * Determines if a state with a given identifier is reachable from a current
104 * state. 111 * state.
105 * 112 *
113 * @param artifact The owner artifact of state <i>state</i>.
106 * @param targetId The identifier of the target state. 114 * @param targetId The identifier of the target state.
107 * @param state The start state. 115 * @param state The start state.
108 * @param stateEngine The StateEngine. 116 * @param stateEngine The StateEngine.
109 * 117 *
110 * @return true, if the target state is reachable, otherwise false. 118 * @return true, if the target state is reachable, otherwise false.
111 */ 119 */
112 public boolean isStateReachable( 120 public boolean isStateReachable(
121 Artifact artifact,
113 String targetId, 122 String targetId,
114 State state, 123 State state,
115 StateEngine stateEngine) 124 StateEngine stateEngine)
116 { 125 {
117 List<State> reachable = getReachableStates(state, stateEngine); 126 List<State> reachable = getReachableStates(artifact, state,stateEngine);
118 127
119 if (reachable == null || reachable.size() == 0) { 128 if (reachable == null || reachable.size() == 0) {
120 return false; 129 return false;
121 } 130 }
122 131

http://dive4elements.wald.intevation.org