/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * <!-- begin-model-doc --> * The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines. * result = true * @param stateMachine The receiving '<em><b>State Machine</b></em>' model object. * <!-- end-model-doc --> * @generated NOT */ public static boolean isConsistentWith(StateMachine stateMachine, RedefinableElement redefinee) { if (redefinee != null && redefinee.isRedefinitionContextValid(stateMachine)) { StateMachine redefineeStateMachine = (StateMachine) redefinee; EList<Region> allRegions = getAllRegions(stateMachine); for (Region redefineeRegion : redefineeStateMachine.getRegions()) { Region extendedRegion = redefineeRegion.getExtendedRegion(); if (allRegions.contains(extendedRegion) && !extendedRegion.isConsistentWith(redefineeRegion)) { return false; } } return true; } return false; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * <!-- begin-model-doc --> * The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions. * result = true * @param state The receiving '<em><b>State</b></em>' model object. * <!-- end-model-doc --> * @generated NOT */ public static boolean isConsistentWith(State state, RedefinableElement redefinee) { if (redefinee != null && redefinee.isRedefinitionContextValid(state)) { State redefineeState = (State) redefinee; EList<Region> allRegions = getAllRegions(state); for (Region redefineeRegion : redefineeState.getRegions()) { Region extendedRegion = redefineeRegion.getExtendedRegion(); if (allRegions.contains(extendedRegion) && !extendedRegion.isConsistentWith(redefineeRegion)) { return false; } } return true; } return false; }