From b02b2a931c0e791682a6a265d6173f4be5d523cd Mon Sep 17 00:00:00 2001
From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr>
Date: Thu, 14 Feb 2019 18:51:10 +0100
Subject: [PATCH] allow for re-running finalize()

add a forceUpdate argument to buildExplicitLinks()
---
 .../model/nsd.ecore                           |   1 +
 .../model/nsd.genmodel                        |   1 +
 .../riseclipse/iec61850/nsd/NsdObject.java    |   2 +-
 .../riseclipse/iec61850/nsd/NsdPackage.java   | 108 +++++++++---------
 .../iec61850/nsd/impl/AnyLNClassImpl.java     |   4 +-
 .../iec61850/nsd/impl/DataAttributeImpl.java  |   4 +-
 .../iec61850/nsd/impl/DataObjectImpl.java     |   4 +-
 .../iec61850/nsd/impl/DependsOnImpl.java      |   4 +-
 .../iec61850/nsd/impl/EnumerationImpl.java    |   4 +-
 .../riseclipse/iec61850/nsd/impl/NSImpl.java  |  10 +-
 .../iec61850/nsd/impl/NsdObjectImpl.java      |  11 +-
 .../iec61850/nsd/impl/NsdPackageImpl.java     |   7 +-
 .../nsd/impl/SubDataAttributeImpl.java        |   4 +-
 .../iec61850/nsd/impl/SubDataObjectImpl.java  |   4 +-
 .../iec61850/nsd/util/NsdResourceImpl.java    |   2 +-
 .../nsd/util/NsdResourceSetFactory.java       |   5 +-
 .../iec61850/nsd/util/NsdResourceSetImpl.java |   8 +-
 17 files changed, 93 insertions(+), 90 deletions(-)

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 6383757..a97dca1 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -1863,6 +1863,7 @@
   <eClassifiers xsi:type="ecore:EClass" name="NsdObject" abstract="true">
     <eOperations name="buildExplicitLinks" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="console" eType="#//IRiseClipseConsole"/>
+      <eParameters name="forceUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineNumber" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
index 19de1d3..c0a7443 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -424,6 +424,7 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NsdObject/explicitLinksBuilt"/>
       <genOperations ecoreOperation="nsd.ecore#//NsdObject/buildExplicitLinks">
         <genParameters ecoreParameter="nsd.ecore#//NsdObject/buildExplicitLinks/console"/>
+        <genParameters ecoreParameter="nsd.ecore#//NsdObject/buildExplicitLinks/forceUpdate"/>
       </genOperations>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AgNSIdentification">
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
index b4c2c48..3885f6e 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
@@ -101,5 +101,5 @@ public interface NsdObject extends EObject {
      * @model consoleType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.IRiseClipseConsole"
      * @generated
      */
-    boolean buildExplicitLinks( IRiseClipseConsole console );
+    boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate );
 } // NsdObject
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 26c4194..359bc12 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
@@ -715,7 +715,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = 0;
+    int NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = 0;
 
     /**
      * The number of operations of the '<em>Object</em>' class.
@@ -814,7 +814,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Applies To Type</em>' class.
@@ -922,7 +922,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DEPENDS_ON___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Depends On</em>' class.
@@ -1066,7 +1066,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Type</em>' class.
@@ -1138,7 +1138,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABBREVIATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ABBREVIATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Abbreviation</em>' class.
@@ -1210,7 +1210,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABBREVIATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ABBREVIATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Abbreviations</em>' class.
@@ -1282,7 +1282,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Documented Class</em>' class.
@@ -1363,7 +1363,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Titled Class</em>' class.
@@ -1471,7 +1471,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The operation id for the '<em>Get Name</em>' operation.
@@ -1624,7 +1624,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABSTRACT_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ABSTRACT_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The operation id for the '<em>Get Name</em>' operation.
@@ -1696,7 +1696,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Copyrighted</em>' class.
@@ -1777,7 +1777,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int APPLICABLE_SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Applicable Service NS</em>' class.
@@ -1849,7 +1849,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int APPLICABLE_SERVICES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Applicable Services</em>' class.
@@ -1930,7 +1930,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int BASIC_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Basic Type</em>' class.
@@ -1993,7 +1993,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int BASIC_TYPES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Basic Types</em>' class.
@@ -2173,7 +2173,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>CDC</em>' class.
@@ -2236,7 +2236,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>CD Cs</em>' class.
@@ -2353,7 +2353,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CHANGES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int CHANGES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Changes</em>' class.
@@ -2470,7 +2470,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Constructed Attribute</em>' class.
@@ -2533,7 +2533,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Constructed Attributes</em>' class.
@@ -2605,7 +2605,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int COPYRIGHT_NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Copyright Notice</em>' class.
@@ -2920,7 +2920,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Data Attribute</em>' class.
@@ -3127,7 +3127,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Data Object</em>' class.
@@ -3190,7 +3190,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DATA_SET_MEMBER_OF___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Data Set Member Of</em>' class.
@@ -3280,7 +3280,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Doc</em>' class.
@@ -3415,7 +3415,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ENUMERATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ENUMERATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Enumeration</em>' class.
@@ -3478,7 +3478,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ENUMERATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int ENUMERATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Enumerations</em>' class.
@@ -3577,7 +3577,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int FUNCTIONAL_CONSTRAINT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Functional Constraint</em>' class.
@@ -3649,7 +3649,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int FUNCTIONAL_CONSTRAINTS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Functional Constraints</em>' class.
@@ -3730,7 +3730,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LICENSE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int LICENSE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>License</em>' class.
@@ -3829,7 +3829,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LITERAL___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int LITERAL___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Literal</em>' class.
@@ -3973,7 +3973,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The operation id for the '<em>Get Name</em>' operation.
@@ -4063,7 +4063,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LN_CLASSES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int LN_CLASSES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>LN Classes</em>' class.
@@ -4126,7 +4126,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Notice</em>' class.
@@ -4351,7 +4351,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The operation id for the '<em>Find CDC</em>' operation.
@@ -4531,7 +4531,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS_DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int NS_DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>NS Doc</em>' class.
@@ -4666,7 +4666,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int PRESENCE_CONDITION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Presence Condition</em>' class.
@@ -4738,7 +4738,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int PRESENCE_CONDITIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Presence Conditions</em>' class.
@@ -4819,7 +4819,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service CDC</em>' class.
@@ -4882,7 +4882,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service CD Cs</em>' class.
@@ -5017,7 +5017,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Constructed Attribute</em>' class.
@@ -5080,7 +5080,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Constructed Attributes</em>' class.
@@ -5242,7 +5242,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Data Attribute</em>' class.
@@ -5431,7 +5431,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service NS</em>' class.
@@ -5539,7 +5539,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_NS_USAGE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Ns Usage</em>' class.
@@ -5674,7 +5674,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_PARAMETER___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Parameter</em>' class.
@@ -5737,7 +5737,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SERVICE_TYPE_REALIZATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Service Type Realizations</em>' class.
@@ -5944,7 +5944,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SUB_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Sub Data Attribute</em>' class.
@@ -6160,7 +6160,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+    int SUB_DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN;
 
     /**
      * The number of operations of the '<em>Sub Data Object</em>' class.
@@ -9484,14 +9484,14 @@ public interface NsdPackage extends EPackage {
     EAttribute getNsdObject_ExplicitLinksBuilt();
 
     /**
-     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole) <em>Build Explicit Links</em>}' operation.
+     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole, boolean) <em>Build Explicit Links</em>}' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for the '<em>Build Explicit Links</em>' operation.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole, boolean)
      * @generated
      */
-    EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole();
+    EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole_boolean();
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification <em>Ag NS Identification</em>}'.
@@ -12223,8 +12223,8 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EOperation NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = eINSTANCE
-                .getNsdObject__BuildExplicitLinks__IRiseClipseConsole();
+        EOperation NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN = eINSTANCE
+                .getNsdObject__BuildExplicitLinks__IRiseClipseConsole_boolean();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl <em>Ag NS Identification</em>}' class.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
index 07e1e5c..87043bc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
@@ -514,8 +514,8 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
      *   AnyLNClass.base                    -> AbstractLNClass  
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         if( isSetBase() ) {
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
index a5b08d6..d6d0c1c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
@@ -3087,8 +3087,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
      *   DataAttribute.maxIndexAttribute    -> DataAttribute.name
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = getCDC().getCDCs().getNS();
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
index 3604ea2..6c035c6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
@@ -1864,8 +1864,8 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
      *   DataObject.dsPresCond              -> PresenceCondition.name
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = getAnyLNClass().getLNClasses().getNS();
         if( isSetType() ) {
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
index cb881e6..bbb3a68 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
@@ -903,8 +903,8 @@ public class DependsOnImpl extends NsdObjectImpl implements DependsOn {
      *   DependsOn.id                       -> NS.id
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = ( ( NsdResourceSetImpl ) eResource().getResourceSet() ).getNS( getId() );
         if( ns == null ) {
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationImpl.java
index 36765ce..c1f24d6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationImpl.java
@@ -717,8 +717,8 @@ public class EnumerationImpl extends TitledClassImpl implements Enumeration {
      *   Enumeration.inheritedFrom          -> Enumeration.name
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = getEnumerations().getNS();
         if( isSetInheritedFrom() ) {
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
index 29bea81..dd2a7f5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
@@ -1713,7 +1713,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
         // Look for in NS referred by DependsOn
         // Warning: NS referred by DependsOn may not be loaded
         if( isSetDependsOn() && ( getDependsOn().isSetRefersToNS() ) ) {
-            getDependsOn().buildExplicitLinks( console );
+            getDependsOn().buildExplicitLinks( console, false );
             return getDependsOn().getRefersToNS().findCDC( cDCName, console );
         }
 
@@ -1736,7 +1736,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
         // Look for in NS referred by DependsOn
         // Warning: NS referred by DependsOn may not be loaded
         if( isSetDependsOn() && ( getDependsOn().isSetRefersToNS() ) ) {
-            getDependsOn().buildExplicitLinks( console );
+            getDependsOn().buildExplicitLinks( console, false );
             return getDependsOn().getRefersToNS().findPresenceCondition( presenceConditionName, console );
         }
 
@@ -1761,7 +1761,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
         // Look for in NS referred by DependsOn
         // Warning: NS referred by DependsOn may not be loaded
         if( isSetDependsOn() && ( getDependsOn().isSetRefersToNS() ) ) {
-            getDependsOn().buildExplicitLinks( console );
+            getDependsOn().buildExplicitLinks( console, false );
             return getDependsOn().getRefersToNS().findFunctionalConstraint( functionalConstraintAbbreviation, console );
         }
 
@@ -1784,7 +1784,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
         // Look for in NS referred by DependsOn
         // Warning: NS referred by DependsOn may not be loaded
         if( isSetDependsOn() && ( getDependsOn().isSetRefersToNS() ) ) {
-            getDependsOn().buildExplicitLinks( console );
+            getDependsOn().buildExplicitLinks( console, false );
             return getDependsOn().getRefersToNS().findEnumeration( enumerationName, console );
         }
 
@@ -1807,7 +1807,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
         // Look for in NS referred by DependsOn
         // Warning: NS referred by DependsOn may not be loaded
         if( isSetDependsOn() && ( getDependsOn().isSetRefersToNS() ) ) {
-            getDependsOn().buildExplicitLinks( console );
+            getDependsOn().buildExplicitLinks( console, false );
             return getDependsOn().getRefersToNS().findBasicType( basicTypeName, console );
         }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
index 02ff863..3851bfd 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
@@ -155,18 +155,17 @@ public abstract class NsdObjectImpl extends MinimalEObjectImpl.Container impleme
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return true if explicit links were already built, false otherwise
      * @generated NOT
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( isExplicitLinksBuilt() ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( ( ! forceUpdate ) && isExplicitLinksBuilt() ) return true;
 
         TreeIterator< EObject > it = eAllContents();
         while( it.hasNext() ) {
             EObject o = it.next();
             if( o instanceof NsdObject ) {
-                ( ( NsdObject ) o ).buildExplicitLinks( console );
+                ( ( NsdObject ) o ).buildExplicitLinks( console, forceUpdate );
             }
         }
 
@@ -250,8 +249,8 @@ public abstract class NsdObjectImpl extends MinimalEObjectImpl.Container impleme
     @Override
     public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
         switch( operationID ) {
-        case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE:
-            return buildExplicitLinks( ( IRiseClipseConsole ) arguments.get( 0 ) );
+        case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN:
+            return buildExplicitLinks( ( IRiseClipseConsole ) arguments.get( 0 ), ( Boolean ) arguments.get( 1 ) );
         }
         return super.eInvoke( operationID, arguments );
     }
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 fde0128..58c5b31 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
@@ -3220,7 +3220,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole() {
+    public EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole_boolean() {
         return nsdObjectEClass.getEOperations().get( 0 );
     }
 
@@ -4075,7 +4075,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         nsdObjectEClass = createEClass( NSD_OBJECT );
         createEAttribute( nsdObjectEClass, NSD_OBJECT__LINE_NUMBER );
         createEAttribute( nsdObjectEClass, NSD_OBJECT__EXPLICIT_LINKS_BUILT );
-        createEOperation( nsdObjectEClass, NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE );
+        createEOperation( nsdObjectEClass, NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE_BOOLEAN );
 
         agNSIdentificationEClass = createEClass( AG_NS_IDENTIFICATION );
         createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__RELEASE );
@@ -5044,9 +5044,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 1, NsdObject.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
 
-        op = initEOperation( getNsdObject__BuildExplicitLinks__IRiseClipseConsole(), ecorePackage.getEBoolean(),
+        op = initEOperation( getNsdObject__BuildExplicitLinks__IRiseClipseConsole_boolean(), ecorePackage.getEBoolean(),
                 "buildExplicitLinks", 0, 1, IS_UNIQUE, IS_ORDERED );
         addEParameter( op, this.getIRiseClipseConsole(), "console", 0, 1, IS_UNIQUE, IS_ORDERED );
+        addEParameter( op, ecorePackage.getEBoolean(), "forceUpdate", 0, 1, IS_UNIQUE, IS_ORDERED );
 
         initEClass( agNSIdentificationEClass, AgNSIdentification.class, "AgNSIdentification", IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
index 209edbd..1b21d08 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
@@ -1783,8 +1783,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
      *   SubDataAttribute.maxIndexAttribute -> DataAttribute.name                   ? Which DataAttribute ?
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = getConstructedAttribute().getConstructedAttributes().getNS();
         if( isSetPresCond() ) {
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
index 6a03845..ee1e4f9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
@@ -2019,8 +2019,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
      *   SubDataObject.maxIndexAttribute    -> DataAttribute.name
      */
     @Override
-    public boolean buildExplicitLinks( IRiseClipseConsole console ) {
-        if( super.buildExplicitLinks( console ) ) return true;
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
 
         NS ns = getCDC().getCDCs().getNS();
         if( isSetType() ) {
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java
index b88be73..8e5e696 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java
@@ -30,7 +30,7 @@ import fr.centralesupelec.edf.riseclipse.util.IRiseClipseResource;
  * The <b>Resource </b> associated with the package.
  * <!-- end-user-doc -->
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceFactoryImpl
- * @generated
+ * @generated NOT
  */
 public class NsdResourceImpl extends XMLResourceImpl implements IRiseClipseResource {
     /**
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetFactory.java
index c18d5be..1745045 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetFactory.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetFactory.java
@@ -19,6 +19,7 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseResourceSet;
 import fr.centralesupelec.edf.riseclipse.util.RiseClipseResourceSetFactory;
 
@@ -28,9 +29,9 @@ public class NsdResourceSetFactory extends RiseClipseResourceSetFactory {
      * @see fr.centralesupelec.edf.riseclipse.util.RiseClipseResourceSetFactory#createResourceSet()
      */
     @Override
-    public IRiseClipseResourceSet createResourceSet() {
+    public IRiseClipseResourceSet createResourceSet( IRiseClipseConsole console ) {
         // TODO Auto-generated method stub
-        return new NsdResourceSetImpl();
+        return new NsdResourceSetImpl( console );
     }
 
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
index cc9a0df..c1f7492 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
@@ -35,8 +35,8 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
     
     private Map< String, NS > nsdResources;
 
-    public NsdResourceSetImpl() {
-        super();
+    public NsdResourceSetImpl( IRiseClipseConsole console ) {
+        super( console );
         
         nsdResources = new HashMap< String, NS >();
     }
@@ -112,7 +112,7 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
         for( Resource resource : getResources() ) {
             DocumentRoot root = (DocumentRoot) resource.getContents().get( 0 );
             NS ns = ( NS ) root.getNS();
-            ns.buildExplicitLinks( console );
+            ns.buildExplicitLinks( console, true );
         }
         
     }
@@ -122,7 +122,7 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
     }
 
     /*
-     * Constraints
+     * Constraints : when DONE, as OCLinEcore in nsd.ecore
      * 
      *   NSDoc:
      *     Name: uniqueDocID                           Selector: nsd:Doc                           Field: @id
-- 
GitLab