01: package org.andromda.cartridges.bpm4struts.metafacades;
02:
03: import java.util.ArrayList;
04: import java.util.Collection;
05: import java.util.Iterator;
06: import java.util.LinkedHashMap;
07: import java.util.LinkedHashSet;
08: import java.util.List;
09: import java.util.Map;
10:
11: import org.andromda.metafacades.uml.ActivityGraphFacade;
12: import org.andromda.metafacades.uml.StateMachineFacade;
13: import org.andromda.metafacades.uml.TransitionFacade;
14: import org.andromda.metafacades.uml.UseCaseFacade;
15:
16: /**
17: * MetafacadeLogic implementation.
18: *
19: * @see org.andromda.cartridges.bpm4struts.metafacades.StrutsActionState
20: */
21: public class StrutsActionStateLogicImpl extends StrutsActionStateLogic {
22: public StrutsActionStateLogicImpl(java.lang.Object metaObject,
23: java.lang.String context) {
24: super (metaObject, context);
25: }
26:
27: /**
28: * Overridden because StrutsAction does not extend FrontEndAction.
29: *
30: * @see org.andromda.metafacades.uml.FrontEndActionState#getContainerActions()
31: */
32: public List getContainerActions() {
33: final Collection actionSet = new LinkedHashSet();
34:
35: final StateMachineFacade stateMachineFacade = this
36: .getStateMachine();
37: if (stateMachineFacade instanceof ActivityGraphFacade) {
38: final ActivityGraphFacade activityGraph = (ActivityGraphFacade) stateMachineFacade;
39: final UseCaseFacade useCase = activityGraph.getUseCase();
40:
41: if (useCase instanceof StrutsUseCase) {
42: final Collection actions = ((StrutsUseCase) useCase)
43: .getActions();
44: for (final Iterator actionIterator = actions.iterator(); actionIterator
45: .hasNext();) {
46: final StrutsAction action = (StrutsAction) actionIterator
47: .next();
48: if (action.getActionStates().contains(this )) {
49: actionSet.add(action);
50: }
51: }
52: }
53: }
54: return new ArrayList(actionSet);
55: }
56:
57: /**
58: * @see org.andromda.metafacades.uml.FrontEndActionState#getExceptions()
59: */
60: public java.util.List getExceptions() {
61: final Map exceptionsMap = new LinkedHashMap();
62: final Collection outgoing = getOutgoing();
63: for (final Iterator iterator = outgoing.iterator(); iterator
64: .hasNext();) {
65: final TransitionFacade transition = (TransitionFacade) iterator
66: .next();
67: if (transition instanceof StrutsExceptionHandler) {
68: exceptionsMap.put(((StrutsExceptionHandler) transition)
69: .getExceptionKey(), transition);
70: }
71: }
72: return new ArrayList(exceptionsMap.values());
73: }
74: }
|