From 168656c2c47b034aeec415990a4e2fb9171ed906 Mon Sep 17 00:00:00 2001
From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr>
Date: Tue, 21 May 2019 11:23:25 +0200
Subject: [PATCH] lnNs may be missing in MONamPlt

---
 .../nsd/DataObjectPresenceConditionValidator.java          | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java
index 54be618..cf7df6c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java
@@ -1543,7 +1543,8 @@ public class DataObjectPresenceConditionValidator {
             AbstractRiseClipseConsole.getConsole().verbose( "[NSD validation] validation of presence condition \"MONamPlt\" on LNodeType (id=" + lNodeType.getId() + ") at line " + lNodeType.getLineNumber() );
 
             // The attribute lnNs shall be a DataAttribute of the name plate NamPlt of a logical node
-            String lnNs = "";
+            // lnNs shall be available only if the logical node name space deviates from the name space referenced in the attribute ldNs of the LLN0
+            String lnNs = null;
             Optional< DOType > doType =
                     lNodeType
                     .getDO()
@@ -1575,7 +1576,7 @@ public class DataObjectPresenceConditionValidator {
                 
                 // The attribute ldNs shall be a DataAttribute of the name plate NamPlt of the LOGICAL- NODE-ZERO (LLN0).
                 for( AnyLN anyLN : lNodeType.getReferredByAnyLN() ) {
-                    String ldNs = "";
+                    String ldNs = null;
                     doType =
                             anyLN
                             .getParentLDevice()
@@ -1609,7 +1610,7 @@ public class DataObjectPresenceConditionValidator {
                         }
                     }
                     
-                    if( ! lnNs.equals( ldNs )) {
+                    if(( lnNs != null ) && ( ! lnNs.equals( ldNs ))) {
                         for( String name : mandatoryIfNameSpaceOfLogicalNodeDeviatesElseOptional2 ) {
                             if( presentDO.get( name ) == null ) {
                                 diagnostics.add( new BasicDiagnostic(
-- 
GitLab