diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore index e412298fba1b8cbe1d62d8e4bc135b68fc3c2958..ba22ce5d712d61b5bd4ea669054012b1ac046fde 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.ecore @@ -602,6 +602,7 @@ </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="AnyLN" abstract="true" eSuperTypes="#//UnNaming"> <eOperations name="getParentLDevice" eType="#//LDevice"/> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="inst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="lnClass" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" @@ -851,6 +852,7 @@ resolveProxies="false" eOpposite="#//AbstractDataAttribute/ReferredByDAI"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="DOI" eSuperTypes="#//UnNaming"> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="ix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EReference" name="ParentAnyLN" ordered="false" @@ -1149,6 +1151,7 @@ eOpposite="#//AccessPoint/ReferredByKDC"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="LDevice" eSuperTypes="#//UnNaming"> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="inst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="ldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel index bc112d7c9352bbe0df62641d82a08d406c14e5c1..3f908ca25abfbbc481e289049a74703a6e5e26cd 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/model/SCL.genmodel @@ -376,6 +376,7 @@ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//AnyLN/ControlWithTriggerOpt"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute SCL.ecore#//AnyLN/Control"/> <genOperations ecoreOperation="SCL.ecore#//AnyLN/getParentLDevice"/> + <genOperations ecoreOperation="SCL.ecore#//AnyLN/getNamespace"/> </genClasses> <genClasses ecoreClass="SCL.ecore#//Association"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//Association/associationID"/> @@ -480,6 +481,7 @@ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//DOI/accessControl"/> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//DOI/name"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference SCL.ecore#//DOI/RefersToDO"/> + <genOperations ecoreOperation="SCL.ecore#//DOI/getNamespace"/> </genClasses> <genClasses ecoreClass="SCL.ecore#//DataObjectDirectory"> <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference SCL.ecore#//DataObjectDirectory/ParentServices"/> @@ -632,6 +634,7 @@ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SCL.ecore#//LDevice/LN0"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SCL.ecore#//LDevice/LN"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference SCL.ecore#//LDevice/ReferredByIEDName"/> + <genOperations ecoreOperation="SCL.ecore#//LDevice/getNamespace"/> </genClasses> <genClasses ecoreClass="SCL.ecore#//LN"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SCL.ecore#//LN/prefix"/> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/AnyLN.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/AnyLN.java index 7e25e57a0dd0ab81baa7b0bfd33ba9f7c9bdb5d5..2b704c862213c6643e5da4bdfb4bdd9bc1ed927b 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/AnyLN.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/AnyLN.java @@ -807,4 +807,12 @@ public interface AnyLN extends UnNaming { */ LDevice getParentLDevice(); + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + String getNamespace(); + } // AnyLN diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/DOI.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/DOI.java index fa77a5482f908c7aed041538be87134a1673090a..fe46c977332295c14e768f923aac5006de26713a 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/DOI.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/DOI.java @@ -351,4 +351,12 @@ public interface DOI extends UnNaming { */ boolean isSetRefersToDO(); + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + String getNamespace(); + } // DOI diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/LDevice.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/LDevice.java index 4daa706ca74c703dc1b493c47af67e2cc9d0c99a..7ab44710c0399abdcf8fd068374859e819b044af 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/LDevice.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/LDevice.java @@ -338,6 +338,14 @@ public interface LDevice extends UnNaming { */ boolean isSetReferredByIEDName(); + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + String getNamespace(); + /** * Returns the value of the '<em><b>LN0</b></em>' containment reference. * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.LN0#getParentLDevice <em>Parent LDevice</em>}'. 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 0a337c54210c801e3b756f633e5714cd211476c5..c6991c9113255e19022f2f27f088e8bd91a648f7 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 @@ -7240,6 +7240,15 @@ public interface SclPackage extends EPackage { */ int ANY_LN___GET_PARENT_LDEVICE = UN_NAMING_OPERATION_COUNT + 0; + /** + * The operation id for the '<em>Get Namespace</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ANY_LN___GET_NAMESPACE = UN_NAMING_OPERATION_COUNT + 1; + /** * The number of operations of the '<em>Any LN</em>' class. * <!-- begin-user-doc --> @@ -7247,7 +7256,7 @@ public interface SclPackage extends EPackage { * @generated * @ordered */ - int ANY_LN_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 1; + int ANY_LN_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 2; /** * The feature id for the '<em><b>Line Number</b></em>' attribute. @@ -9720,6 +9729,15 @@ public interface SclPackage extends EPackage { */ int DOI___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = UN_NAMING___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN; + /** + * The operation id for the '<em>Get Namespace</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int DOI___GET_NAMESPACE = UN_NAMING_OPERATION_COUNT + 0; + /** * The number of operations of the '<em>DOI</em>' class. * <!-- begin-user-doc --> @@ -9727,7 +9745,7 @@ public interface SclPackage extends EPackage { * @generated * @ordered */ - int DOI_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 0; + int DOI_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 1; /** * The feature id for the '<em><b>Line Number</b></em>' attribute. @@ -12458,6 +12476,15 @@ public interface SclPackage extends EPackage { */ int LDEVICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = UN_NAMING___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN; + /** + * The operation id for the '<em>Get Namespace</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int LDEVICE___GET_NAMESPACE = UN_NAMING_OPERATION_COUNT + 0; + /** * The number of operations of the '<em>LDevice</em>' class. * <!-- begin-user-doc --> @@ -12465,7 +12492,7 @@ public interface SclPackage extends EPackage { * @generated * @ordered */ - int LDEVICE_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 0; + int LDEVICE_OPERATION_COUNT = UN_NAMING_OPERATION_COUNT + 1; /** * The feature id for the '<em><b>Line Number</b></em>' attribute. @@ -12737,6 +12764,15 @@ public interface SclPackage extends EPackage { */ int LN___GET_PARENT_LDEVICE = ANY_LN___GET_PARENT_LDEVICE; + /** + * The operation id for the '<em>Get Namespace</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int LN___GET_NAMESPACE = ANY_LN___GET_NAMESPACE; + /** * The number of operations of the '<em>LN</em>' class. * <!-- begin-user-doc --> @@ -13034,6 +13070,15 @@ public interface SclPackage extends EPackage { */ int LN0___GET_PARENT_LDEVICE = ANY_LN___GET_PARENT_LDEVICE; + /** + * The operation id for the '<em>Get Namespace</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int LN0___GET_NAMESPACE = ANY_LN___GET_NAMESPACE; + /** * The number of operations of the '<em>LN0</em>' class. * <!-- begin-user-doc --> @@ -25008,6 +25053,16 @@ public interface SclPackage extends EPackage { */ EOperation getAnyLN__GetParentLDevice(); + /** + * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.AnyLN#getNamespace() <em>Get Namespace</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Namespace</em>' operation. + * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.AnyLN#getNamespace() + * @generated + */ + EOperation getAnyLN__GetNamespace(); + /** * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.Association <em>Association</em>}'. * <!-- begin-user-doc --> @@ -25935,6 +25990,16 @@ public interface SclPackage extends EPackage { */ EReference getDOI_RefersToDO(); + /** + * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI#getNamespace() <em>Get Namespace</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Namespace</em>' operation. + * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI#getNamespace() + * @generated + */ + EOperation getDOI__GetNamespace(); + /** * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.DataObjectDirectory <em>Data Object Directory</em>}'. * <!-- begin-user-doc --> @@ -27308,6 +27373,16 @@ public interface SclPackage extends EPackage { */ EReference getLDevice_ReferredByIEDName(); + /** + * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.LDevice#getNamespace() <em>Get Namespace</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Namespace</em>' operation. + * @see fr.centralesupelec.edf.riseclipse.iec61850.scl.LDevice#getNamespace() + * @generated + */ + EOperation getLDevice__GetNamespace(); + /** * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.scl.LDevice#getLN0 <em>LN0</em>}'. * <!-- begin-user-doc --> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/AnyLNImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/AnyLNImpl.java index 4277c0bfd08e53f7e8e2d0dbe1c403f1038c5c07..57b62dcd6fab8ab3df06e0d1b9db11fcfff74504 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/AnyLNImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/AnyLNImpl.java @@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.scl.impl; import fr.centralesupelec.edf.riseclipse.iec61850.scl.AnyLN; import fr.centralesupelec.edf.riseclipse.iec61850.scl.Association; import fr.centralesupelec.edf.riseclipse.iec61850.scl.ClientLN; +import fr.centralesupelec.edf.riseclipse.iec61850.scl.DAI; import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI; import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataSet; import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataTypeTemplates; @@ -1063,6 +1064,44 @@ public abstract class AnyLNImpl extends UnNamingImpl implements AnyLN { throw new RiseClipseFatalException( "AnyLN.getParentLDevice() called", null ); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getNamespace() { + List< DOI > lplDoi = + getDOI() + .stream() + .filter( doi -> "NamPlt".equals( doi.getName() )) + .collect( Collectors.toList() ); + if( lplDoi.size() == 1 ) { + List< DAI > ldNsDai = + lplDoi + .get( 0 ) + .getDAI() + .stream() + .filter( dai -> "lnNs".equals( dai.getName() )) + .collect( Collectors.toList() ); + if( ldNsDai.size() == 1 ) { + if(( ldNsDai.get( 0 ).getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getVal().get( 0 ).getValue(); + } + if(( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue(); + } + } + } + if( getParentLDevice() == null ) return null; + return getParentLDevice().getNamespace(); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1385,6 +1424,8 @@ public abstract class AnyLNImpl extends UnNamingImpl implements AnyLN { switch (operationID) { case SclPackage.ANY_LN___GET_PARENT_LDEVICE: return getParentLDevice(); + case SclPackage.ANY_LN___GET_NAMESPACE: + return getNamespace(); } return super.eInvoke(operationID, arguments); } diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java index d67ec3706479086811515ef56e86fa0eff2582f1..69e04f831e6bb4b3e0578c9bcf988e168ae448b4 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java @@ -40,6 +40,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.scl.SDI; import fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage; import fr.centralesupelec.edf.riseclipse.iec61850.scl.util.SclUtilities; import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole; +import java.lang.reflect.InvocationTargetException; /** * <!-- begin-user-doc --> @@ -564,6 +565,35 @@ public class DOIImpl extends UnNamingImpl implements DOI { return refersToDOESet; } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getNamespace() { + List< DAI > ldNsDai = + getDAI() + .stream() + .filter( dai -> "dataNs".equals( dai.getName() )) + .collect( Collectors.toList() ); + if( ldNsDai.size() == 1 ) { + if(( ldNsDai.get( 0 ).getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getVal().get( 0 ).getValue(); + } + if(( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue(); + } + } + if( getParentAnyLN() == null ) return null; + return getParentAnyLN().getNamespace(); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -744,6 +774,20 @@ public class DOIImpl extends UnNamingImpl implements DOI { return super.eIsSet(featureID); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { + switch (operationID) { + case SclPackage.DOI___GET_NAMESPACE: + return getNamespace(); + } + return super.eInvoke(operationID, arguments); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/LDeviceImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/LDeviceImpl.java index 81b1869933888c7d31df8b5d9620319be6f0e47e..13be551117aad25076a9786548d1dd64fbae2fbf 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/LDeviceImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/LDeviceImpl.java @@ -19,6 +19,9 @@ package fr.centralesupelec.edf.riseclipse.iec61850.scl.impl; import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; @@ -31,6 +34,8 @@ import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.ecore.util.InternalEList; import fr.centralesupelec.edf.riseclipse.iec61850.scl.AccessControl; +import fr.centralesupelec.edf.riseclipse.iec61850.scl.DAI; +import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI; import fr.centralesupelec.edf.riseclipse.iec61850.scl.IED; import fr.centralesupelec.edf.riseclipse.iec61850.scl.IEDName; import fr.centralesupelec.edf.riseclipse.iec61850.scl.LDevice; @@ -38,6 +43,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.scl.LN; import fr.centralesupelec.edf.riseclipse.iec61850.scl.LN0; import fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage; import fr.centralesupelec.edf.riseclipse.iec61850.scl.Server; +import java.lang.reflect.InvocationTargetException; /** * <!-- begin-user-doc --> @@ -572,6 +578,44 @@ public class LDeviceImpl extends UnNamingImpl implements LDevice { return referredByIEDNameESet; } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public String getNamespace() { + List< DOI > lplDoi = + getLN0() + .getDOI() + .stream() + .filter( doi -> "NamPlt".equals( doi.getName() )) + .collect( Collectors.toList() ); + if( lplDoi.size() == 1 ) { + List< DAI > ldNsDai = + lplDoi + .get( 0 ) + .getDAI() + .stream() + .filter( dai -> "ldNs".equals( dai.getName() )) + .collect( Collectors.toList() ); + if( ldNsDai.size() == 1 ) { + if(( ldNsDai.get( 0 ).getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getVal().get( 0 ).getValue(); + } + if(( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().size() == 1 ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue() != null ) + && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue().length() != 0 )) { + return ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue(); + } + } + } + return null; + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -841,6 +885,20 @@ public class LDeviceImpl extends UnNamingImpl implements LDevice { return super.eIsSet(featureID); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { + switch (operationID) { + case SclPackage.LDEVICE___GET_NAMESPACE: + return getNamespace(); + } + return super.eInvoke(operationID, arguments); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> 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 194011ce043ca5bb45ef450d56b9eb8a7d0e834d..717034e789c7ea16959e49ab0f23b14dbdb2e4b7 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 @@ -4511,6 +4511,16 @@ public class SclPackageImpl extends EPackageImpl implements SclPackage { return getAnyLN().getEOperations().get(0); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EOperation getAnyLN__GetNamespace() { + return getAnyLN().getEOperations().get(1); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -5425,6 +5435,16 @@ public class SclPackageImpl extends EPackageImpl implements SclPackage { return (EReference)getDOI().getEStructuralFeatures().get(6); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EOperation getDOI__GetNamespace() { + return getDOI().getEOperations().get(0); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -6767,6 +6787,16 @@ public class SclPackageImpl extends EPackageImpl implements SclPackage { return (EReference)getLDevice().getEStructuralFeatures().get(7); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EOperation getLDevice__GetNamespace() { + return getLDevice().getEOperations().get(0); + } + /** * <!-- 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 e412298fba1b8cbe1d62d8e4bc135b68fc3c2958..ba22ce5d712d61b5bd4ea669054012b1ac046fde 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 @@ -602,6 +602,7 @@ </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="AnyLN" abstract="true" eSuperTypes="#//UnNaming"> <eOperations name="getParentLDevice" eType="#//LDevice"/> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="inst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="lnClass" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" @@ -851,6 +852,7 @@ resolveProxies="false" eOpposite="#//AbstractDataAttribute/ReferredByDAI"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="DOI" eSuperTypes="#//UnNaming"> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="ix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EReference" name="ParentAnyLN" ordered="false" @@ -1149,6 +1151,7 @@ eOpposite="#//AccessPoint/ReferredByKDC"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="LDevice" eSuperTypes="#//UnNaming"> + <eOperations name="getNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="inst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" unsettable="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="ldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"