From 48bbc12b91fceef437508362d283c230c9680009 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Tue, 22 Jun 2021 14:02:08 +0200
Subject: [PATCH] fixing bugs

- make StartStrategy non-optional
- copy-paste-bugs in parser
- check for hasReportStrategy when printing details
---
 src/main/jastadd/Coordinator.jrag                        | 2 +-
 src/main/jastadd/Coordinator.parser                      | 8 ++++----
 src/main/jastadd/Coordinator.relast                      | 2 +-
 .../de/tudresden/inf/st/coordinator/MainCoordinator.java | 9 +++++----
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/main/jastadd/Coordinator.jrag b/src/main/jastadd/Coordinator.jrag
index cdd6a21..1f9a8a2 100644
--- a/src/main/jastadd/Coordinator.jrag
+++ b/src/main/jastadd/Coordinator.jrag
@@ -192,7 +192,7 @@ aspect Printing {
     }
     return "<Name: " + getName() +
       ", StartStrategy: " + getStartStrategy().details() +
-      ", ReportStrategy: " + getReportStrategy().details() +
+      (hasReportStrategy() ?  ", ReportStrategy: " + getReportStrategy().details() : "") +
       ", Status: " + getStatus() +
       ", NextCommand: " + getNextCommand() +
       ", Deps: " + sj.toString() +
diff --git a/src/main/jastadd/Coordinator.parser b/src/main/jastadd/Coordinator.parser
index 4d28fc1..a1bb3f6 100644
--- a/src/main/jastadd/Coordinator.parser
+++ b/src/main/jastadd/Coordinator.parser
@@ -44,21 +44,21 @@ Component component =
   ;
 
 Component component_body =
-    COMMA START USING start_strategy.s component_body.c           {: c.setStartStrategy(s); return c; :}
+    COMMA START USING start_strategy.s component_body.c         {: c.setStartStrategy(s); return c; :}
   | COMMA REPORT USING report_strategy.r component_body.c       {: c.setReportStrategy(r); return c; :}
   | COMMA STATUS TEXT.s AFTER INTEGER.i SEC component_body.c    {: c.setAutoSetStatus(new AutoSetStatus(s, Integer.parseInt(i))); return c; :}
-  | COMMA START AFTER REQS component_body.c                          {: c.setStartAsUp(true); return c; :}
+  | COMMA START AFTER REQS component_body.c                {: c.setStartAsUp(true); return c; :}
   |                                                             {: Component c = new Component(); c.setStartStrategy(new ManualStartStrategy()); return c; :}
   ;
 
 StartStrategy start_strategy =
-    DOCKER_COMPOSE TEXT.dc component_body.c    {: return new DockerComposeStartStrategy().setName(dc); :}
+    DOCKER_COMPOSE TEXT.dc                     {: return new DockerComposeStartStrategy().setName(dc); :}
   | SCRIPT TEXT.cmd                            {: return new ScriptStartStrategy().setCommand(cmd); :}
   | SCRIPT TEXT.cmd IN TEXT.cwd                {: return new ScriptStartStrategy().setCommand(cmd).setCwd(cwd); :}
   ;
 
 ReportStrategy report_strategy =
-    MQTT TEXT.topic component_body.c    {: return new MqttReportStrategy().setTopicPrefix(topic); :}
+    MQTT TEXT.topic    {: return new MqttReportStrategy().setTopicPrefix(topic); :}
   ;
 
 StringList string_list =
diff --git a/src/main/jastadd/Coordinator.relast b/src/main/jastadd/Coordinator.relast
index 87baf3f..11abd37 100644
--- a/src/main/jastadd/Coordinator.relast
+++ b/src/main/jastadd/Coordinator.relast
@@ -1,5 +1,5 @@
 Coordinator ::= Component* ParsedPrecedenceRelation* ; // /NextComponentToStart:Component/ ;
-Component ::= <Name:String> [StartStrategy] [ReportStrategy] <Status:String> [AutoSetStatus] <StartAsUp:boolean> /<NextCommand:String>/ ;
+Component ::= <Name:String> StartStrategy [ReportStrategy] <Status:String> [AutoSetStatus] <StartAsUp:boolean> /<NextCommand:String>/ ;
 rel Component.Predecessor* <-> Component.Successor* ;
 
 abstract StartStrategy ;
diff --git a/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java b/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java
index ede4051..7ccd1f6 100644
--- a/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java
+++ b/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java
@@ -120,13 +120,13 @@ public class MainCoordinator implements Callable<Integer> {
       if (alreadyRunning.contains(comp)) {
         comp.setStatus("up");
         if (comp.hasAutoSetStatus() && !comp.getStartAsUp()) {
-          schduleAutoSetStatus(comp);
+          scheduleAutoSetStatus(comp);
         }
       }
       if (!alreadyRunning.contains(comp) && !comp.getStartAsUp()) {
         comp.getStartStrategy().start();
         if (comp.hasAutoSetStatus()) {
-          schduleAutoSetStatus(comp);
+          scheduleAutoSetStatus(comp);
         }
       }
     }
@@ -135,7 +135,7 @@ public class MainCoordinator implements Callable<Integer> {
     return 0;
   }
 
-  private void schduleAutoSetStatus(Component comp) {
+  private void scheduleAutoSetStatus(Component comp) {
     executor.schedule(() -> {
       System.out.println("Setting status of " + comp.getName() + " to " + comp.getAutoSetStatus().getStatus());
       comp.setStatus(comp.getAutoSetStatus().getStatus());
@@ -143,7 +143,8 @@ public class MainCoordinator implements Callable<Integer> {
   }
 
   private void printStatus(String message) {
-    String content = message.contains("detail") ? coordinator.details() : coordinator.prettyPrint();
+    String content = message.contains("detail") ?
+        ("Model-Status (detailed):\n" + coordinator.details()) : ("Model-Status:\n" + coordinator.prettyPrint());
     System.out.println(content);
     if (mainHandler != null) {
       mainHandler.publish(TOPIC_STATUS, content.getBytes(StandardCharsets.UTF_8));
-- 
GitLab