diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/provider/ConnectedAPItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/provider/ConnectedAPItemProvider.java index 60dea3aa751235c357e1e88c1cfbfcefd6012a3f..7a8c6f1b3dc26e65c2838e4815625b190cbf0727 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/provider/ConnectedAPItemProvider.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/provider/ConnectedAPItemProvider.java @@ -174,7 +174,6 @@ public class ConnectedAPItemProvider extends UnNamingItemProvider { childrenFeatures.add( SclPackage.eINSTANCE.getConnectedAP_PhysConn() ); childrenFeatures.add( SclPackage.eINSTANCE.getConnectedAP_GSE() ); childrenFeatures.add( SclPackage.eINSTANCE.getConnectedAP_SMV() ); - childrenFeatures.add( SclPackage.eINSTANCE.getConnectedAP_ControlBlock() ); } return childrenFeatures; } @@ -237,7 +236,6 @@ public class ConnectedAPItemProvider extends UnNamingItemProvider { case SclPackage.CONNECTED_AP__PHYS_CONN: case SclPackage.CONNECTED_AP__GSE: case SclPackage.CONNECTED_AP__SMV: - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) ); return; } diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore index 6030537658280052032ffd837f7226f6927129c5..0c55ddcf33870d89a6d7fceadf31cb48fdefe174 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore @@ -258,26 +258,11 @@ upperBound="-1" eType="#//PhysConn" unsettable="true" containment="true" resolveProxies="false" eOpposite="#//PhysConn/ParentConnectedAP"/> <eStructuralFeatures xsi:type="ecore:EReference" name="GSE" ordered="false" upperBound="-1" - eType="#//GSE" volatile="true" unsettable="true" containment="true" resolveProxies="false" - eOpposite="#//GSE/ParentConnectedAP"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="group" value="#ControlBlock"/> - </eAnnotations> - </eStructuralFeatures> + eType="#//GSE" unsettable="true" containment="true" resolveProxies="false" + eOpposite="#//GSE/ParentConnectedAP"/> <eStructuralFeatures xsi:type="ecore:EReference" name="SMV" ordered="false" upperBound="-1" - eType="#//SMV" volatile="true" unsettable="true" containment="true" resolveProxies="false" - eOpposite="#//SMV/ParentConnectedAP"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="group" value="#ControlBlock"/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="ControlBlock" ordered="false" - upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry" - transient="true"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="kind" value="group"/> - </eAnnotations> - </eStructuralFeatures> + eType="#//SMV" unsettable="true" containment="true" resolveProxies="false" + eOpposite="#//SMV/ParentConnectedAP"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="ControlBlock" abstract="true" eSuperTypes="#//UnNaming"> <eOperations name="getParentConnectedAP" eType="#//ConnectedAP"/> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel index 1ae1ebc2dc2545877ad18dfec9fcf57dca2b7810..335fcde77a8d13541cec3afabf45ef1a88002b12 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel @@ -214,7 +214,6 @@ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SCL.ecore#//ConnectedAP/PhysConn"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SCL.ecore#//ConnectedAP/GSE"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SCL.ecore#//ConnectedAP/SMV"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute SCL.ecore#//ConnectedAP/ControlBlock"/> </genClasses> <genClasses ecoreClass="SCL.ecore#//ControlBlock"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//ControlBlock/cbName"/> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/ConnectedAP.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/ConnectedAP.java index 80f67eff90aceb211eaa2f262469cfb685d304cd..276196042b553d8e3316181c7d8bd904e0faaf45 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/ConnectedAP.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/ConnectedAP.java @@ -21,7 +21,6 @@ package fr.centralesupelec.edf.riseclipse.iec61850.scl; import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.FeatureMap; /** * <!-- begin-user-doc --> @@ -41,7 +40,6 @@ import org.eclipse.emf.ecore.util.FeatureMap; * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getPhysConn <em>Phys Conn</em>}</li> * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getGSE <em>GSE</em>}</li> * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getSMV <em>SMV</em>}</li> - * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getControlBlock <em>Control Block</em>}</li> * </ul> * * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage#getConnectedAP() @@ -398,8 +396,7 @@ public interface ConnectedAP extends UnNaming { * @see #unsetGSE() * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage#getConnectedAP_GSE() * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.GSE#getParentConnectedAP - * @model opposite="ParentConnectedAP" containment="true" unsettable="true" volatile="true" ordered="false" - * extendedMetaData="group='#ControlBlock'" + * @model opposite="ParentConnectedAP" containment="true" unsettable="true" ordered="false" * @generated */ EList< GSE > getGSE(); @@ -440,8 +437,7 @@ public interface ConnectedAP extends UnNaming { * @see #unsetSMV() * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage#getConnectedAP_SMV() * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.SMV#getParentConnectedAP - * @model opposite="ParentConnectedAP" containment="true" unsettable="true" volatile="true" ordered="false" - * extendedMetaData="group='#ControlBlock'" + * @model opposite="ParentConnectedAP" containment="true" unsettable="true" ordered="false" * @generated */ EList< SMV > getSMV(); @@ -467,17 +463,4 @@ public interface ConnectedAP extends UnNaming { */ boolean isSetSMV(); - /** - * Returns the value of the '<em><b>Control Block</b></em>' attribute list. - * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @return the value of the '<em>Control Block</em>' attribute list. - * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage#getConnectedAP_ControlBlock() - * @model dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true" transient="true" ordered="false" - * extendedMetaData="kind='group'" - * @generated - */ - FeatureMap getControlBlock(); - } // ConnectedAP diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/SclPackage.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/SclPackage.java index f1a7a7055f0b3716e83923d193a98ec14abb4479..a3601f3be70edc3f3fd4e46d77ef43e4beca9657 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/SclPackage.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/SclPackage.java @@ -3702,15 +3702,6 @@ public interface SclPackage extends EPackage { */ int CONNECTED_AP__SMV = UN_NAMING_FEATURE_COUNT + 8; - /** - * The feature id for the '<em><b>Control Block</b></em>' attribute list. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int CONNECTED_AP__CONTROL_BLOCK = UN_NAMING_FEATURE_COUNT + 9; - /** * The number of structural features of the '<em>Connected AP</em>' class. * <!-- begin-user-doc --> @@ -3718,7 +3709,7 @@ public interface SclPackage extends EPackage { * @generated * @ordered */ - int CONNECTED_AP_FEATURE_COUNT = UN_NAMING_FEATURE_COUNT + 10; + int CONNECTED_AP_FEATURE_COUNT = UN_NAMING_FEATURE_COUNT + 9; /** * The operation id for the '<em>Build Explicit Links</em>' operation. @@ -22767,17 +22758,6 @@ public interface SclPackage extends EPackage { */ EReference getConnectedAP_SMV(); - /** - * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getControlBlock <em>Control Block</em>}'. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @return the meta object for the attribute list '<em>Control Block</em>'. - * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.ConnectedAP#getControlBlock() - * @see #getConnectedAP() - * @generated - */ - EAttribute getConnectedAP_ControlBlock(); - /** * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.ControlBlock <em>Control Block</em>}'. * <!-- begin-user-doc --> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/ConnectedAPImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/ConnectedAPImpl.java index 74af5daec916931195aedce196eb34cfc55637d4..1975d2536a33d231ddec9ba9390b50e013c8f854 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/ConnectedAPImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/ConnectedAPImpl.java @@ -40,10 +40,8 @@ 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.BasicFeatureMap; import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.ecore.util.InternalEList; /** @@ -63,7 +61,6 @@ import org.eclipse.emf.ecore.util.InternalEList; * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.ConnectedAPImpl#getPhysConn <em>Phys Conn</em>}</li> * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.ConnectedAPImpl#getGSE <em>GSE</em>}</li> * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.ConnectedAPImpl#getSMV <em>SMV</em>}</li> - * <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.ConnectedAPImpl#getControlBlock <em>Control Block</em>}</li> * </ul> * * @generated @@ -205,14 +202,24 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { protected EList< PhysConn > physConn; /** - * The cached value of the '{@link #getControlBlock() <em>Control Block</em>}' attribute list. + * The cached value of the '{@link #getGSE() <em>GSE</em>}' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see #getControlBlock() + * @see #getGSE() * @generated * @ordered */ - protected FeatureMap controlBlock; + protected EList< GSE > gse; + + /** + * The cached value of the '{@link #getSMV() <em>SMV</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSMV() + * @generated + * @ordered + */ + protected EList< SMV > smv; /** * <!-- begin-user-doc --> @@ -704,7 +711,11 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public EList< GSE > getGSE() { - return getControlBlock().list( SclPackage.eINSTANCE.getConnectedAP_GSE() ); + if( gse == null ) { + gse = new EObjectContainmentWithInverseEList.Unsettable< GSE >( GSE.class, this, + SclPackage.CONNECTED_AP__GSE, SclPackage.GSE__PARENT_CONNECTED_AP ); + } + return gse; } /** @@ -714,7 +725,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public void unsetGSE() { - ( ( FeatureMap.Internal ) getControlBlock() ).clear( SclPackage.eINSTANCE.getConnectedAP_GSE() ); + if( gse != null ) ( ( InternalEList.Unsettable< ? > ) gse ).unset(); } /** @@ -724,7 +735,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public boolean isSetGSE() { - return !( ( FeatureMap.Internal ) getControlBlock() ).isEmpty( SclPackage.eINSTANCE.getConnectedAP_GSE() ); + return gse != null && ( ( InternalEList.Unsettable< ? > ) gse ).isSet(); } /** @@ -734,7 +745,11 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public EList< SMV > getSMV() { - return getControlBlock().list( SclPackage.eINSTANCE.getConnectedAP_SMV() ); + if( smv == null ) { + smv = new EObjectContainmentWithInverseEList.Unsettable< SMV >( SMV.class, this, + SclPackage.CONNECTED_AP__SMV, SclPackage.SMV__PARENT_CONNECTED_AP ); + } + return smv; } /** @@ -744,7 +759,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public void unsetSMV() { - ( ( FeatureMap.Internal ) getControlBlock() ).clear( SclPackage.eINSTANCE.getConnectedAP_SMV() ); + if( smv != null ) ( ( InternalEList.Unsettable< ? > ) smv ).unset(); } /** @@ -754,20 +769,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { */ @Override public boolean isSetSMV() { - return !( ( FeatureMap.Internal ) getControlBlock() ).isEmpty( SclPackage.eINSTANCE.getConnectedAP_SMV() ); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public FeatureMap getControlBlock() { - if( controlBlock == null ) { - controlBlock = new BasicFeatureMap( this, SclPackage.CONNECTED_AP__CONTROL_BLOCK ); - } - return controlBlock; + return smv != null && ( ( InternalEList.Unsettable< ? > ) smv ).isSet(); } /** @@ -824,8 +826,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { return ( ( InternalEList< ? > ) getGSE() ).basicRemove( otherEnd, msgs ); case SclPackage.CONNECTED_AP__SMV: return ( ( InternalEList< ? > ) getSMV() ).basicRemove( otherEnd, msgs ); - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: - return ( ( InternalEList< ? > ) getControlBlock() ).basicRemove( otherEnd, msgs ); } return super.eInverseRemove( otherEnd, featureID, msgs ); } @@ -871,9 +871,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { return getGSE(); case SclPackage.CONNECTED_AP__SMV: return getSMV(); - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: - if( coreType ) return getControlBlock(); - return ( ( FeatureMap.Internal ) getControlBlock() ).getWrapper(); } return super.eGet( featureID, resolve, coreType ); } @@ -917,9 +914,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { getSMV().clear(); getSMV().addAll( ( Collection< ? extends SMV > ) newValue ); return; - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: - ( ( FeatureMap.Internal ) getControlBlock() ).set( newValue ); - return; } super.eSet( featureID, newValue ); } @@ -959,9 +953,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { case SclPackage.CONNECTED_AP__SMV: unsetSMV(); return; - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: - getControlBlock().clear(); - return; } super.eUnset( featureID ); } @@ -992,8 +983,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { return isSetGSE(); case SclPackage.CONNECTED_AP__SMV: return isSetSMV(); - case SclPackage.CONNECTED_AP__CONTROL_BLOCK: - return controlBlock != null && !controlBlock.isEmpty(); } return super.eIsSet( featureID ); } @@ -1023,8 +1012,6 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP { result.append( redProt ); else result.append( "<unset>" ); - result.append( ", ControlBlock: " ); - result.append( controlBlock ); result.append( ')' ); return result.toString(); } diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/SclPackageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/SclPackageImpl.java index 04bfa5f3bb87a24a53c5bf3de47f911c0591448a..be5cbdc1f0ac367cfc8a8487e4d32832777fb011 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/SclPackageImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/SclPackageImpl.java @@ -2334,16 +2334,6 @@ public class SclPackageImpl extends EPackageImpl implements SclPackage { return ( EReference ) getConnectedAP().getEStructuralFeatures().get( 8 ); } - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public EAttribute getConnectedAP_ControlBlock() { - return ( EAttribute ) getConnectedAP().getEStructuralFeatures().get( 9 ); - } - /** * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/scl.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/scl.ecore index 6030537658280052032ffd837f7226f6927129c5..0c55ddcf33870d89a6d7fceadf31cb48fdefe174 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/scl.ecore +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/scl.ecore @@ -258,26 +258,11 @@ upperBound="-1" eType="#//PhysConn" unsettable="true" containment="true" resolveProxies="false" eOpposite="#//PhysConn/ParentConnectedAP"/> <eStructuralFeatures xsi:type="ecore:EReference" name="GSE" ordered="false" upperBound="-1" - eType="#//GSE" volatile="true" unsettable="true" containment="true" resolveProxies="false" - eOpposite="#//GSE/ParentConnectedAP"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="group" value="#ControlBlock"/> - </eAnnotations> - </eStructuralFeatures> + eType="#//GSE" unsettable="true" containment="true" resolveProxies="false" + eOpposite="#//GSE/ParentConnectedAP"/> <eStructuralFeatures xsi:type="ecore:EReference" name="SMV" ordered="false" upperBound="-1" - eType="#//SMV" volatile="true" unsettable="true" containment="true" resolveProxies="false" - eOpposite="#//SMV/ParentConnectedAP"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="group" value="#ControlBlock"/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="ControlBlock" ordered="false" - upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry" - transient="true"> - <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> - <details key="kind" value="group"/> - </eAnnotations> - </eStructuralFeatures> + eType="#//SMV" unsettable="true" containment="true" resolveProxies="false" + eOpposite="#//SMV/ParentConnectedAP"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="ControlBlock" abstract="true" eSuperTypes="#//UnNaming"> <eOperations name="getParentConnectedAP" eType="#//ConnectedAP"/>