From 184846473ec16cb28816f7c060014e7d7614d15b Mon Sep 17 00:00:00 2001
From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr>
Date: Wed, 29 May 2019 09:18:30 +0200
Subject: [PATCH] AbtractLNClass wrongly set as abstract

---
 .../nsd/provider/LNClassesItemProvider.java   |  3 +++
 .../NsdItemProviderAdapterFactory.java        | 24 +++++++++++++++++++
 .../model/nsd.ecore                           |  2 +-
 .../iec61850/nsd/AbstractLNClass.java         |  3 +--
 .../riseclipse/iec61850/nsd/NsdFactory.java   |  9 +++++++
 .../nsd/impl/AbstractLNClassImpl.java         |  2 +-
 .../iec61850/nsd/impl/NsdFactoryImpl.java     | 13 ++++++++++
 .../iec61850/nsd/impl/NsdPackageImpl.java     |  2 +-
 8 files changed, 53 insertions(+), 5 deletions(-)

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
index 207c425..b6c162f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
@@ -149,6 +149,9 @@ public class LNClassesItemProvider extends NsdObjectItemProvider {
     protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
         super.collectNewChildDescriptors( newChildDescriptors, object );
 
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.LN_CLASSES__ABSTRACT_LN_CLASS,
+                NsdFactory.eINSTANCE.createAbstractLNClass() ) );
+
         newChildDescriptors.add( createChildParameter( NsdPackage.Literals.LN_CLASSES__LN_CLASS,
                 NsdFactory.eINSTANCE.createLNClass() ) );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java
index 81aec4d..20adc33 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java
@@ -227,6 +227,29 @@ public class NsdItemProviderAdapterFactory extends NsdAdapterFactory
         return abbreviationsItemProvider;
     }
 
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AbstractLNClassItemProvider abstractLNClassItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAbstractLNClassAdapter() {
+        if( abstractLNClassItemProvider == null ) {
+            abstractLNClassItemProvider = new AbstractLNClassItemProvider( this );
+        }
+
+        return abstractLNClassItemProvider;
+    }
+
     /**
      * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServiceNS} instances.
      * <!-- begin-user-doc -->
@@ -1235,6 +1258,7 @@ public class NsdItemProviderAdapterFactory extends NsdAdapterFactory
         if( serviceTypeItemProvider != null ) serviceTypeItemProvider.dispose();
         if( abbreviationItemProvider != null ) abbreviationItemProvider.dispose();
         if( abbreviationsItemProvider != null ) abbreviationsItemProvider.dispose();
+        if( abstractLNClassItemProvider != null ) abstractLNClassItemProvider.dispose();
         if( applicableServiceNSItemProvider != null ) applicableServiceNSItemProvider.dispose();
         if( applicableServicesItemProvider != null ) applicableServicesItemProvider.dispose();
         if( basicTypeItemProvider != null ) basicTypeItemProvider.dispose();
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 0d8e595..816c3a2 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -171,7 +171,7 @@
         eType="#//ServiceNS" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNS/abbreviations"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AbstractLNClass" abstract="true" eSuperTypes="#//AnyLNClass">
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractLNClass" eSuperTypes="#//AnyLNClass">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tAbstractLNClass"/>
       <details key="kind" value="elementOnly"/>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
index 64fff62..3dff683 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
@@ -36,8 +36,7 @@ import org.eclipse.emf.common.util.EList;
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAbstractLNClass()
- * @model abstract="true"
- *        extendedMetaData="name='tAbstractLNClass' kind='elementOnly'"
+ * @model extendedMetaData="name='tAbstractLNClass' kind='elementOnly'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore constraints='nameAttributeRequired'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot nameAttributeRequired='Tuple {\n\tmessage : String = \'The name attribute is required\',\n\tstatus : Boolean = \n\t\t\tself.name &lt;&gt; null\n}.status'"
  * @generated
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java
index 5777842..668b3e3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java
@@ -92,6 +92,15 @@ public interface NsdFactory extends EFactory {
      */
     Abbreviations createAbbreviations();
 
+    /**
+     * Returns a new object of class '<em>Abstract LN Class</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Abstract LN Class</em>'.
+     * @generated
+     */
+    AbstractLNClass createAbstractLNClass();
+
     /**
      * Returns a new object of class '<em>Applicable Service NS</em>'.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
index 49583dd..b55bdd5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
@@ -52,7 +52,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public abstract class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNClass {
+public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNClass {
     /**
      * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java
index 33e9737..e185dac 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java
@@ -90,6 +90,8 @@ public class NsdFactoryImpl extends EFactoryImpl implements NsdFactory {
             return createAbbreviation();
         case NsdPackage.ABBREVIATIONS:
             return createAbbreviations();
+        case NsdPackage.ABSTRACT_LN_CLASS:
+            return createAbstractLNClass();
         case NsdPackage.APPLICABLE_SERVICE_NS:
             return createApplicableServiceNS();
         case NsdPackage.APPLICABLE_SERVICES:
@@ -319,6 +321,17 @@ public class NsdFactoryImpl extends EFactoryImpl implements NsdFactory {
         return abbreviations;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public AbstractLNClass createAbstractLNClass() {
+        AbstractLNClassImpl abstractLNClass = new AbstractLNClassImpl();
+        return abstractLNClass;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
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 4b112e8..8fed7fe 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
@@ -4588,7 +4588,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 "parentServiceNS", null, 0, 1, Abbreviations.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
-        initEClass( abstractLNClassEClass, AbstractLNClass.class, "AbstractLNClass", IS_ABSTRACT, !IS_INTERFACE,
+        initEClass( abstractLNClassEClass, AbstractLNClass.class, "AbstractLNClass", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
         initEAttribute( getAbstractLNClass_Name(), ecorePackage.getEString(), "name", null, 0, 1, AbstractLNClass.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-- 
GitLab