From 2072bd2acc271f5ed25d4646eebc15d115e67116 Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Fri, 21 Apr 2023 13:15:21 +0200
Subject: [PATCH] fixed main-file and subscriber generation

---
 src/main/jastadd/gen/Package.relast           |  4 ++--
 .../de/tudresden/inf/st/pnml/gen/Main.java    | 12 +++++------
 .../gen/builders/PackageStructureBuilder.java | 15 +++++++++-----
 src/main/resources/mustache/JavaMain.mustache | 20 +++++++++++++------
 src/test/resources/EngineConfig.json          |  7 +++++--
 src/test/resources/GeneratorConfig.json       |  4 ++--
 6 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/src/main/jastadd/gen/Package.relast b/src/main/jastadd/gen/Package.relast
index ea32545..5375c99 100644
--- a/src/main/jastadd/gen/Package.relast
+++ b/src/main/jastadd/gen/Package.relast
@@ -11,8 +11,8 @@ GradleFile:TemplateFile ;
 
 abstract JavaFile:TemplateFile ;
 NodeFile:JavaFile ;
-SubscriberFile:JavaFile ;
-ServerFile:JavaFile ;
+SubscriberFile:JavaFile ::= <NetCount:Integer> <SubscriberCount:Integer>;
+ServerFile:JavaFile ::= <NetCount:Integer> <ServerCount:Integer>;
 MainFile:JavaFile ;
 MapperFile:JavaFile ;
 TokenFile:JavaFile ;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/gen/Main.java b/src/main/java/de/tudresden/inf/st/pnml/gen/Main.java
index bd96711..edea8a0 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/gen/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/gen/Main.java
@@ -18,13 +18,13 @@ public class Main {
 
     public static void main(java.lang.String[] args) throws IOException {
 
-        if(args.length != 1){
-            System.out.println("Error: Invalid arguments.");
-            return;
-        }
+    //    if(args.length != 1){
+      //      System.out.println("Error: Invalid arguments.");
+       //     return;
+       // }
 
-        String configPath = args[0];
-        // String configPath = "src/test/resources/GeneratorConfig.json";
+        //String configPath = args[0];
+        String configPath = "src/test/resources/GeneratorConfig.json";
 
         ObjectMapper generatorConfigObjectMapper = new ObjectMapper();
         GeneratorConfig gc = generatorConfigObjectMapper.readValue(Files.readString(Paths.get(configPath)), GeneratorConfig.class);
diff --git a/src/main/java/de/tudresden/inf/st/pnml/gen/builders/PackageStructureBuilder.java b/src/main/java/de/tudresden/inf/st/pnml/gen/builders/PackageStructureBuilder.java
index 6b97733..7e0f137 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/gen/builders/PackageStructureBuilder.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/gen/builders/PackageStructureBuilder.java
@@ -66,13 +66,13 @@ public class PackageStructureBuilder {
             if(pf.isTemplateFile()) {
 
                 if(pf.isJavaFile()){
-                    System.out.println("Writing file " + pf.getName() +  " to: " + packagePath + "/" + packageDirectory.getName() + "/" + pf.getName() + ".java");
+                  //  System.out.println("Writing file " + pf.getName() +  " to: " + packagePath + "/" + packageDirectory.getName() + "/" + pf.getName() + ".java");
 
-                    System.out.println("Content: \n" + pf.asTemplateFile().getFileContent());
+                    //System.out.println("Content: \n" + pf.asTemplateFile().getFileContent());
 
                     writeToFile(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName() + ".java", pf.asTemplateFile().getFileContent());
                 }else {
-                    System.out.println("Writing file " + pf.getName() +  " to: " + packagePath + "/" + packageDirectory.getName() + "/" + pf.getName());
+                    //System.out.println("Writing file " + pf.getName() +  " to: " + packagePath + "/" + packageDirectory.getName() + "/" + pf.getName());
                     writeToFile(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName(), pf.asTemplateFile().getFileContent());
                 }
             }
@@ -140,6 +140,8 @@ public class PackageStructureBuilder {
                         if (transitionType.equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_OUT)) {
                             ServerFile server = new ServerFile();
                             server.setName("Node" + i + "Server" + serverCount);
+                            server.setNetCount(i);
+                            server.setServerCount(serverCount);
                             server.setFileID(UUID.randomUUID().toString());
                             pd.addFile(server);
                             serverCount++;
@@ -148,6 +150,8 @@ public class PackageStructureBuilder {
                                 || transitionType.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN)) {
                             SubscriberFile subscriber = new SubscriberFile();
                             subscriber.setName("Node" + i + "Subscriber" + subscriberCount);
+                            subscriber.setNetCount(i);
+                            subscriber.setSubscriberCount(subscriberCount);
                             subscriber.setFileID(UUID.randomUUID().toString());
                             pd.addFile(subscriber);
                             subscriberCount++;
@@ -384,9 +388,10 @@ public class PackageStructureBuilder {
 
                             if (transitionType.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN)
                                     || transitionType.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN)) {
-                                pf.setName("Node" + i + "Subscriber" + (subscriberCountMap.get(nets.get(i).getId()) -1 ));
+                                System.out.println("t:" + t.getId());
+                                pf.setName("Node" + pf.asSubscriberFile().getNetCount() + "Subscriber" + pf.asSubscriberFile().getSubscriberCount());
                                 pf.asSubscriberFile().generate();
-                                subscriberCountMap.put(nets.get(i).getId(), subscriberCountMap.get(nets.get(i).getId()) + 1);
+                                //subscriberCountMap.put(nets.get(i).getId(), subscriberCountMap.get(nets.get(i).getId()) + 1);
                                 visitedPackageFileIDs.add(pf.getFileID());
                             }
                         }
diff --git a/src/main/resources/mustache/JavaMain.mustache b/src/main/resources/mustache/JavaMain.mustache
index 63a5bf4..b4e6585 100644
--- a/src/main/resources/mustache/JavaMain.mustache
+++ b/src/main/resources/mustache/JavaMain.mustache
@@ -1,7 +1,6 @@
 {{#mainExecutionContext}}
 package de.tudresden.inf.st.{{{packageNamespace}}};
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import de.tudresden.inf.st.pnml.engine.execution.TransitionCallback;
 import de.tudresden.inf.st.pnml.engine.execution.TransitionCallbackService;
 import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
@@ -13,9 +12,15 @@ import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
 import de.tudresden.inf.st.sample.balloon.Token;
 import de.tudresden.inf.st.sample.callback.AbstractNetCallback;
 import de.tudresden.inf.st.sample.callback.CallbackMapper;
-import de.tudresden.inf.st.sample.communication.Node2Subscriber1;
-import de.tudresden.inf.st.sample.nodes.Node1;
-import de.tudresden.inf.st.sample.nodes.Node2;
+{{#serverInfos}}
+import de.tudresden.inf.st.sample.communication.{{{serverClassName}}};
+{{/serverInfos}}
+{{#subscriberInfos}}
+import de.tudresden.inf.st.sample.communication.{{{subscriberClassName}}};
+{{/subscriberInfos}}
+{{#nodeInfos}}
+import de.tudresden.inf.st.sample.nodes.{{{nodeClassName}}};
+{{/nodeInfos}}
 import org.ros.node.DefaultNodeMainExecutor;
 import org.ros.node.NodeConfiguration;
 import org.ros.node.NodeMainExecutor;
@@ -75,9 +80,9 @@ public class Main {
          */
 
          {{#nodeInfos}}
-         Map<String, List<AbstractNetCallback>> callbackMap{{{nodeName}}} = CallbackMapper.initCallbacksFor{{{nodeName}}}(petriNets.get({{{nodeIndex}}}));
+         Map<String, List<AbstractNetCallback>> callbackMap{{{nodeClassName}}} = CallbackMapper.initCallbacksFor{{{nodeClassName}}}(petriNets.get({{{nodeIndex}}}));
 
-         for (Map.Entry<String, List<AbstractNetCallback>> entry : callbackMap{{{nodeName}}}.entrySet()) {
+         for (Map.Entry<String, List<AbstractNetCallback>> entry : callbackMap{{{nodeClassName}}}.entrySet()) {
              for(AbstractNetCallback anc : entry.getValue()){
                 transitionCallbackService.registerCallback(petriNets.get({{{nodeIndex}}}), entry.getKey(), anc);
              }
@@ -108,4 +113,7 @@ public class Main {
                   start();
               } };
           {{/nodeInfos}}
+
+         }
+        }
 {{/mainExecutionContext}}
\ No newline at end of file
diff --git a/src/test/resources/EngineConfig.json b/src/test/resources/EngineConfig.json
index dec50c2..53855b3 100644
--- a/src/test/resources/EngineConfig.json
+++ b/src/test/resources/EngineConfig.json
@@ -1,6 +1,9 @@
 [{
-	"net" : "/home/sebastian/Desktop/publisher-net.pnml"
+	"net" : "/home/sebastian/Desktop/tmp/net00.pnml"
 },
 {
-	"net" : "/home/sebastian/Desktop/subscriber-net.pnml"
+	"net" : "/home/sebastian/Desktop/tmp/net01.pnml"
+},
+{
+	"net" : "/home/sebastian/Desktop/tmp/net02.pnml"
 }]
diff --git a/src/test/resources/GeneratorConfig.json b/src/test/resources/GeneratorConfig.json
index 9c185f5..ca8bd50 100644
--- a/src/test/resources/GeneratorConfig.json
+++ b/src/test/resources/GeneratorConfig.json
@@ -3,9 +3,9 @@
   "rootName" : "sample-pkg",
   "namespace" : "sample",
   "version" : "0.1",
-  "configFile" : "/home/sebastian/jastadd-workspaces/dineros-linked-ws/pnml-relast-tools/pnml-relast-pkg-gen/src/test/resources/EngineConfig.json",
+  "configFile" : "EngineConfig.json",
   "rosHost" : "localhost",
   "rosMasterUri" : "http://localhost:11311",
   "mqttHost" : "localhost",
-  "targetPath" :"/home/sebastian/Desktop"
+  "targetPath" :""
 }
\ No newline at end of file
-- 
GitLab