01: package org.andromda.metafacades.uml14;
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.DependencyFacade;
11: import org.andromda.metafacades.uml.FilteredCollection;
12: import org.andromda.metafacades.uml.FrontEndActivityGraph;
13: import org.andromda.metafacades.uml.FrontEndControllerOperation;
14: import org.andromda.metafacades.uml.Service;
15: import org.andromda.metafacades.uml.StateMachineFacade;
16: import org.andromda.metafacades.uml.UMLProfile;
17:
18: /**
19: * MetafacadeLogic implementation for org.andromda.metafacades.uml.FrontEndController.
20: *
21: * @see org.andromda.metafacades.uml.FrontEndController
22: */
23: public class FrontEndControllerLogicImpl extends
24: FrontEndControllerLogic {
25: public FrontEndControllerLogicImpl(Object metaObject, String context) {
26: super (metaObject, context);
27: }
28:
29: /**
30: * @see org.andromda.metafacades.uml.FrontEndController#getServiceReferences()
31: */
32: protected java.util.List handleGetServiceReferences() {
33: return new FilteredCollection(this .getSourceDependencies()) {
34: public boolean evaluate(Object object) {
35: return ((DependencyFacade) object).getTargetElement() instanceof Service;
36: }
37: };
38: }
39:
40: /**
41: * @see org.andromda.metafacades.uml.FrontEndController#getUseCase()
42: */
43: protected java.lang.Object handleGetUseCase() {
44: Object useCase = null;
45: final StateMachineFacade graphContext = this
46: .getStateMachineContext();
47: if (graphContext instanceof FrontEndActivityGraph) {
48: useCase = ((ActivityGraphFacade) graphContext).getUseCase();
49: } else {
50: final Object useCaseTaggedValue = findTaggedValue(UMLProfile.TAGGEDVALUE_PRESENTATION_CONTROLLER_USECASE);
51: if (useCaseTaggedValue != null) {
52: final String tag = useCaseTaggedValue.toString();
53:
54: // - return the first use-case with this name
55: useCase = this
56: .getModel()
57: .findUseCaseWithNameAndStereotype(tag,
58: UMLProfile.STEREOTYPE_FRONT_END_USECASE);
59: }
60: }
61: return useCase;
62: }
63:
64: /**
65: * @see org.andromda.metafacades.uml.FrontEndController#getDeferringActions()
66: */
67: protected List handleGetDeferringActions() {
68: final Collection deferringActions = new LinkedHashSet();
69:
70: final Collection operations = getOperations();
71: for (final Iterator operationIterator = operations.iterator(); operationIterator
72: .hasNext();) {
73: final FrontEndControllerOperation operation = (FrontEndControllerOperation) operationIterator
74: .next();
75: deferringActions.addAll(operation.getDeferringActions());
76: }
77: return new ArrayList(deferringActions);
78: }
79: }
|