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.LinkedHashSet;
07: import java.util.List;
08:
09: import org.andromda.metafacades.uml.ActivityGraphFacade;
10: import org.andromda.metafacades.uml.StateMachineFacade;
11: import org.andromda.metafacades.uml.TransitionFacade;
12: import org.andromda.metafacades.uml.UseCaseFacade;
13: import org.andromda.utils.StringUtilsHelper;
14:
15: /**
16: * MetafacadeLogic implementation.
17: *
18: * @see org.andromda.cartridges.bpm4struts.metafacades.StrutsPseudostate
19: */
20: public class StrutsPseudostateLogicImpl extends StrutsPseudostateLogic {
21: public StrutsPseudostateLogicImpl(java.lang.Object metaObject,
22: java.lang.String context) {
23: super (metaObject, context);
24: }
25:
26: protected boolean handleIsContainedInFrontEndUseCase() {
27: return this .getStateMachine() instanceof StrutsActivityGraph;
28: }
29:
30: /**
31: * @see org.andromda.cartridges.bpm4struts.metafacades.StrutsPseudostate#getActionMethodName()()
32: */
33: protected java.lang.String handleGetActionMethodName() {
34: final String methodName = getName();
35: return (methodName == null) ? "a" + System.currentTimeMillis()
36: : StringUtilsHelper.lowerCamelCaseName(methodName);
37: }
38:
39: /**
40: * Overrideen since StrutsAction does not extend FrontEndAction
41: *
42: * @see org.andromda.metafacades.uml.FrontEndPseudostate#getContainerActions()
43: */
44: public List getContainerActions() {
45: final Collection actionSet = new LinkedHashSet();
46: final StateMachineFacade graphContext = getStateMachine();
47:
48: if (graphContext instanceof ActivityGraphFacade) {
49: final UseCaseFacade useCase = ((ActivityGraphFacade) graphContext)
50: .getUseCase();
51:
52: if (useCase instanceof StrutsUseCase) {
53: Collection actions = ((StrutsUseCase) useCase)
54: .getActions();
55: for (final Iterator actionIterator = actions.iterator(); actionIterator
56: .hasNext();) {
57: StrutsAction action = (StrutsAction) actionIterator
58: .next();
59: Collection transitions = action.getTransitions();
60: for (final Iterator transitionIterator = transitions
61: .iterator(); transitionIterator.hasNext();) {
62: TransitionFacade transition = (TransitionFacade) transitionIterator
63: .next();
64: if (this .equals(transition.getTarget())) {
65: actionSet.add(action);
66: }
67: }
68: }
69: }
70: }
71: return new ArrayList(actionSet);
72: }
73: }
|