diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore index eb32c373d96435001bd49054046a421c14af2aff..638375772435462fdc100565458dfee13c441ef0 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore @@ -401,8 +401,8 @@ eType="#//BasicTypes" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//BasicTypes/basicType"/> <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDataAttribute" - ordered="false" eType="#//DataAttribute" transient="true" unsettable="true" - resolveProxies="false" eOpposite="#//DataAttribute/refersToBasicType"/> + ordered="false" upperBound="-1" eType="#//DataAttribute" transient="true" + unsettable="true" resolveProxies="false" eOpposite="#//DataAttribute/refersToBasicType"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="BasicTypes" eSuperTypes="#//NsdObject"> <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java index 88260393b16072a95d598c0ad1e7368a46e523c4..3be1c8bf65844dfa20fe3c7a2cd1ac7a20de121e 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java @@ -19,6 +19,8 @@ */ package fr.centralesupelec.edf.riseclipse.iec61850.nsd; +import org.eclipse.emf.common.util.EList; + /** * <!-- begin-user-doc --> * A representation of the model object '<em><b>Basic Type</b></em>'. @@ -170,7 +172,8 @@ public interface BasicType extends NsdObject { void setBasicTypes( BasicTypes value ); /** - * Returns the value of the '<em><b>Referred By Data Attribute</b></em>' reference. + * Returns the value of the '<em><b>Referred By Data Attribute</b></em>' reference list. + * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute}. * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getRefersToBasicType <em>Refers To Basic Type</em>}'. * <!-- begin-user-doc --> * <p> @@ -178,48 +181,33 @@ public interface BasicType extends NsdObject { * there really should be more of a description here... * </p> * <!-- end-user-doc --> - * @return the value of the '<em>Referred By Data Attribute</em>' reference. + * @return the value of the '<em>Referred By Data Attribute</em>' reference list. * @see #isSetReferredByDataAttribute() * @see #unsetReferredByDataAttribute() - * @see #setReferredByDataAttribute(DataAttribute) * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getBasicType_ReferredByDataAttribute() * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getRefersToBasicType * @model opposite="refersToBasicType" resolveProxies="false" unsettable="true" transient="true" ordered="false" * @generated */ - DataAttribute getReferredByDataAttribute(); - - /** - * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}' reference. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @param value the new value of the '<em>Referred By Data Attribute</em>' reference. - * @see #isSetReferredByDataAttribute() - * @see #unsetReferredByDataAttribute() - * @see #getReferredByDataAttribute() - * @generated - */ - void setReferredByDataAttribute( DataAttribute value ); + EList< DataAttribute > getReferredByDataAttribute(); /** - * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}' reference. + * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isSetReferredByDataAttribute() * @see #getReferredByDataAttribute() - * @see #setReferredByDataAttribute(DataAttribute) * @generated */ void unsetReferredByDataAttribute(); /** - * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}' reference is set. + * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}' reference list is set. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return whether the value of the '<em>Referred By Data Attribute</em>' reference is set. + * @return whether the value of the '<em>Referred By Data Attribute</em>' reference list is set. * @see #unsetReferredByDataAttribute() * @see #getReferredByDataAttribute() - * @see #setReferredByDataAttribute(DataAttribute) * @generated */ boolean isSetReferredByDataAttribute(); diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java index c365085d40fe297ce624c31db6dbeb466c64f173..26c419485bd553f01ff267473481d7486a87d51c 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java @@ -1906,7 +1906,7 @@ public interface NsdPackage extends EPackage { int BASIC_TYPE__BASIC_TYPES = NSD_OBJECT_FEATURE_COUNT + 2; /** - * The feature id for the '<em><b>Referred By Data Attribute</b></em>' reference. + * The feature id for the '<em><b>Referred By Data Attribute</b></em>' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated @@ -7273,10 +7273,10 @@ public interface NsdPackage extends EPackage { EReference getBasicType_BasicTypes(); /** - * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}'. + * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the reference '<em>Referred By Data Attribute</em>'. + * @return the meta object for the reference list '<em>Referred By Data Attribute</em>'. * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute() * @see #getBasicType() * @generated @@ -10470,7 +10470,7 @@ public interface NsdPackage extends EPackage { EReference BASIC_TYPE__BASIC_TYPES = eINSTANCE.getBasicType_BasicTypes(); /** - * The meta object literal for the '<em><b>Referred By Data Attribute</b></em>' reference feature. + * The meta object literal for the '<em><b>Referred By Data Attribute</b></em>' reference list feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java index 0eef17f0b8df8d21980df445bb2e49044b1d931d..f282cdd5ca178b43e195e22bd4daf5c12577599f 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java @@ -24,14 +24,18 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicTypes; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage; +import java.util.Collection; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.util.EObjectWithInverseEList; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.InternalEList; /** * <!-- begin-user-doc --> @@ -109,23 +113,14 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { protected boolean nameESet; /** - * The cached value of the '{@link #getReferredByDataAttribute() <em>Referred By Data Attribute</em>}' reference. + * The cached value of the '{@link #getReferredByDataAttribute() <em>Referred By Data Attribute</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getReferredByDataAttribute() * @generated * @ordered */ - protected DataAttribute referredByDataAttribute; - - /** - * This is true if the Referred By Data Attribute reference has been set. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - protected boolean referredByDataAttributeESet; + protected EList< DataAttribute > referredByDataAttribute; /** * <!-- begin-user-doc --> @@ -295,78 +290,13 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { * @generated */ @Override - public DataAttribute getReferredByDataAttribute() { - return referredByDataAttribute; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public NotificationChain basicSetReferredByDataAttribute( DataAttribute newReferredByDataAttribute, - NotificationChain msgs ) { - DataAttribute oldReferredByDataAttribute = referredByDataAttribute; - referredByDataAttribute = newReferredByDataAttribute; - boolean oldReferredByDataAttributeESet = referredByDataAttributeESet; - referredByDataAttributeESet = true; - if( eNotificationRequired() ) { - ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, - NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE, oldReferredByDataAttribute, - newReferredByDataAttribute, !oldReferredByDataAttributeESet ); - if( msgs == null ) - msgs = notification; - else - msgs.add( notification ); - } - return msgs; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void setReferredByDataAttribute( DataAttribute newReferredByDataAttribute ) { - if( newReferredByDataAttribute != referredByDataAttribute ) { - NotificationChain msgs = null; - if( referredByDataAttribute != null ) msgs = ( ( InternalEObject ) referredByDataAttribute ) - .eInverseRemove( this, NsdPackage.DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE, DataAttribute.class, msgs ); - if( newReferredByDataAttribute != null ) msgs = ( ( InternalEObject ) newReferredByDataAttribute ) - .eInverseAdd( this, NsdPackage.DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE, DataAttribute.class, msgs ); - msgs = basicSetReferredByDataAttribute( newReferredByDataAttribute, msgs ); - if( msgs != null ) msgs.dispatch(); + public EList< DataAttribute > getReferredByDataAttribute() { + if( referredByDataAttribute == null ) { + referredByDataAttribute = new EObjectWithInverseEList.Unsettable< DataAttribute >( DataAttribute.class, + this, NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE, + NsdPackage.DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE ); } - else { - boolean oldReferredByDataAttributeESet = referredByDataAttributeESet; - referredByDataAttributeESet = true; - if( eNotificationRequired() ) eNotify( - new ENotificationImpl( this, Notification.SET, NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE, - newReferredByDataAttribute, newReferredByDataAttribute, !oldReferredByDataAttributeESet ) ); - } - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public NotificationChain basicUnsetReferredByDataAttribute( NotificationChain msgs ) { - DataAttribute oldReferredByDataAttribute = referredByDataAttribute; - referredByDataAttribute = null; - boolean oldReferredByDataAttributeESet = referredByDataAttributeESet; - referredByDataAttributeESet = false; - if( eNotificationRequired() ) { - ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET, - NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE, oldReferredByDataAttribute, null, - oldReferredByDataAttributeESet ); - if( msgs == null ) - msgs = notification; - else - msgs.add( notification ); - } - return msgs; + return referredByDataAttribute; } /** @@ -376,19 +306,7 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { */ @Override public void unsetReferredByDataAttribute() { - if( referredByDataAttribute != null ) { - NotificationChain msgs = null; - msgs = ( ( InternalEObject ) referredByDataAttribute ).eInverseRemove( this, - NsdPackage.DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE, DataAttribute.class, msgs ); - msgs = basicUnsetReferredByDataAttribute( msgs ); - if( msgs != null ) msgs.dispatch(); - } - else { - boolean oldReferredByDataAttributeESet = referredByDataAttributeESet; - referredByDataAttributeESet = false; - if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET, - NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE, null, null, oldReferredByDataAttributeESet ) ); - } + if( referredByDataAttribute != null ) ( ( InternalEList.Unsettable< ? > ) referredByDataAttribute ).unset(); } /** @@ -398,7 +316,7 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { */ @Override public boolean isSetReferredByDataAttribute() { - return referredByDataAttributeESet; + return referredByDataAttribute != null && ( ( InternalEList.Unsettable< ? > ) referredByDataAttribute ).isSet(); } /** @@ -406,6 +324,7 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { * <!-- end-user-doc --> * @generated */ + @SuppressWarnings( "unchecked" ) @Override public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) { switch( featureID ) { @@ -413,9 +332,8 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { if( eInternalContainer() != null ) msgs = eBasicRemoveFromContainer( msgs ); return basicSetBasicTypes( ( BasicTypes ) otherEnd, msgs ); case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE: - if( referredByDataAttribute != null ) msgs = ( ( InternalEObject ) referredByDataAttribute ) - .eInverseRemove( this, NsdPackage.DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE, DataAttribute.class, msgs ); - return basicSetReferredByDataAttribute( ( DataAttribute ) otherEnd, msgs ); + return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByDataAttribute() ) + .basicAdd( otherEnd, msgs ); } return super.eInverseAdd( otherEnd, featureID, msgs ); } @@ -431,7 +349,7 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { case NsdPackage.BASIC_TYPE__BASIC_TYPES: return basicSetBasicTypes( null, msgs ); case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE: - return basicUnsetReferredByDataAttribute( msgs ); + return ( ( InternalEList< ? > ) getReferredByDataAttribute() ).basicRemove( otherEnd, msgs ); } return super.eInverseRemove( otherEnd, featureID, msgs ); } @@ -476,6 +394,7 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { * <!-- end-user-doc --> * @generated */ + @SuppressWarnings( "unchecked" ) @Override public void eSet( int featureID, Object newValue ) { switch( featureID ) { @@ -489,7 +408,8 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType { setBasicTypes( ( BasicTypes ) newValue ); return; case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE: - setReferredByDataAttribute( ( DataAttribute ) newValue ); + getReferredByDataAttribute().clear(); + getReferredByDataAttribute().addAll( ( Collection< ? extends DataAttribute > ) newValue ); return; } super.eSet( featureID, newValue ); diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java index cccbac86e24253e55faa4c5245faa7b59615ebb3..e4c05abbe055803d639e23f589cfb4778373105e 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java @@ -4395,7 +4395,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage { null, 0, 1, BasicType.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED ); initEReference( getBasicType_ReferredByDataAttribute(), this.getDataAttribute(), - this.getDataAttribute_RefersToBasicType(), "referredByDataAttribute", null, 0, 1, BasicType.class, + this.getDataAttribute_RefersToBasicType(), "referredByDataAttribute", null, 0, -1, BasicType.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );