View Javadoc

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