From 3076c575e66e35d6bf9c1b1f4b22a3d97fcdd7f4 Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Tue, 13 Jun 2023 18:30:29 +0200
Subject: [PATCH] updated parsing for rewrites

---
 .../inf/st/pnml/base/constants/PnmlConstants.java     |  5 +++++
 src/main/jastadd/base/Navigation.jrag                 |  8 +++++++-
 src/main/jastadd/base/distribution/DistributedPN.jadd |  8 ++++++++
 .../jastadd/base/parsing/ToolSpecificsParser.jadd     |  8 ++++++++
 src/main/java/de/tudresden/inf/st/pnml/base/Main.java | 10 +---------
 src/main/resources/nets/TestNet2.pnml                 | 11 +++++++++++
 6 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
index f501298..8294e88 100644
--- a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
+++ b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
@@ -79,4 +79,9 @@ public final class PnmlConstants {
     public static final String CHANNEL_PLACE_TYPE_SERVER_RES_KEY = "sres";
     public static final String CHANNEL_PLACE_TYPE_SERVER_REQ_KEY = "sreq";
 
+    // page properties
+    public static final String PAGE_TYPE_SERVER = "serverPrototype";
+    public static final String PAGE_SERVER_INSTANCE_SUFFIX = "INSTANCE";
+    public static final String PAGE_SERVER_CONTAINER_SUFFIX = "CONTAINER";
+
 }
diff --git a/src/main/jastadd/base/Navigation.jrag b/src/main/jastadd/base/Navigation.jrag
index 7633e4f..92e53ae 100644
--- a/src/main/jastadd/base/Navigation.jrag
+++ b/src/main/jastadd/base/Navigation.jrag
@@ -160,7 +160,13 @@ aspect Navigation {
     to PetriNet.allTransitions()
     for petriNet();
 
-  coll java.util.Set<Arc> PetriNet.allArcs() [new java.util.HashSet()] root PetriNet;
+  coll java.util.Set<DinerosTransition> PetriNet.allDinerosTransitions() [new java.util.HashSet()] root PetriNet;
+  DinerosTransition contributes this
+    to PetriNet.allDinerosTransitions()
+    for petriNet();
+
+
+        coll java.util.Set<Arc> PetriNet.allArcs() [new java.util.HashSet()] root PetriNet;
   Arc contributes this
     to PetriNet.allArcs()
     for petriNet();
diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd
index 51e2dbf..60f7ef4 100644
--- a/src/main/jastadd/base/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/base/distribution/DistributedPN.jadd
@@ -23,6 +23,14 @@ aspect PnDistribution {
         return this.getMutablePlaceInformation();
     }
 
+    syn lazy String Page.getType() {
+        return ToolSpecificsParser.getPageTypeFromToolSpecifics(this.getToolspecificList());
+    }
+
+    syn lazy String Page.getServiceName() {
+        return ToolSpecificsParser.getServiceNameFromToolSpecifics(this.getToolspecificList());
+    }
+
     syn lazy String RefTransition.getNode() {
         return ToolSpecificsParser.getNodeFromToolSpecifics(this.getToolspecificList());
     }
diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
index 5ca907e..5089504 100644
--- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
+++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
@@ -194,6 +194,14 @@ aspect ToolSpecificsParser{
             return null;
         }
 
+        public static String getPageTypeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+            return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.TYPE_KEY);
+        }
+
+        public static String getServiceNameFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+            return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.SERVICE_NAME);
+        }
+
         public static String getTransitionServiceNameFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
             return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.SERVICE_NAME);
         }
diff --git a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
index 8f66c01..d610453 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
@@ -1,16 +1,8 @@
 package de.tudresden.inf.st.pnml.base;
 
-import beaver.Parser;
-import de.tudresden.inf.st.pnml.jastadd.model.InputSignalClause;
-import de.tudresden.inf.st.pnml.jastadd.parser.ExpressionParser;
-import de.tudresden.inf.st.pnml.jastadd.scanner.ExpressionScanner;
-
-import java.io.IOException;
-import java.io.StringReader;
-
 public class Main {
 
-    public static void main(String[] args) throws IOException, Parser.Exception {
+    public static void main(String[] args){
 
         // Nothing to do here
         // List<PetriNet> petriNets = PnmlParser.parsePnml("...");
diff --git a/src/main/resources/nets/TestNet2.pnml b/src/main/resources/nets/TestNet2.pnml
index 63df430..3f15265 100644
--- a/src/main/resources/nets/TestNet2.pnml
+++ b/src/main/resources/nets/TestNet2.pnml
@@ -18,7 +18,13 @@
             </communicators>
         </toolspecific>
         <page id="top">
+            <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                <type>dinerosPage</type>
+            </toolspecific>
             <page id="sourcePage">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                    <type>dinerosPage</type>
+                </toolspecific>
                 <place id="req1">
                     <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
                         <node>n1</node>
@@ -56,6 +62,7 @@
                     <serviceName>sampleService</serviceName>
                     <serverInput>serverIn</serverInput>
                     <serverOutput>serverOut</serverOutput>
+                    <serverCapacity>16</serverCapacity>
                     <channels>
                         <channel>
                             <cid>c1</cid>
@@ -75,6 +82,10 @@
                 </graphics>
             </transition>
             <page id="targetPage">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                    <type>serverPrototype</type>
+                    <serviceName>sampleService</serviceName>
+                </toolspecific>
                 <place id="serverIn">
                     <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
                         <node>n2</node>
-- 
GitLab