From 56aaae6ed2fa46004f0b36fae61dcd784574771d Mon Sep 17 00:00:00 2001
From: Susa Giogoli <su.giogoli@icloud.com>
Date: Thu, 6 Jul 2023 13:49:02 +0200
Subject: [PATCH] event progress

---
 newmodeljsonparse.py | 31 +++++++++++++++++++++++++------
 writefile.py         | 19 +++++++++++++++++--
 2 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/newmodeljsonparse.py b/newmodeljsonparse.py
index 8f58cb9..f157e58 100644
--- a/newmodeljsonparse.py
+++ b/newmodeljsonparse.py
@@ -233,6 +233,18 @@ def getInterfaceparam(list1, interface, searched, jsoncomponents, searchinglist)
         return list1
 
 
+def getEvents(list1, component, jsoncomponents):
+    for event in component["events"]:
+        list1.append(event)
+    if iskeythere(list(component.keys()), "baseComponent"):
+        for search in jsoncomponents:
+            if search["uuid"] == component["baseComponent"]:
+                return getEvents(list1, search, jsoncomponents)
+    else:
+        return list1
+
+
+
 def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, objcomponentsclone):
     for obj in jsoninterfaces:
         rootobj = {}
@@ -261,33 +273,37 @@ def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasur
     return interfacesreturn
 
 
-def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict):
+def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict, eventsdict):
         count = 0
         countcomponent = 0
         for interface in interfaces:
             root = interface
+            events = getEvents([], root, jsoncomponents)
             components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents)
             if interface["name"] in list(instantiatedict.keys()):
                 count += 1
             instantiatedict[str(interface["name"])] = wf.writeobjects(typesdict[str(interface["name"])], interface["name"], instantiatedict[str(headnode["name"])], count)
+            eventsdict[str(instantiatedict[str(interface["name"])])] = events
             if len(components) > 0:
-                instantiateComponents(typesdict,components , jsoncomponents, interface, instantiatedict)
+                instantiateComponents(typesdict,components , jsoncomponents, interface, instantiatedict, eventsdict)
 
-        return instantiatedict
+        return instantiatedict, eventsdict
 
 
 def instantiate(typesdict, interfaces, jsoncomponents):
     instantiatedict = {}
+    eventsdict = {}
     for interface in interfaces:
         root = {}
         count = 0
         for component in jsoncomponents:
             if interface["rootComponent"] == component["uuid"]:
                 root = component
+        events = getEvents([], root, jsoncomponents)
         components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents)
-        #events = getInterfaceparam([], root, "events", jsoncomponents, jsonevents)
         instantiatedict[str(interface["name"])] = wf.writeinterface(typesdict[str(interface["name"])], interface["name"], count)
-        instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict)
+        eventsdict[str(instantiatedict[str(interface["name"])])] = events
+        return instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict)
 
 
 def main():
@@ -327,7 +343,10 @@ def main():
             elif obj["elementType"] == "enum":
                 jsonenums.append(obj)
         typesdict = buildComponents({}, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, [])
-        intantiateddict = instantiate(typesdict, jsoninterfaces, jsoncomponents)
+        returnval = instantiate(typesdict, jsoninterfaces, jsoncomponents)
+        instantiatedict = returnval[0]
+        eventsdict = returnval[1]
+        print(eventsdict)
 
         wf.writend()
 
diff --git a/writefile.py b/writefile.py
index 164c601..00a9427 100644
--- a/writefile.py
+++ b/writefile.py
@@ -199,13 +199,28 @@ def writeinterface(objtype, objname, count):
     server.write(writeindent + objtypename + "= await server.nodes.objects.add_object(idx, \"" + objname + "\", " + objtype + ".nodeid)\n")
     return objtypename
 
-def writend():
+
+def writeevents(events, component):
+    server = open("opcua-server.py", "a")
+    server.write(")
+
+
+def writendpt1():
     server = open("opcua-server.py", "a")
     server.write("""
     async with server:
         print("Server is running!")
-
+        count = 0
+        
         while True:
+        """)
+
+
+
+
+def writendpt2():
+    server = open("opcua-server.py", "a")
+    server.write("""
             await asyncio.sleep(1)
 
 if __name__ == '__main__':
-- 
GitLab