
mir.reactions.personsToFamilies.InsertedPersonReaction Maven / Gradle / Ivy
package mir.reactions.personsToFamilies;
import edu.kit.ipd.sdq.metamodels.persons.Person;
import edu.kit.ipd.sdq.metamodels.persons.PersonRegister;
import java.util.function.Function;
import mir.routines.personsToFamilies.PersonsToFamiliesRoutinesFacade;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.xtext.xbase.lib.Extension;
import tools.vitruv.change.atomic.EChange;
import tools.vitruv.change.atomic.feature.reference.InsertEReference;
import tools.vitruv.dsls.reactions.runtime.reactions.AbstractReaction;
import tools.vitruv.dsls.reactions.runtime.routines.AbstractRoutine;
import tools.vitruv.dsls.reactions.runtime.routines.RoutinesFacade;
import tools.vitruv.dsls.reactions.runtime.state.ReactionExecutionState;
@SuppressWarnings("all")
public class InsertedPersonReaction extends AbstractReaction {
private InsertEReference insertChange;
public InsertedPersonReaction(final Function routinesFacadeGenerator) {
super(routinesFacadeGenerator);
}
private static class Call extends AbstractRoutine.Update {
public Call(final ReactionExecutionState reactionExecutionState) {
super(reactionExecutionState);
}
public void updateModels(final InsertEReference insertChange, final PersonRegister affectedEObject, final EReference affectedFeature, final Person newValue, final int index, @Extension final PersonsToFamiliesRoutinesFacade _routinesFacade) {
_routinesFacade.insertAsParentOrChild(newValue);
}
}
public boolean isCurrentChangeMatchingTrigger(final EChange change) {
if (!(change instanceof InsertEReference>)) {
return false;
}
InsertEReference _localTypedChange = (InsertEReference) change;
if (!(_localTypedChange.getAffectedElement() instanceof edu.kit.ipd.sdq.metamodels.persons.PersonRegister)) {
return false;
}
if (!_localTypedChange.getAffectedFeature().getName().equals("persons")) {
return false;
}
if (!(_localTypedChange.getNewValue() instanceof edu.kit.ipd.sdq.metamodels.persons.Person)) {
return false;
}
this.insertChange = (InsertEReference) change;
return true;
}
public void executeReaction(final EChange change, final ReactionExecutionState executionState, final RoutinesFacade routinesFacadeUntyped) {
mir.routines.personsToFamilies.PersonsToFamiliesRoutinesFacade routinesFacade = (mir.routines.personsToFamilies.PersonsToFamiliesRoutinesFacade)routinesFacadeUntyped;
if (!isCurrentChangeMatchingTrigger(change)) {
return;
}
edu.kit.ipd.sdq.metamodels.persons.PersonRegister affectedEObject = (edu.kit.ipd.sdq.metamodels.persons.PersonRegister)insertChange.getAffectedElement();
EReference affectedFeature = insertChange.getAffectedFeature();
edu.kit.ipd.sdq.metamodels.persons.Person newValue = (edu.kit.ipd.sdq.metamodels.persons.Person)insertChange.getNewValue();
int index = insertChange.getIndex();
if (getLogger().isTraceEnabled()) {
getLogger().trace("Passed complete precondition check of Reaction " + this.getClass().getName());
}
new mir.reactions.personsToFamilies.InsertedPersonReaction.Call(executionState).updateModels(insertChange, affectedEObject, affectedFeature, newValue, index, routinesFacade);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy