From 20d36c928ad9dfb53ce1a95c531c9684b7974bf3 Mon Sep 17 00:00:00 2001 From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr> Date: Tue, 31 Mar 2020 12:29:29 +0200 Subject: [PATCH] a number at the end of a DO name is not always an instance number --- .../DataObjectPresenceConditionValidator.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.validator/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.validator/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java index 639b358..bccbaa8 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.validator/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.validator/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/nsd/DataObjectPresenceConditionValidator.java @@ -15,7 +15,7 @@ ** dominique.marcadet@centralesupelec.fr ** aurelie.dehouck-neveu@edf.fr ** Web site: -** http://wdi.supelec.fr/software/RiseClipse/ +** http://wdi.centralesupelec.fr/software/RiseClipse/ ************************************************************************* */ package fr.centralesupelec.edf.riseclipse.iec61850.scl.validator.nsd; @@ -626,16 +626,17 @@ public class DataObjectPresenceConditionValidator { private boolean addDO( DO do_, String anyLNClassName, DiagnosticChain diagnostics ) { // An instance number may be set as a suffix - String[] names; - if( do_.getName().matches( "[a-zA-Z]+\\d+" )) { + // but a number at the end of the name is not always an instance number ! + // Therefore, we first look for with the full name, then with the name without the suffix + + String[] names = new String[] { do_.getName() }; + if( ! presentDO.containsKey( names[0] )) { + // if( do_.getName().matches( "[a-zA-Z]+\\d+" )) { names = do_.getName().split( "(?=\\d)", 2 ); - } - else { - names = new String[] { do_.getName() }; - } - if( names.length == 0 ) { - console.error( "[NSD validation] Unexpected DO name " + do_.getName() + " in LNodeType (line " + do_.getParentLNodeType().getLineNumber() ); - return false; + if( names.length == 0 ) { + console.error( "[NSD validation] Unexpected DO name " + do_.getName() + " in LNodeType (line " + do_.getParentLNodeType().getLineNumber() ); + return false; + } } if( ! presentDO.containsKey( names[0] )) { if( base != null ) { -- GitLab