From 5e5ff481375b88f25dcf508a7f33a91166bfb430 Mon Sep 17 00:00:00 2001
From: Pedro Donini Linan <pedro.doninilinan@gmail.com>
Date: Tue, 12 Feb 2019 10:33:08 +0100
Subject: [PATCH] Added messages for the absence of DO and DA

---
 .../scl/validator/NsdEObjectValidator.java    | 64 ++++---------------
 1 file changed, 13 insertions(+), 51 deletions(-)

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdEObjectValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdEObjectValidator.java
index b6d2ca2..cbd1931 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdEObjectValidator.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdEObjectValidator.java
@@ -30,6 +30,7 @@ import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.resource.Resource;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
@@ -64,22 +65,10 @@ public class NsdEObjectValidator implements EValidator {
             Map< Object, Object > context ) {
         
         switch(eClass.getName()) {
-//        case "LNode":
-//        	LNode lnd = (LNode) eObject;
-//        	return validateLN(lnd.getLnClass());
-//        case "LNodeType":
-//        	LNodeType lnt = (LNodeType) eObject;
-//        	return validateLN(lnt.getLnClass());
         case "LN0":
         case "LN":
         	AnyLN ln = (AnyLN) eObject;
         	return validateLN(ln);
-//        case "DOType":
-//        	DOType dot = (DOType) eObject;
-//        	return validateDO(dot.getCdc());
-//        case "DA":
-//        	DA da = (DA) eObject;
-//        	return validateDA(da.getBType());
         default:
         	return false;
         }
@@ -98,6 +87,7 @@ public class NsdEObjectValidator implements EValidator {
     
     
     public boolean validateLN(AnyLN ln) {
+    	AbstractRiseClipseConsole.getConsole().info(" ");
         AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validateLN( " + ln.getLnClass() + " )" );
         
         // TODO: inheritance of LNClass must be taken into account
@@ -112,66 +102,38 @@ public class NsdEObjectValidator implements EValidator {
         // lnClassFound contains DataObject which describes allowed DOI in LN
         for( DOI doi : ln.getDOI() ) {
             Optional< DataObject > dataObjectFound = lnClassFound.get().getDataObject().stream().filter( dataObject -> dataObject.getName().equals( doi.getName()) ).findAny();
-            
+
             if( ! dataObjectFound.isPresent() ) {
                 // TODO: add message
-                return false;
+                AbstractRiseClipseConsole.getConsole().error( "DO " + doi.getName() + " not found in LNClass " +  ln.getLnClass());
+            	return false;
             }
             
             // dataObjectFound refers to a CDC which describes allowed DAI in DOI
             CDC cdcFound = dataObjectFound.get().getRefersToCDC();
+            AbstractRiseClipseConsole.getConsole().info( "found DO " + doi.getName() + " (CDC: " + cdcFound.getName() + ") in LNClass " +  ln.getLnClass());
             for( DAI dai : doi.getDAI() ) {
                 Optional< DataAttribute > dataAttributeFound = cdcFound.getDataAttribute().stream().filter( dataAttribute -> dataAttribute.getName().equals( dai.getName() ) ).findAny();
+                
                 if( ! dataAttributeFound.isPresent() ) {
                     // TODO: add message
-                    return false;
+                	AbstractRiseClipseConsole.getConsole().error( "DA " + dai.getName() + " not found in CDC " +  cdcFound.getName());
+                	return false;
                 }
+                AbstractRiseClipseConsole.getConsole().info( "found DA " + dai.getName() + " in CDC " +  cdcFound.getName());
                 
                 // TODO: is there anything else to check ?
+                
             }
             
-            // TODO: check that compulsory DataObject in cdcFound are present in doi 
+            // TODO: check that compulsory DataAttribute in cdcFound are present in doi 
         }
         
-        // TODO: check that compulsory DataAttribute in lnClassFound are present in ln 
+        // TODO: check that compulsory DataObject in lnClassFound are present in ln 
 
         return true;
     }
     
-//    public boolean validateDO(String cdcName) {
-//        AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validateDO( " + cdcName + " )" );
-//        if(ns.getCDCs() != null) {
-//	    	EList<CDC> cdc = ns.getCDCs().getCDC();
-//	    	for(int i = 0; i < cdc.size(); i++) {
-//	    		if(cdcName.equals(cdc.get(i).getName())) {
-//	    			//log("is valid");
-//	    			return true;
-//	    		}
-//	    	}
-//	    	//log("is not valid");
-//	    	return false;
-//        } else {
-//        	return true;
-//        }
-//    }
-//
-//    public boolean validateDA(String basicTypeName) {
-//        AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validateDA( " + basicTypeName + " )" );
-//        if(ns.getBasicTypes() != null) {
-//	    	EList<BasicType> basicTypes = ns.getBasicTypes().getBasicType();
-//	    	for(int i = 0; i < basicTypes.size(); i++) {
-//	    		if(basicTypeName.equals(basicTypes.get(i).getName())) {
-//	    			//log("is valid");
-//	    			return true;
-//	    		}
-//	    	}
-//	    	//log("is not valid");
-//	    	return false;
-//        } else {
-//        	return true;
-//        }
-//    }
-    
     
     public void log(String message) {
         AbstractRiseClipseConsole.getConsole().info(message);
-- 
GitLab