Skip to content
Snippets Groups Projects
Commit 8eda7989 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

integrated tracing gen

parent 68ba775f
No related branches found
No related tags found
No related merge requests found
...@@ -34,4 +34,13 @@ aspect PackageGen { ...@@ -34,4 +34,13 @@ aspect PackageGen {
this.setFileContent(res); this.setFileContent(res);
return 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
...@@ -12,5 +12,6 @@ GradleFile:TemplateFile ; ...@@ -12,5 +12,6 @@ GradleFile:TemplateFile ;
abstract JavaFile:TemplateFile ; abstract JavaFile:TemplateFile ;
NodeFile:JavaFile ; NodeFile:JavaFile ;
LauncherFile:JavaFile ; LauncherFile:JavaFile ;
TracingFile:JavaFile ;
PackageDirectory:PackageElement ::= Dir:PackageDirectory* File:PackageFile* <Name:String> ; PackageDirectory:PackageElement ::= Dir:PackageDirectory* File:PackageFile* <Name:String> ;
...@@ -38,6 +38,12 @@ aspect PackageNav { ...@@ -38,6 +38,12 @@ aspect PackageNav {
syn LauncherFile PackageFile.asLauncherFile() = null; syn LauncherFile PackageFile.asLauncherFile() = null;
eq LauncherFile.asLauncherFile() = this; 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; syn boolean PackageFile.isGradleFile() = false;
eq GradleFile.isGradleFile() = true; eq GradleFile.isGradleFile() = true;
......
...@@ -23,11 +23,8 @@ public class Main { ...@@ -23,11 +23,8 @@ public class Main {
return; return;
} }
String configPath = args[0];
//String configPath = "src/test/resources/GeneratorConfig.json";
ObjectMapper generatorConfigObjectMapper = new ObjectMapper(); ObjectMapper generatorConfigObjectMapper = new ObjectMapper();
GeneratorConfig gc = generatorConfigObjectMapper.readValue(Files.readString(Paths.get(configPath)), GeneratorConfig.class); GeneratorConfig gc = generatorConfigObjectMapper.readValue(Files.readString(Paths.get(args[0])), GeneratorConfig.class);
/*GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg", /*GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg",
"de.tudresden.inf.st.sorting","0.1", "de.tudresden.inf.st.sorting","0.1",
"src/test/resources/EngineConfig.json","mqtt", "localhost", "src/test/resources/EngineConfig.json","mqtt", "localhost",
......
...@@ -120,6 +120,11 @@ public class PackageStructureBuilder { ...@@ -120,6 +120,11 @@ public class PackageStructureBuilder {
launcher.setFileID(UUID.randomUUID().toString()); launcher.setFileID(UUID.randomUUID().toString());
pd.addFile(launcher); pd.addFile(launcher);
} }
TracingFile tracingFile = new TracingFile();
tracingFile.setName("TracingNodeLauncher");
tracingFile.setFileID(UUID.randomUUID().toString());
pd.addFile(tracingFile);
} }
if(pd.getName().equals("nets")){ if(pd.getName().equals("nets")){
...@@ -265,6 +270,13 @@ public class PackageStructureBuilder { ...@@ -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."); System.out.println("Generating contents of gradle files.");
for (PackageFile pf : dinerosPackage.allPackageFiles()) { for (PackageFile pf : dinerosPackage.allPackageFiles()) {
......
...@@ -17,6 +17,16 @@ public class JavaClassGenUtil extends AbstractGenUtil{ ...@@ -17,6 +17,16 @@ public class JavaClassGenUtil extends AbstractGenUtil{
return generate(context, "JavaLauncher.mustache"); 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){ public static String generateNodeClass(String packageNamespace, String nodeName, String protocol){
Map<String, Object> context = new HashMap<>(); Map<String, Object> context = new HashMap<>();
......
{{#launcherContext}} {{#launcherContext}}
package {{{packageNamespace}}}.launchers; 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.PetriNet;
import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser; import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
...@@ -27,6 +28,7 @@ public class {{{nodeClassName}}}Launcher { ...@@ -27,6 +28,7 @@ public class {{{nodeClassName}}}Launcher {
// TODO: bind handlers to transitions // TODO: bind handlers to transitions
new Thread(() -> nodeMainExecutor.execute(sensorNode, nodeConfiguration)) {{start();}}; new Thread(() -> nodeMainExecutor.execute(sensorNode, nodeConfiguration)) {{start();}};
new Thread(() -> nodeMainExecutor.execute(new TracingNode(), nodeConfiguration)) {{start();}};
} }
} }
{{/launcherContext}} {{/launcherContext}}
\ No newline at end of file
{{#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
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment