From 613c7879b12bd93c2776f9ae8fe3c4b0ca52d01f Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Mon, 19 Jun 2023 18:11:51 +0200
Subject: [PATCH] export of topic transition toolspecifics

---
 .../st/pnml/base/constants/PnmlConstants.java |  2 +-
 .../export/PrimitiveElementsConverter.jadd    | 43 ++++++++++++++++++-
 2 files changed, 43 insertions(+), 2 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 cb1f09b..0387382 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
@@ -5,7 +5,7 @@ public final class PnmlConstants {
     // general transitions
     public static final String TRANSITION_TYPE_DISCRETE = "discreteTransitionType";
 
-    // topic transitions
+    // topic elements
     public static final String TRANSITION_TYPE_TOPIC = "topicTransitionType";
 
     public static final String TRANSITION_TOPIC_PUBLISHERS_DEF_KEY = "publishers";
diff --git a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
index 373dbee..aba8f0a 100644
--- a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
+++ b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
@@ -148,7 +148,8 @@ aspect PrimitiveElementsConverter{
 
                             sb.append("</channels>");
 
-                            t.addToolspecificsHLAPI(new ToolInfoHLAPI(toolInfo.getTool(), toolInfo.getVersion(), sb, toolInfo.getToolInfoGrammarURI(), null));
+                            t.addToolspecificsHLAPI(new ToolInfoHLAPI(toolInfo.getTool(),
+                                    toolInfo.getVersion(), sb, toolInfo.getToolInfoGrammarURI(), null));
 
                         } else {
                             t.addToolspecificsHLAPI(new ToolInfoHLAPI(toolInfo.getTool(), toolInfo.getVersion(),
@@ -157,6 +158,46 @@ aspect PrimitiveElementsConverter{
                         }
                     }
 
+                } else if(dinerosTransition.getStaticTransitionInformation().isServiceTransitionInformation()){
+
+                    for(ToolInfo toolInfo : dinerosTransition.getToolspecificList()) {
+                        if (toolInfo.getTool().equals(PnmlConstants.TOOL_SPEC_KEY)) {
+                            StringBuffer sb = new StringBuffer();
+
+                            TopicTransitionInformation tti = dinerosTransition.getMutableTransitionInformation().asTopicTransitionInformation();
+
+                            sb.append("<type>topic</type> \n");
+                            sb.append("<topicName>" + tti.getTopic() + "</topicName> \n");
+
+                            sb.append("<publishers> \n");
+
+                            for(PublisherPort tp : tti.getPublisherPorts()){
+
+                                sb.append("<publisher> \n");
+                                sb.append("<id>" + tp.getPlaceId() + "</id> \n");
+                                sb.append("<limit>" + tp.getLimit() + "</limit> \n");
+                                sb.append("</publisher> \n");
+                            }
+
+                            sb.append("</publishers> \n");
+
+                            sb.append("<subscribers> \n");
+
+                            for(SubscriberPort sp : tti.getSubscriberPorts()){
+
+                                sb.append("<subscriber> \n");
+                                sb.append("<id>" + sp.getPlaceId() + "</id> \n");
+                                sb.append("<limit>" + sp.getLimit() + "</limit> \n");
+                                sb.append("</subscriber> \n");
+                            }
+
+                            sb.append("</subscribers> \n");
+
+                            t.addToolspecificsHLAPI(new ToolInfoHLAPI(toolInfo.getTool(),
+                                    toolInfo.getVersion(), sb, toolInfo.getToolInfoGrammarURI(), null));
+                        }
+                    }
+
                 } else {
                     dinerosTransition.getToolspecificList().forEach(toolInfo ->
                             t.addToolspecificsHLAPI(new ToolInfoHLAPI(toolInfo.getTool(), toolInfo.getVersion(),
-- 
GitLab