2323import org .eclipse .emf .ecore .EAttribute ;
2424import org .eclipse .emf .ecore .EClass ;
2525import org .eclipse .emf .ecore .EClassifier ;
26- import org .eclipse .emf .ecore .EModelElement ;
2726import org .eclipse .emf .ecore .EObject ;
2827import org .eclipse .emf .ecore .EReference ;
2928import org .eclipse .emf .ecore .EStructuralFeature ;
3433import org .gemoc .xdsmlframework .api .engine_addon .modelchangelistener .NonCollectionFieldModelChange ;
3534import org .gemoc .xdsmlframework .api .engine_addon .modelchangelistener .PotentialCollectionFieldModelChange ;
3635import org .gemoc .xdsmlframework .api .engine_addon .modelchangelistener .RemovedObjectModelChange ;
36+ import org .gemoc .xdsmlframework .commons .DynamicAnnotationHelper ;
3737
3838import fr .inria .diverse .trace .commons .model .generictrace .BooleanAttributeValue ;
3939import fr .inria .diverse .trace .commons .model .generictrace .GenericDimension ;
@@ -79,27 +79,13 @@ private Set<Resource> getAllExecutedModelResources() {
7979 allResources .removeIf (r -> r == null );
8080 return allResources ;
8181 }
82-
83- public static final String DYNAMIC_ANNOTATION_URI = "aspect" ;
84-
85- private static boolean isDynamic (EModelElement o ) {
86- return o .getEAnnotations ().stream ().anyMatch (a -> a .getSource ().equals (DYNAMIC_ANNOTATION_URI ));
87- }
8882
89- public static boolean isDynamic (EClass c ) {
90- return isDynamic ((EModelElement )c );
91- }
92-
93- public static boolean isDynamic (EStructuralFeature p ) {
94- return isDynamic ((EModelElement ) p ) || isDynamic (p .getEContainingClass ());
95- }
96-
9783 private boolean addNewObjectToStateIfDynamic (EObject object , GenericState state ) {
9884 final EClass c = object .eClass ();
9985 final List <EStructuralFeature > mutableProperties = c .getEAllStructuralFeatures ().stream ()
100- .filter (p -> isDynamic (p ))
86+ .filter (p -> DynamicAnnotationHelper . isDynamic (p ))
10187 .collect (Collectors .toList ());
102- if (isDynamic (object .eClass ()) || !mutableProperties .isEmpty ()) {
88+ if (DynamicAnnotationHelper . isDynamic (object .eClass ()) || !mutableProperties .isEmpty ()) {
10389 return addNewObjectToState (object , mutableProperties , lastState );
10490 }
10591 return true ;
@@ -128,7 +114,7 @@ private GenericValue getGenericValue(EObject object, EStructuralFeature mutableP
128114 final List <EObject > modelElements = (List <EObject >) object .eGet (mutableProperty );
129115 final ManyReferenceValue value = GenerictraceFactory .eINSTANCE .createManyReferenceValue ();
130116 for (EObject o : modelElements ) {
131- if (isDynamic (o .eClass ())) {
117+ if (DynamicAnnotationHelper . isDynamic (o .eClass ())) {
132118 value .getReferenceValues ().add (exeToTraced .get (o ));
133119 } else {
134120 value .getReferenceValues ().add (o );
@@ -138,7 +124,7 @@ private GenericValue getGenericValue(EObject object, EStructuralFeature mutableP
138124 } else {
139125 final EObject o = (EObject ) object .eGet (mutableProperty );
140126 final SingleReferenceValue value = GenerictraceFactory .eINSTANCE .createSingleReferenceValue ();
141- if (isDynamic (o .eClass ())) {
127+ if (DynamicAnnotationHelper . isDynamic (o .eClass ())) {
142128 value .setReferenceValue (exeToTraced .get (o ));
143129 } else {
144130 value .setReferenceValue (o );
@@ -154,7 +140,7 @@ private boolean addNewObjectToState(EObject object, List<EStructuralFeature> mut
154140 boolean added = false ;
155141 if (!exeToTraced .containsKey (object )) {
156142 final GenericTracedObject tracedObject = GenerictraceFactory .eINSTANCE .createGenericTracedObject ();
157- if (!isDynamic (object .eClass ())) {
143+ if (!DynamicAnnotationHelper . isDynamic (object .eClass ())) {
158144 tracedObject .setOriginalObject (object );
159145 }
160146 exeToTraced .put (object , tracedObject );
0 commit comments