瀏覽代碼

enhanced demo code of generated java generator

holger.willebrandt@gmail.com 13 年之前
父節點
當前提交
d38412318c

+ 32 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.xtend

@@ -376,14 +376,45 @@ class GeneratorProjectTemplate {
 	def javaGenerator(ProjectData data) '''
 		package «data.generatorClass.packageName»;
 
+		import java.io.File;
+		import java.io.FileOutputStream;
 		import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator;
 		import org.yakindu.sct.model.sexec.ExecutionFlow;
+		import org.yakindu.sct.model.sexec.ExecutionState;
 		import org.yakindu.sct.model.sgen.GeneratorEntry;
 		
 		public class «data.generatorClass.simpleName» extends AbstractWorkspaceGenerator {
+			private static final String LBR = "\n\r";
+
 			@Override
 			public void generate(ExecutionFlow flow, GeneratorEntry entry) {
-				writeToConsole("Output shall go into project "+getTargetProjectPath(entry));
+				StringBuilder builder = new StringBuilder();
+				builder.append("The name of the Statemachine is ");
+				builder.append(flow.getName());
+				builder.append(LBR).append(LBR);
+				builder.append("The Statemachine has the following states:");
+				builder.append(LBR).append(LBR);
+				for (ExecutionState state : flow.getStates()) {
+					builder.append(
+							state.getName().replaceFirst(flow.getName() + "\\.", ""))
+							.append(LBR);
+				}
+				File targetFolder = getTargetFolder(entry);
+				File targetFile = new File(targetFolder.getPath() + File.separator
+						+ flow.getName() + ".txt");
+				write(targetFolder, targetFile, builder.toString());
+				refreshTargetProject(entry);
+			}
+		
+			private void write(File targetFolder, File targetFile, String content) {
+				try {
+					targetFolder.mkdirs();
+					FileOutputStream out = new FileOutputStream(targetFile);
+					out.write(content.getBytes());
+					out.close();
+				} catch (Exception e) {
+					writeToConsole(e);
+				}
 			}
 		}
 	'''

+ 88 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/xtend-gen/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.java

@@ -874,10 +874,16 @@ public class GeneratorProjectTemplate {
     _builder.append(";");
     _builder.newLineIfNotEmpty();
     _builder.newLine();
+    _builder.append("import java.io.File;");
+    _builder.newLine();
+    _builder.append("import java.io.FileOutputStream;");
+    _builder.newLine();
     _builder.append("import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator;");
     _builder.newLine();
     _builder.append("import org.yakindu.sct.model.sexec.ExecutionFlow;");
     _builder.newLine();
+    _builder.append("import org.yakindu.sct.model.sexec.ExecutionState;");
+    _builder.newLine();
     _builder.append("import org.yakindu.sct.model.sgen.GeneratorEntry;");
     _builder.newLine();
     _builder.newLine();
@@ -888,13 +894,93 @@ public class GeneratorProjectTemplate {
     _builder.append(" extends AbstractWorkspaceGenerator {");
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
+    _builder.append("private static final String LBR = \"\\n\\r\";");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
     _builder.append("@Override");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("public void generate(ExecutionFlow flow, GeneratorEntry entry) {");
     _builder.newLine();
     _builder.append("\t\t");
-    _builder.append("writeToConsole(\"Output shall go into project \"+getTargetProjectPath(entry));");
+    _builder.append("StringBuilder builder = new StringBuilder();");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("builder.append(\"The name of the Statemachine is \");");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("builder.append(flow.getName());");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("builder.append(LBR).append(LBR);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("builder.append(\"The Statemachine has the following states:\");");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("builder.append(LBR).append(LBR);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("for (ExecutionState state : flow.getStates()) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("builder.append(");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("state.getName().replaceFirst(flow.getName() + \"\\\\.\", \"\"))");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append(".append(LBR);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("File targetFolder = getTargetFolder(entry);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("File targetFile = new File(targetFolder.getPath() + File.separator");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("+ flow.getName() + \".txt\");");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("write(targetFolder, targetFile, builder.toString());");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("refreshTargetProject(entry);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("private void write(File targetFolder, File targetFile, String content) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("try {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("targetFolder.mkdirs();");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("FileOutputStream out = new FileOutputStream(targetFile);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("out.write(content.getBytes());");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("out.close();");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("} catch (Exception e) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("writeToConsole(e);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("}");
@@ -1190,4 +1276,4 @@ public class GeneratorProjectTemplate {
     }
     return _builder;
   }
-}
+}