package fr.inria.diverse.iot2.iot2.aspects; import fr.inria.diverse.iot2.iot2.iot2.ActivityEdge; import fr.inria.diverse.iot2.iot2.iot2.MergeNode; import fr.inria.diverse.k3.al.annotationprocessor.Aspect; import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import fr.inria.diverse.iot2.iot2.aspects.ActivityEdgeAspect; import fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect; import fr.inria.diverse.iot2.iot2.aspects.Context; import fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspectMergeNodeAspectProperties; import fr.inria.diverse.iot2.iot2.aspects.Token; @Aspect(className = MergeNode.class) @SuppressWarnings("all") public class MergeNodeAspect extends ActivityNodeAspect { @OverrideAspectMethod public static void execute(final MergeNode _self, final Context c) { fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspectMergeNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspectMergeNodeAspectContext.getSelf(_self); if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.MergeNode){ fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspect._privk3_execute(_self_, (fr.inria.diverse.iot2.iot2.iot2.MergeNode)_self,c); } else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.ActivityNode){ fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect.execute((fr.inria.diverse.iot2.iot2.iot2.ActivityNode)_self,c); } else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.NamedElement){ fr.inria.diverse.iot2.iot2.aspects.NamedElementAspect.execute((fr.inria.diverse.iot2.iot2.iot2.NamedElement)_self,c); } else { throw new IllegalArgumentException("Unhandled parameter types: " + java.util.Arrays.<Object>asList(_self).toString()); }; } public static boolean hasOffers(final MergeNode _self) { fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspectMergeNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspectMergeNodeAspectContext.getSelf(_self); Object result = null; if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.MergeNode){ result = fr.inria.diverse.iot2.iot2.aspects.MergeNodeAspect._privk3_hasOffers(_self_, (fr.inria.diverse.iot2.iot2.iot2.MergeNode)_self); } else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.ActivityNode){ result = fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect.hasOffers((fr.inria.diverse.iot2.iot2.iot2.ActivityNode)_self); } else { throw new IllegalArgumentException("Unhandled parameter types: " + java.util.Arrays.<Object>asList(_self).toString()); }; return (boolean)result; } private static void super_execute(final MergeNode _self, final Context c) { fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectContext.getSelf(_self); fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect._privk3_execute(_self_, _self,c); } protected static void _privk3_execute(final MergeNodeAspectMergeNodeAspectProperties _self_, final MergeNode _self, final Context c) { c.output.executedNodes.add(_self); List<Token> _takeOfferdTokens = ActivityNodeAspect.takeOfferdTokens(_self); ActivityNodeAspect.sendOffers(_self, _takeOfferdTokens); } protected static boolean _privk3_hasOffers(final MergeNodeAspectMergeNodeAspectProperties _self_, final MergeNode _self) { EList<ActivityEdge> _incoming = _self.getIncoming(); final Function1<ActivityEdge, Boolean> _function = (ActivityEdge edge) -> { return Boolean.valueOf(ActivityEdgeAspect.hasOffer(edge)); }; return IterableExtensions.<ActivityEdge>exists(_incoming, _function); } }