Class SubsetSupersetEObjectEList<E>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>, java.util.RandomAccess, org.eclipse.emf.common.notify.NotifyingList<E>, org.eclipse.emf.common.util.EList<E>, org.eclipse.emf.ecore.EStructuralFeature.Setting, org.eclipse.emf.ecore.util.InternalEList<E>, org.eclipse.emf.ecore.util.InternalEList.Unsettable<E>
    Direct Known Subclasses:
    SubsetSupersetEObjectContainmentEList, SubsetSupersetEObjectResolvingEList, SubsetSupersetEObjectWithInverseEList

    public class SubsetSupersetEObjectEList<E>
    extends ModelEObjectEList<E>
    A list that enforces subset/superset constraints. Specifically, when an element is added to a subset, it is also added to the associated superset(s), if not already present; when an element is removed from a superset, it is also removed from the associated subset(s), if present.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.eclipse.emf.ecore.util.EObjectEList

        org.eclipse.emf.ecore.util.EObjectEList.Unsettable<E extends java.lang.Object>
      • Nested classes/interfaces inherited from class org.eclipse.emf.ecore.util.EcoreEList

        org.eclipse.emf.ecore.util.EcoreEList.Dynamic<E extends java.lang.Object>, org.eclipse.emf.ecore.util.EcoreEList.Generic<E extends java.lang.Object>, org.eclipse.emf.ecore.util.EcoreEList.UnmodifiableEList<E extends java.lang.Object>
      • Nested classes/interfaces inherited from class org.eclipse.emf.common.util.BasicEList

        org.eclipse.emf.common.util.BasicEList.BasicIndexOutOfBoundsException, org.eclipse.emf.common.util.BasicEList.EIterator<E1 extends java.lang.Object>, org.eclipse.emf.common.util.BasicEList.EListIterator<E1 extends java.lang.Object>, org.eclipse.emf.common.util.BasicEList.FastCompare<E extends java.lang.Object>, org.eclipse.emf.common.util.BasicEList.NonResolvingEIterator<E1 extends java.lang.Object>, org.eclipse.emf.common.util.BasicEList.NonResolvingEListIterator<E1 extends java.lang.Object>
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static long serialVersionUID  
      protected int[] subsetFeatureIDs
      An array of subset feature identifiers.
      protected int[] supersetFeatureIDs
      An array of superset feature identifiers.
      • Fields inherited from class org.eclipse.emf.ecore.util.EObjectEList

        featureID
      • Fields inherited from class org.eclipse.emf.ecore.util.EcoreEList

        dataClass, owner
      • Fields inherited from class org.eclipse.emf.common.util.BasicEList

        data, size
      • Fields inherited from class java.util.AbstractList

        modCount
    • Constructor Summary

      Constructors 
      Constructor Description
      SubsetSupersetEObjectEList​(java.lang.Class<?> dataClass, org.eclipse.emf.ecore.InternalEObject owner, int featureID, int[] supersetFeatureIDs, int[] subsetFeatureIDs)
      Creates and initializes a new ModelEObjectEList instance.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, E object)  
      boolean add​(E object)  
      boolean addAll​(int index, java.util.Collection<? extends E> collection)  
      boolean addAll​(java.util.Collection<? extends E> collection)  
      org.eclipse.emf.common.notify.NotificationChain basicAdd​(E object, org.eclipse.emf.common.notify.NotificationChain notifications)  
      org.eclipse.emf.common.notify.NotificationChain basicSet​(int index, E object, org.eclipse.emf.common.notify.NotificationChain notifications)  
      protected void basicSupersetAdd​(java.lang.Object object, org.eclipse.emf.common.notify.NotificationChain notifications)
      Adds the specified element to the superset(s).
      private static boolean contains​(org.eclipse.emf.ecore.EObject target, org.eclipse.emf.ecore.EReference feature, org.eclipse.emf.ecore.EObject element)
      Check if target feature contains already given element
      protected void didRemove​(int index, E oldObject)  
      protected boolean enforceSubsetConstraints()
      Indicates whether subset constraints should be enforced.
      protected boolean enforceSupersetConstraints()
      Indicates whether superset constraints should be enforced.
      protected void replaceOrAddToSuperset​(java.lang.Object oldObject, java.lang.Object object)
      Replaces the specified value or adds ir to the superset if new value is not already added.
      protected org.eclipse.emf.ecore.EObject resolve​(int index, org.eclipse.emf.ecore.EObject eObject)  
      E set​(int index, E object)  
      protected void subsetRemove​(java.lang.Object object)
      Removes the specified element from the subset(s).
      protected void supersetAdd​(java.lang.Object object)
      Adds the specified element to the superset(s).
      • Methods inherited from class org.eclipse.emf.ecore.util.EObjectEList

        canContainNull, getFeatureID, isEObject, isUnique, resolve, useEquals
      • Methods inherited from class org.eclipse.emf.ecore.util.EcoreEList

        createNotification, createNotification, dispatchNotification, get, getEObject, getEStructuralFeature, getFeature, getFeatureType, getInverseEReference, getInverseFeatureClass, getInverseFeatureID, getNotifier, hasInstanceClass, hasProxies, inverseAdd, inverseRemove, isContainment, isInstance, isNotificationRequired, isSet, newData, resolve, resolveProxy, set, toArray, toArray, unset
      • Methods inherited from class org.eclipse.emf.ecore.util.NotifyingInternalEListImpl

        basicIterator, basicListIterator, basicListIterator
      • Methods inherited from class org.eclipse.emf.common.notify.impl.NotifyingListImpl

        addAllUnique, addAllUnique, addAllUnique, basicRemove, createNotification, createNotificationChain, doAddAllUnique, doAddAllUnique, doAddAllUnique, doAddAllUnique, doAddUnique, doAddUnique, doClear, doRemoveAll, doSetUnique, getFeatureID, hasShadow, shadowAdd, shadowRemove, shadowSet
      • Methods inherited from class org.eclipse.emf.common.util.BasicEList

        clone, data, grow, setData, shrink
      • Methods inherited from class org.eclipse.emf.common.util.AbstractEList

        didAdd, didChange, didClear, didMove, didSet, equalObjects, equals, getDuplicates, getNonDuplicates, hashCode, iterator, listIterator, listIterator, move, remove, retainAll, toString
      • Methods inherited from class java.util.AbstractList

        removeRange, subList
      • Methods inherited from class java.util.AbstractCollection

        containsAll
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface org.eclipse.emf.common.util.EList

        move
      • Methods inherited from interface org.eclipse.emf.ecore.util.InternalEList

        addAllUnique, basicIterator, basicListIterator, basicListIterator, basicRemove
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        containsAll, equals, hashCode, iterator, listIterator, listIterator, remove, replaceAll, retainAll, sort, spliterator, subList
    • Field Detail

      • supersetFeatureIDs

        protected final int[] supersetFeatureIDs
        An array of superset feature identifiers.
      • subsetFeatureIDs

        protected final int[] subsetFeatureIDs
        An array of subset feature identifiers.
    • Constructor Detail

      • SubsetSupersetEObjectEList

        public SubsetSupersetEObjectEList​(java.lang.Class<?> dataClass,
                                          org.eclipse.emf.ecore.InternalEObject owner,
                                          int featureID,
                                          @CheckForNull
                                          int[] supersetFeatureIDs,
                                          @CheckForNull
                                          int[] subsetFeatureIDs)
        Creates and initializes a new ModelEObjectEList instance.
        Parameters:
        dataClass - data class.
        owner - owner of the setting.
        featureID - feature id.
        supersetFeatureIDs - array of superset features.
        subsetFeatureIDs - array of subset features.
    • Method Detail

      • enforceSubsetConstraints

        protected boolean enforceSubsetConstraints()
        Indicates whether subset constraints should be enforced.
        Returns:
        true if subset constraints should be enforced; false otherwise.
      • supersetAdd

        protected void supersetAdd​(java.lang.Object object)
        Adds the specified element to the superset(s).
        Parameters:
        object - The element to be added.
      • basicSupersetAdd

        protected void basicSupersetAdd​(java.lang.Object object,
                                        org.eclipse.emf.common.notify.NotificationChain notifications)
        Adds the specified element to the superset(s). Similar to supersetAdd, but does basicAdd in order to avoid other end setting without "containts" check
        Parameters:
        object - The element to be added.
        See Also:
        supersetAdd(Object)
      • contains

        private static boolean contains​(org.eclipse.emf.ecore.EObject target,
                                        org.eclipse.emf.ecore.EReference feature,
                                        org.eclipse.emf.ecore.EObject element)
        Check if target feature contains already given element
        Parameters:
        target - target
        feature - target feature
        element - element to check
        Returns:
        true if feature's value already contains element
      • enforceSupersetConstraints

        protected boolean enforceSupersetConstraints()
        Indicates whether superset constraints should be enforced.
        Returns:
        true if superset constraints should be enforced; false otherwise.
      • subsetRemove

        protected void subsetRemove​(java.lang.Object object)
        Removes the specified element from the subset(s).
        Parameters:
        object - The element to be removed.
      • basicAdd

        public org.eclipse.emf.common.notify.NotificationChain basicAdd​(E object,
                                                                        org.eclipse.emf.common.notify.NotificationChain notifications)
        Specified by:
        basicAdd in interface org.eclipse.emf.ecore.util.InternalEList<E>
        Overrides:
        basicAdd in class ModelEObjectEList<E>
      • basicSet

        public org.eclipse.emf.common.notify.NotificationChain basicSet​(int index,
                                                                        E object,
                                                                        org.eclipse.emf.common.notify.NotificationChain notifications)
        Overrides:
        basicSet in class org.eclipse.emf.common.notify.impl.NotifyingListImpl<E>
      • add

        public void add​(int index,
                        E object)
        Specified by:
        add in interface java.util.List<E>
        Overrides:
        add in class org.eclipse.emf.common.util.AbstractEList<E>
      • add

        public boolean add​(E object)
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.List<E>
        Overrides:
        add in class org.eclipse.emf.common.util.AbstractEList<E>
      • addAll

        public boolean addAll​(java.util.Collection<? extends E> collection)
        Specified by:
        addAll in interface java.util.Collection<E>
        Specified by:
        addAll in interface java.util.List<E>
        Overrides:
        addAll in class org.eclipse.emf.common.util.AbstractEList<E>
      • addAll

        public boolean addAll​(int index,
                              java.util.Collection<? extends E> collection)
        Specified by:
        addAll in interface java.util.List<E>
        Overrides:
        addAll in class org.eclipse.emf.common.util.AbstractEList<E>
      • set

        public E set​(int index,
                     E object)
        Specified by:
        set in interface java.util.List<E>
        Overrides:
        set in class org.eclipse.emf.common.util.AbstractEList<E>
      • replaceOrAddToSuperset

        protected void replaceOrAddToSuperset​(java.lang.Object oldObject,
                                              java.lang.Object object)
        Replaces the specified value or adds ir to the superset if new value is not already added.
        Parameters:
        oldObject - old value.
        object - new value.
      • didRemove

        protected void didRemove​(int index,
                                 E oldObject)
        Overrides:
        didRemove in class org.eclipse.emf.common.util.AbstractEList<E>
      • resolve

        protected org.eclipse.emf.ecore.EObject resolve​(int index,
                                                        org.eclipse.emf.ecore.EObject eObject)
        Overrides:
        resolve in class org.eclipse.emf.ecore.util.EcoreEList<E>