use of org.yakindu.sct.model.stext.stext.ReactionEffect in project statecharts by Yakindu.
the class FoldOutgoingActionsRefactoring method createExitBlock.
private EList<Expression> createExitBlock(List<Expression> actionsToAdd) {
EList<Expression> actionsOriginal;
LocalReaction newLocalReaction = StextFactory.eINSTANCE.createLocalReaction();
ReactionTrigger newReactionTrigger = StextFactory.eINSTANCE.createReactionTrigger();
ExitEvent exitEvent = StextFactory.eINSTANCE.createExitEvent();
ReactionEffect newReactionEffect = StextFactory.eINSTANCE.createReactionEffect();
newLocalReaction.setTrigger(newReactionTrigger);
newReactionTrigger.getTriggers().add(exitEvent);
newReactionEffect.getActions().addAll(actionsToAdd);
newLocalReaction.setEffect(newReactionEffect);
Scope scope = getContextObject().getScopes().get(0);
scope.getReactions().add(newLocalReaction);
actionsOriginal = newReactionEffect.getActions();
return actionsOriginal;
}
use of org.yakindu.sct.model.stext.stext.ReactionEffect in project statecharts by Yakindu.
the class FoldIncomingActionsRefactoring method getLastActions.
private List<Expression> getLastActions(Transition transition, int number) {
List<Expression> lastActions = new ArrayList<Expression>();
Effect effect = transition.getEffect();
if (effect instanceof ReactionEffect) {
ReactionEffect reactionEffect = (ReactionEffect) effect;
List<Expression> actions = reactionEffect.getActions();
for (int i = 1; i <= number; i++) {
lastActions.add(actions.get(actions.size() - i));
}
}
return lastActions;
}
use of org.yakindu.sct.model.stext.stext.ReactionEffect in project statecharts by Yakindu.
the class FoldIncomingActionsRefactoring method removeLastActions.
private void removeLastActions(EList<Transition> transitions, int number) {
for (Transition transition : transitions) {
List<Expression> actionsToRemove = getLastActions(transition, number);
Effect effect = transition.getEffect();
if (effect instanceof ReactionEffect && actionsToRemove.size() == ((ReactionEffect) effect).getActions().size()) {
// we need to remove all actions, so just remove the effect
// recursively which avoids serializer exceptions
EcoreUtil.delete(effect, true);
} else {
for (Expression action : actionsToRemove) {
EcoreUtil.delete(action);
}
}
}
}
use of org.yakindu.sct.model.stext.stext.ReactionEffect in project statecharts by Yakindu.
the class UnfoldExitActionsRefactoring method addActionsToTransition.
private void addActionsToTransition(final Transition transition, final Collection<Expression> actionsToAdd) {
Effect effect = transition.getEffect();
if (effect instanceof ReactionEffect) {
ReactionEffect reactionEffect = (ReactionEffect) effect;
reactionEffect.getActions().addAll(0, actionsToAdd);
} else {
ReactionEffect reactionEffect = StextFactory.eINSTANCE.createReactionEffect();
reactionEffect.getActions().addAll(actionsToAdd);
transition.setEffect(reactionEffect);
}
}
Aggregations