001package org.andromda.metafacades.uml14; 002 003import java.util.Collection; 004import java.util.Iterator; 005import org.omg.uml.behavioralelements.statemachines.State; 006import org.omg.uml.behavioralelements.statemachines.Transition; 007import org.omg.uml.behavioralelements.statemachines.Event; 008 009/** 010 * MetafacadeLogic implementation. 011 * 012 * @see org.andromda.metafacades.uml.EventFacade 013 * @author Bob Fields 014 */ 015public class EventFacadeLogicImpl 016 extends EventFacadeLogic 017{ 018 private static final long serialVersionUID = -6251731927740002930L; 019 020 /** 021 * @param metaObject 022 * @param context 023 */ 024 public EventFacadeLogicImpl( 025 Event metaObject, 026 String context) 027 { 028 super(metaObject, context); 029 } 030 031 /** 032 * @see org.andromda.metafacades.uml.EventFacade#getParameters() 033 */ 034 @Override 035 protected Collection handleGetParameters() 036 { 037 return metaObject.getParameter(); 038 } 039 040 /** 041 * @see org.andromda.metafacades.uml.EventFacade#getTransition() 042 */ 043 @Override 044 protected Transition handleGetTransition() 045 { 046 Transition eventTransition = null; 047 048 final Collection<Transition> allTransitions = 049 UML14MetafacadeUtils.getModel().getStateMachines().getTransition().refAllOfType(); 050 for (final Iterator<Transition> iterator = allTransitions.iterator(); iterator.hasNext() && eventTransition == null;) 051 { 052 final Transition transition = iterator.next(); 053 if (metaObject.equals(transition.getTrigger())) 054 { 055 eventTransition = transition; 056 } 057 } 058 059 return eventTransition; 060 } 061 062 /** 063 * @see org.andromda.metafacades.uml.EventFacade#getState() 064 */ 065 @Override 066 protected State handleGetState() 067 { 068 State eventState = null; 069 070 final Collection<State> allStates = UML14MetafacadeUtils.getModel().getStateMachines().getState().refAllOfType(); 071 for (final Iterator<State> stateIterator = allStates.iterator(); stateIterator.hasNext() && eventState == null;) 072 { 073 final State state = stateIterator.next(); 074 if (state.getDeferrableEvent().contains(metaObject)) 075 { 076 eventState = state; 077 } 078 } 079 080 return eventState; 081 } 082 083 /** 084 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner() 085 */ 086 public Object getValidationOwner() 087 { 088 Object validationOwner = this.getTransition(); 089 if (validationOwner == null) 090 { 091 validationOwner = this.getState(); 092 } 093 return validationOwner; 094 } 095}