diff --git a/src/main/jastadd/gen/Package.relast b/src/main/jastadd/gen/Package.relast index 824b85cf43ef192b6d9986bf86a71010cf7bc387..ea32545781a9288dca92f444503c39c64dcd01c7 100644 --- a/src/main/jastadd/gen/Package.relast +++ b/src/main/jastadd/gen/Package.relast @@ -4,7 +4,7 @@ abstract PackageElement; abstract PackageFile:PackageElement ::= <Name:String> <FileID:String> ; StaticFile:PackageFile ; -PnmlFile:StaticFile; +PnmlFile:StaticFile ::= <SourceName:String> <SourcePath:String>; abstract TemplateFile:PackageFile ::= <FileContent:String> ; GradleFile:TemplateFile ; diff --git a/src/main/jastadd/gen/PackageNav.jadd b/src/main/jastadd/gen/PackageNav.jadd index 7df5ef1b52b75237474e8e6fb2ba5aa414d0b30d..9400423ebc9cb16ce747c35d00cf89a64345e754 100644 --- a/src/main/jastadd/gen/PackageNav.jadd +++ b/src/main/jastadd/gen/PackageNav.jadd @@ -14,6 +14,9 @@ aspect PackageNav { syn boolean PackageFile.isPnmlFile() = false; eq PnmlFile.isPnmlFile() = true; + syn boolean PackageFile.isJavaFile() = false; + eq JavaFile.isJavaFile() = true; + syn boolean PackageFile.isTemplateFile() = false; eq TemplateFile.isTemplateFile() = true; @@ -26,6 +29,8 @@ aspect PackageNav { syn NodeFile PackageFile.asNodeFile() = null; eq NodeFile.asNodeFile() = this; + syn PnmlFile PackageFile.asPnmlFile() = null; + eq PnmlFile.asPnmlFile() = this; syn boolean PackageFile.isSubscriberFile() = false; eq SubscriberFile.isSubscriberFile() = 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 5e656bf78745dafcdf23de92ad7073922fdc0ba9..9b2b613a03e446c006db77a892f2ff9789959433 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 @@ -38,8 +38,8 @@ public class Main { // ObjectMapper gcObjectMapper = new ObjectMapper(); // GeneratorConfig config = gcObjectMapper.readValue(Files.readString(Paths.get(args[1])), new TypeReference<List<NetInfo>>(){}); - GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg","/home/sebastian/Desktop/Token.java", - "sample","0.1","/home/sebastian/Desktop/EngineConfig.json","localhost", + GeneratorConfig gc = new GeneratorConfig("sample", "sample-pkg","/home/sebastian/git/dineros/pnml-relast-tools/pnml-relast-pkg-gen/src/test/java/Token.java", + "sample","0.1","/home/sebastian/git/dineros/pnml-relast-tools/pnml-relast-pkg-gen/src/test/resources/EngineConfig.json","localhost", "http://localhost:11311","localhost","/home/sebastian/Desktop"); DinerosPackage dp = new DinerosPackage(); 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 db32ef467bd5020770e82eec4aefbe080181786c..f531a68a68b1fed0fd8b93d5d69eaed4547eecf9 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 @@ -19,7 +19,7 @@ public class PackageStructureBuilder { public static boolean build(String targetPath, DinerosPackage dinerosPackage, List<NetInfo> petriNetFilePaths, String engineVersion , String rosHost, String rosMasterUri, String mqttHost) { - String packagePath = targetPath + "/" + dinerosPackage.getRootName(); + String packagePath = targetPath; // + "/" + dinerosPackage.getRootName(); List<PetriNet> nets = new ArrayList<>(); @@ -37,19 +37,21 @@ public class PackageStructureBuilder { Files.createDirectories(Paths.get(packagePath)); buildDinerosPackageStructure(dinerosPackage.getRootName(), dinerosPackage.getNamespace(), dinerosPackage); - buildDinerosGeneratedFilesStructure(dinerosPackage, nets); + buildDinerosGeneratedFilesStructure(dinerosPackage, nets, petriNetFilePaths); buildStaticFilesIntoDinerosPackage(dinerosPackage, engineVersion); includeDirectoriesRecursive(dinerosPackage.getDir(0), packagePath); includeTemplateFiles(dinerosPackage, nets, engineVersion, stringNetPaths, rosHost, rosMasterUri, mqttHost); includeFilesInPackageRecursive(dinerosPackage.getDir(0), packagePath); - includePnmlFiles(dinerosPackage, petriNetFilePaths, packagePath); - includeTokenClass(dinerosPackage, packagePath); + // includePnmlFiles(dinerosPackage, petriNetFilePaths, packagePath); + includeTokenClass(dinerosPackage, packagePath); // TODO fix insertStringsAsFilesRecursive(dinerosPackage.getDir(0), packagePath); } catch (IOException e) { - System.out.println(e.getMessage() + " caused by: " + e.getCause()); + System.err.println(e.getLocalizedMessage() + " caused by: " + e.getCause()); + e.printStackTrace(); + return false; } @@ -64,7 +66,13 @@ public class PackageStructureBuilder { for (PackageFile pf : packageDirectory.getFileList()){ if(pf.isTemplateFile()) { - writeToFile(packagePath + "/" + pf.getName(), pf.asTemplateFile().getFileContent()); + System.out.println("Writing file " + pf.getName() + " to: " + packagePath + "/" + packageDirectory.getName() + "/" + pf.getName()); + + if(pf.isJavaFile()){ + writeToFile(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName() + ".java", pf.asTemplateFile().getFileContent()); + }else { + writeToFile(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName(), pf.asTemplateFile().getFileContent()); + } } } @@ -79,7 +87,8 @@ public class PackageStructureBuilder { writer.write(content); } catch (IOException ex) { - System.out.println("ERROR: " + ex.getMessage()); + System.err.println("ERROR: " + ex.getMessage()); + ex.printStackTrace(); } } @@ -87,7 +96,7 @@ public class PackageStructureBuilder { // TREE GEN ///////////////////////// ///////////////////////////////////// - private static void buildDinerosGeneratedFilesStructure(DinerosPackage dinerosPackage, List<PetriNet> nets) { + private static void buildDinerosGeneratedFilesStructure(DinerosPackage dinerosPackage, List<PetriNet> nets, List<NetInfo> petriNetFilePaths) { GradleFile buildGradle = new GradleFile(); buildGradle.setName("build.gradle"); @@ -111,7 +120,7 @@ public class PackageStructureBuilder { for (int i = 0; i < nets.size(); i++) { NodeFile nodeFile = new NodeFile(); nodeFile.setName("Node" + i); - nodeFile.setFileID(UUID.randomUUID().toString()); + nodeFile.setFileID("Node-" + String.valueOf(i)); pd.addFile(nodeFile); } } @@ -147,14 +156,14 @@ public class PackageStructureBuilder { if (pd.getName().equals("callback")) { MapperFile callbackMapper = new MapperFile(); - callbackMapper.setName("CallbackMapper.java"); + callbackMapper.setName("CallbackMapper"); callbackMapper.setFileID(UUID.randomUUID().toString()); pd.addFile(callbackMapper); } if (pd.getName().equals("balloon")) { TokenFile tokenFile = new TokenFile(); - tokenFile.setName("Token.java"); + tokenFile.setName("Token"); tokenFile.setFileID(UUID.randomUUID().toString()); pd.addFile(tokenFile); } @@ -164,6 +173,9 @@ public class PackageStructureBuilder { PnmlFile pnmlFile = new PnmlFile(); pnmlFile.setName("PetriNet-" + i + ".pnml"); pnmlFile.setFileID(UUID.randomUUID().toString()); + pnmlFile.setSourcePath(petriNetFilePaths.get(i).net); + String[] splitSourcePath = petriNetFilePaths.get(i).net.split("/"); + pnmlFile.setSourceName(splitSourcePath[splitSourcePath.length - 1]); pd.addFile(pnmlFile); } } @@ -310,14 +322,15 @@ public class PackageStructureBuilder { if(pf.isTokenFile()){ String tokenClass = dinerosPackage.generateTokenClass(); - try (Writer writer = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(packagePath + "/src/main/java/tudresden/inf/st/pnml/" + - dinerosPackage.getNamespace()), StandardCharsets.UTF_8))) { + /* try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(packagePath + "/" + dinerosPackage.getRootName() + "/src/main/java/tudresden/inf/st/" + + dinerosPackage.getNamespace() + "/Token.java"), StandardCharsets.UTF_8))) { writer.write(tokenClass); } catch (IOException ex) { - System.out.println("ERROR: " + ex.getMessage()); - } + System.err.println("ERROR: " + ex.getMessage()); + ex.printStackTrace(); + }*/ } } } @@ -333,6 +346,7 @@ public class PackageStructureBuilder { pf.setName("PetriNet-" + i + ".pnml"); Path copied = Paths.get(packagePath + "/src/main/resources/nets/" + pf.getName()); Path originalPath = Paths.get(netPaths.get(i).net); + System.out.println("Before Copy PNML:" + originalPath + " --> " + copied); Files.copy(originalPath, copied, StandardCopyOption.REPLACE_EXISTING); System.out.println("Copy PNML:" + originalPath + " --> " + copied); } @@ -360,14 +374,18 @@ public class PackageStructureBuilder { for (int i = 0; i < nets.size(); i++) { for (PackageFile pf : dinerosPackage.allPackageFiles()) { - if (!visitedPackageFileIDs.contains(pf.getFileID())) { - visitedPackageFileIDs.add(pf.getFileID()); + String[] splitNodeFileId = pf.getFileID().split("-"); + if (pf.isNodeFile() && i == Integer.valueOf(splitNodeFileId[1])) { + pf.setName("Node" + splitNodeFileId[1]); + pf.asNodeFile().generate(); + break; + } + } - if (pf.isNodeFile()) { - pf.setName("Node" + i); - pf.asNodeFile().generate(); - } + for (PackageFile pf : dinerosPackage.allPackageFiles()) { + if (!visitedPackageFileIDs.contains(pf.getFileID())) { + visitedPackageFileIDs.add(pf.getFileID()); if (pf.isSubscriberFile()) { for (Transition t : nets.get(i).allTransitions()) { @@ -464,13 +482,22 @@ public class PackageStructureBuilder { if (packageDirectory.getNumFile() > 0) { for (PackageFile pf : packageDirectory.getFileList()) { - if (pf.isStaticFile()) { + if (pf.isStaticFile() && !pf.isTokenFile()) { + + Path copied; + + if(pf.isPnmlFile()){ + copied = Paths.get(packagePath + "/" + packageDirectory.getName() + "/" + pf.asPnmlFile().getSourceName()); + }else { + copied = Paths.get(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName()); + } - Path copied = Paths.get(packagePath + "/" + packageDirectory.getName() + "/" + pf.getName()); Path originalPath; if (pf.getName().contains(".java")) { originalPath = Paths.get(FILE_PATH + "/" + pf.getName().split("\\.")[0]); + } else if (pf.isPnmlFile()) { + originalPath = Paths.get(pf.asPnmlFile().getSourcePath()); } else { originalPath = Paths.get(FILE_PATH + "/" + pf.getName()); }