diff --git a/src/main/jastadd/gen/Package.jadd b/src/main/jastadd/gen/Package.jadd index 4c5900a715267b1a003c9d12ca7b81c5e2d0a91b..ad6a06d34a8267c825b7fd0b5d5b044a478c5afe 100644 --- a/src/main/jastadd/gen/Package.jadd +++ b/src/main/jastadd/gen/Package.jadd @@ -34,4 +34,13 @@ aspect PackageGen { this.setFileContent(res); return res; } + + syn String TracingFile.generate(String rosHost, String rosMasterUri, String signalHost){ + + String res = de.tudresden.inf.st.pnml.gen.generators.JavaClassGenUtil + .generateTracingLauncherClass(rosHost, rosMasterUri, signalHost, + dinerosPackage().getNamespace()); + this.setFileContent(res); + return res; + } } \ No newline at end of file diff --git a/src/main/jastadd/gen/Package.relast b/src/main/jastadd/gen/Package.relast index a7e7465318b25656e6e681d206c6100ff242f1d9..cd1238c4f7946fa8f8cd9e500d214c25e5b7f54d 100644 --- a/src/main/jastadd/gen/Package.relast +++ b/src/main/jastadd/gen/Package.relast @@ -12,5 +12,6 @@ GradleFile:TemplateFile ; abstract JavaFile:TemplateFile ; NodeFile:JavaFile ; LauncherFile:JavaFile ; +TracingFile:JavaFile ; PackageDirectory:PackageElement ::= Dir:PackageDirectory* File:PackageFile* <Name:String> ; diff --git a/src/main/jastadd/gen/PackageNav.jadd b/src/main/jastadd/gen/PackageNav.jadd index 7a6e47cbacdefe05f4873a6709ee0701258cea54..3219e592f4e84b3df1873cbd27dc34417151ae2e 100644 --- a/src/main/jastadd/gen/PackageNav.jadd +++ b/src/main/jastadd/gen/PackageNav.jadd @@ -38,6 +38,12 @@ aspect PackageNav { syn LauncherFile PackageFile.asLauncherFile() = null; eq LauncherFile.asLauncherFile() = this; + syn boolean PackageFile.isTracingFile() = false; + eq TracingFile.isTracingFile() = true; + + syn TracingFile PackageFile.asTracingFile() = null; + eq TracingFile.asTracingFile() = this; + syn boolean PackageFile.isGradleFile() = false; eq GradleFile.isGradleFile() = true; 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 549ed6242c550ede98bb703896a6596c5e99b4bd..22189df857b8277be5c1ab255868b3194fed037c 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 @@ -23,12 +23,9 @@ public class Main { return; } - 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); - /* GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg", + GeneratorConfig gc = generatorConfigObjectMapper.readValue(Files.readString(Paths.get(args[0])), GeneratorConfig.class); + /*GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg", "de.tudresden.inf.st.sorting","0.1", "src/test/resources/EngineConfig.json","mqtt", "localhost", "http://localhost:11311","localhost", 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 eb3759e3ff5ac062b396f52b8f496d176e73023c..7fe88e8412d4e3fc84621727b0ceef12065e805c 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 @@ -120,6 +120,11 @@ public class PackageStructureBuilder { launcher.setFileID(UUID.randomUUID().toString()); pd.addFile(launcher); } + + TracingFile tracingFile = new TracingFile(); + tracingFile.setName("TracingNodeLauncher"); + tracingFile.setFileID(UUID.randomUUID().toString()); + pd.addFile(tracingFile); } if(pd.getName().equals("nets")){ @@ -265,6 +270,13 @@ public class PackageStructureBuilder { } } + System.out.println("Generating contents of tracing launcher."); + for (PackageFile pf : dinerosPackage.allPackageFiles()) { + if(pf.isTracingFile()){ + pf.asTracingFile().generate(rosHost, rosMasterUri, signalHost); + } + } + System.out.println("Generating contents of gradle files."); for (PackageFile pf : dinerosPackage.allPackageFiles()) { diff --git a/src/main/java/de/tudresden/inf/st/pnml/gen/generators/JavaClassGenUtil.java b/src/main/java/de/tudresden/inf/st/pnml/gen/generators/JavaClassGenUtil.java index e38b36bcf44c427b3473c529e272c92290d4b6c2..6e4dd95dccf596adf844b4ae7bd39700c2763e01 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/gen/generators/JavaClassGenUtil.java +++ b/src/main/java/de/tudresden/inf/st/pnml/gen/generators/JavaClassGenUtil.java @@ -17,6 +17,16 @@ public class JavaClassGenUtil extends AbstractGenUtil{ return generate(context, "JavaLauncher.mustache"); } + public static String generateTracingLauncherClass(String rosHost, String rosMasterUri, String signalHost, + String packageNamespace){ + + Map<String, Object> context = new HashMap<>(); + LauncherContext launcherContext = new LauncherContext(rosHost, rosMasterUri, signalHost, + packageNamespace, null, null); + context.put("launcherContext", launcherContext); + return generate(context, "JavaTracingLauncher.mustache"); + } + public static String generateNodeClass(String packageNamespace, String nodeName, String protocol){ Map<String, Object> context = new HashMap<>(); diff --git a/src/main/resources/mustache/JavaLauncher.mustache b/src/main/resources/mustache/JavaLauncher.mustache index b22c7325e577001195082111ba8c50d08cbe2d35..437b7ee7bed3c083b14314311d8a4c837bcbf399 100644 --- a/src/main/resources/mustache/JavaLauncher.mustache +++ b/src/main/resources/mustache/JavaLauncher.mustache @@ -1,6 +1,7 @@ {{#launcherContext}} package {{{packageNamespace}}}.launchers; +import de.tudresden.inf.st.pnml.engine.tracing.TracingNode; import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser; @@ -27,6 +28,7 @@ public class {{{nodeClassName}}}Launcher { // TODO: bind handlers to transitions new Thread(() -> nodeMainExecutor.execute(sensorNode, nodeConfiguration)) {{start();}}; + new Thread(() -> nodeMainExecutor.execute(new TracingNode(), nodeConfiguration)) {{start();}}; } } {{/launcherContext}} \ No newline at end of file diff --git a/src/main/resources/mustache/JavaTracingLauncher.mustache b/src/main/resources/mustache/JavaTracingLauncher.mustache new file mode 100644 index 0000000000000000000000000000000000000000..5ef21ea96686002536595bc1c7d12139bd534e84 --- /dev/null +++ b/src/main/resources/mustache/JavaTracingLauncher.mustache @@ -0,0 +1,26 @@ +{{#launcherContext}} +package {{{packageNamespace}}}.launchers; + +import de.tudresden.inf.st.pnml.engine.tracing.TracingNode; +import org.ros.node.DefaultNodeMainExecutor; +import org.ros.node.NodeConfiguration; +import org.ros.node.NodeMainExecutor; + +import java.net.URI; + +public class TracingNodeLauncher { + + private static final String ROS_HOST = "{{{rosHost}}}"; + private static final String ROS_MASTER_URI = "{{{rosMasterUri}}}"; + private static final String SIGNAL_HOST = "{{{signalHost}}}"; + + protected static final NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(ROS_HOST); + protected static final NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault(); + + public static void main(java.lang.String[] args) { + + nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI)); + new Thread(() -> nodeMainExecutor.execute(new TracingNode(), nodeConfiguration)) {{start();}}; + } +} +{{/launcherContext}} \ No newline at end of file diff --git a/src/main/resources/static/pnml-relast-engine-fatjar-0.1.jar b/src/main/resources/static/pnml-relast-engine-fatjar-0.1.jar index 07e243a4637c1493f47348f370ca9ff37748184d..6b9836bdaaeb962ab6b4d50755e445b81c76ba17 100644 Binary files a/src/main/resources/static/pnml-relast-engine-fatjar-0.1.jar and b/src/main/resources/static/pnml-relast-engine-fatjar-0.1.jar differ