From 323080843291f52afe050968d15d6bee0185044a Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Thu, 21 Jan 2021 12:45:36 +0100
Subject: [PATCH] update task

---
 statemachine.task/build.gradle                | 31 +++++++++++++++++--
 .../src/main/jastadd/SMtoDotG.jrag            | 18 +++++++++++
 .../tudresden/inf/st/statemachine/Main.java   |  2 ++
 3 files changed, 49 insertions(+), 2 deletions(-)
 create mode 100644 statemachine.task/src/main/jastadd/SMtoDotG.jrag

diff --git a/statemachine.task/build.gradle b/statemachine.task/build.gradle
index 1ba0944..d2e348f 100644
--- a/statemachine.task/build.gradle
+++ b/statemachine.task/build.gradle
@@ -21,7 +21,11 @@ configurations {
 File genSrc = file("src/gen/java")
 idea.module.generatedSourceDirs += genSrc
 sourceSets.main.java.srcDir genSrc
-//jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main')
+
+jar {
+    from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
+    manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main')
+}
 
 dependencies {
     implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}"
@@ -29,7 +33,7 @@ dependencies {
     implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5'
 
     jastadd2 "org.jastadd:jastadd:2.3.4"
-    ragdoc files('../libs/rd-builder.jar')
+    ragdoc files('../libs/rd-builder-1.3.0.jar')
 }
 
 // Default run configuration
@@ -58,6 +62,29 @@ task ecoreToRelast(type: JavaExec) {
     outputs.files file(relastFile)
 }
 
+task('ragdoc-java-8', type: JavaExec, group: 'documentation') {
+    description 'Generates RagDoc metadata for this JastAdd project.'
+
+    inputs.files {
+        sourceSets.main.allJava.files
+    }
+
+    main = 'org.extendj.ragdoc.RagDocBuilder'
+
+    doFirst {
+        def destDir = new File(docsDir, 'ragdoc')
+        if (!destDir.isDirectory()) {
+            destDir.mkdirs()
+        }
+        classpath = configurations.ragdoc
+        def sourceFiles = sourceSets.main.allJava.files
+        args(['-d', "$destDir",
+              '-bootclasspath', '/usr/lib/jvm/java-1.8.0/jre/lib/rt.jar',
+        ] + sourceFiles)
+    }
+}
+
+
 // Second phase: RelAst -> JastAdd
 task relastToJastAdd(type: JavaExec) {
     group = 'Build'
diff --git a/statemachine.task/src/main/jastadd/SMtoDotG.jrag b/statemachine.task/src/main/jastadd/SMtoDotG.jrag
new file mode 100644
index 0000000..18155d5
--- /dev/null
+++ b/statemachine.task/src/main/jastadd/SMtoDotG.jrag
@@ -0,0 +1,18 @@
+aspect StateMachinetoDotG {
+  syn String StateMachine.toDot() {
+    StringBuilder b = new StringBuilder();
+    b.append("strict digraph cycles {\n");
+
+    for (State from : states()) {
+      b.append("  ").append(from.getLabel()).append("[label=\"").append(from.getLabel()).append("\"];\n");
+
+      for (Transition out : from.getOutgoingList()) {
+        b.append("  ").append(from.getLabel()).append(" -> ").append(out.getTo().getLabel())
+         .append("[label=\"").append(out.getLabel()).append("\"];\n");
+      }
+    }
+
+    b.append("}\n");
+    return b.toString();
+  }
+}
diff --git a/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java b/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java
index 2c381ce..2d0d558 100644
--- a/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java
+++ b/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java
@@ -41,6 +41,8 @@ public class Main {
       printHeading("StateMachine after");
       System.out.println(stateMachine.prettyPrint());
     }
+    printHeading("DotGraph");
+    System.out.println(stateMachine.toDot());
     Dumper.read(stateMachine).dumpAsPNG(Paths.get("02-transformed.png"));
     DrAST_root_node = stateMachine;
   }
-- 
GitLab