1 | @Override | | 1 | @Override |
2 | public boolean predicate2(Object dm, Designer dsgr) { | | 2 | public boolean predicate2(Object dm, Designer dsgr) { |
3 | if (!(Model.getFacade().isACompositeState(dm))) { | | 3 | if (!(Model.getFacade().isAPseudostate(dm))) { |
4 | return NO_PROBLEM; | | 4 | return NO_PROBLEM; |
5 | } | | 5 | } |
6 | Object cs = /*(MCompositeState)*/ dm; | | 6 | Object k = Model.getFacade().getKind(dm); |
7 | | | 7 | if (!Model.getFacade().equalsPseudostateKind( |
8 | // if this composite state is not attached to a statemachine | | 8 | k, |
9 | // it is not the toplevel composite state. | | 9 | Model.getPseudostateKind().getInitial())) { |
10 | if (Model.getFacade().getStateMachine(cs) == null) { | | 10 | return NO_PROBLEM; |
11 | return NO_PROBLEM; | | 11 | } |
12 | } | | 12 | |
13 | Collection peers = Model.getFacade().getSubvertices(cs); | | 13 | // container state / composite state |
14 | int initialStateCount = 0; | | 14 | Object cs = Model.getFacade().getContainer(dm); |
15 | if (peers == null) { | | 15 | if (cs == null) { |
16 | return PROBLEM_FOUND; | | 16 | LOG.debug("null parent state"); |
17 | } | | 17 | return NO_PROBLEM; |
18 | for (Iterator iter = peers.iterator(); iter.hasNext();) { | | 18 | } |
19 | Object sv = iter.next(); | | 19 | |
20 | if (Model.getFacade().isAPseudostate(sv) | | 20 | int initialStateCount = 0; |
21 | && (Model.getFacade().getKind(sv).equals( | | 21 | Collection peers = Model.getFacade().getSubvertices(cs); |
22 | Model.getPseudostateKind().getInitial()))) { | | 22 | for (Object sv : peers) { |
23 | initialStateCount++; | | 23 | if (Model.getFacade().isAPseudostate(sv) |
24 | } | | 24 | && Model.getFacade(). |
25 | } | | 25 | equalsPseudostateKind( |
26 | if (initialStateCount == 0) { | | 26 | Model.getFacade().getKind(sv), |
27 | return PROBLEM_FOUND; | | 27 | Model.getPseudostateKind().getInitial())) { |
28 | } | | 28 | initialStateCount++; |
29 | return NO_PROBLEM; | | 29 | } |
30 | } | | 30 | } |
| | | 31 | if (initialStateCount > 1) { |
| | | 32 | return PROBLEM_FOUND; |
| | | 33 | } |
| | | 34 | return NO_PROBLEM; |
| | | 35 | } |