Mercurial > dive4elements > framework
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 |