From d4845b403066f8eb0718f0afcae20a0570cd7da2 Mon Sep 17 00:00:00 2001
From: Pedro Donini Linan <pedro.doninilinan@gmail.com>
Date: Sun, 3 Feb 2019 19:10:36 +0100
Subject: [PATCH] Small test to get to know nsdResource(NSD) and eObject(SCL).

---
 .../.gitignore                                |  1 +
 .../scl/validator/NSDEObjectValidator.java    | 40 ++++++++++++++++++-
 2 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/.gitignore

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/.gitignore b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/.gitignore
@@ -0,0 +1 @@
+/bin/
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 f959c74..470704b 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
@@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.scl.validator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
@@ -28,9 +29,18 @@ 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.TBasicType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.DAIImpl;
+import fr.centralesupelec.edf.riseclipse.iec61850.scl.impl.DAImpl;
 import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseConsole;
 
 public class NSDEObjectValidator implements EValidator {
@@ -51,6 +61,8 @@ public class NSDEObjectValidator implements EValidator {
             TFunctionalConstraint fc0 = fcs.getFunctionalConstraint().get( 0 );
             AbstractRiseClipseConsole.getConsole().info( "    FunctionalConstraint.titleID: " + fc0.getTitleID() );
         }
+   
+        
     }
 
     @Override
@@ -61,8 +73,27 @@ public class NSDEObjectValidator implements EValidator {
     @Override
     public boolean validate( EClass eClass, EObject eObject, DiagnosticChain diagnostics,
             Map< Object, Object > context ) {
-        AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validate( EClass ): " + eClass.getName() );
+        AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validate( EClass ): " + eClass.getName());
+        
         // TODO: use nsdResource to validate eObject
+
+        DocumentRoot root = (DocumentRoot) nsdResource.getContents().get( 0 );
+        TNS tns = (TNS) root.getNS();
+        
+        if(eClass.getName().equals("DA")) {
+        	log("\nClass " + eClass.getName());
+        	EList<TBasicType> tda = tns.getBasicTypes().getBasicType();
+        	DAImpl da = (DAImpl) eObject;
+        	log("DA " + da.getBType());
+        	for(int i = 0; i < tda.size(); i++) {
+        		if(da.getBType().equals(tda.get(i).getName())) {
+        			log("tda " + tda.get(i).getName());
+        			log("true");
+        			return true;
+        		}
+        	}
+        }
+        
         return true;
     }
 
@@ -70,8 +101,15 @@ public class NSDEObjectValidator implements EValidator {
     public boolean validate( EDataType eDataType, Object value, DiagnosticChain diagnostics,
             Map< Object, Object > context ) {
         AbstractRiseClipseConsole.getConsole().info( "NSDEObjectValidator.validate( EDataType ): " + eDataType.getName() );
+        
         // TODO: use nsdResource to validate value
+        
+
         return true;
     }
+    
+    public void log(String message) {
+        AbstractRiseClipseConsole.getConsole().info(message);
+    }
 
 }
-- 
GitLab