Browse Source

#473 : custom generators (add SCT file extension registration, add
core.features library, updated initial java code to fit latest API)

Johannes Dicks 9 years ago
parent
commit
aec31bf1dd

+ 10 - 20
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.xtend

@@ -348,6 +348,9 @@ class GeneratorProjectTemplate {
 		            	library_id="«data.projectName».FeatureTypeLibrary">
 		            </FeatureLibrary>
 		            «ENDIF»
+		            <FeatureLibrary
+		            	library_id="org.yakindu.generator.core.features">
+		            </FeatureLibrary>
 		      </SCTGenerator>
 		   </extension>
 		«IF data.typeLibrary»
@@ -359,7 +362,11 @@ class GeneratorProjectTemplate {
 		      	uri="platform:/plugin/«data.projectName»/library/FeatureTypeLibrary.xmi">
 		      </FeatureLibrary>
 		   </extension>
-		«ENDIF»   
+		«ENDIF»
+		 <extension point="org.yakindu.sct.generator.core.extensions">
+			 	<ExtensionGeneratorMapping fileExtension="sct" generatorId="«data.generatorId»">
+			 	</ExtensionGeneratorMapping>
+		 	</extension>
 		</plugin>
 	'''
 	
@@ -383,8 +390,6 @@ 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;
@@ -395,7 +400,7 @@ class GeneratorProjectTemplate {
 		public class «data.generatorClass.simpleName» extends AbstractWorkspaceGenerator implements IExecutionFlowGenerator{
 			private static final String LBR = "\n\r";
 
-			public void generate(ExecutionFlow flow, GeneratorEntry entry, IFileSystemAccess access) {
+			public void generate(ExecutionFlow flow, GeneratorEntry entry, IFileSystemAccess fsa) {
 				StringBuilder builder = new StringBuilder();
 				builder.append("The name of the state machine is ");
 				builder.append(flow.getName());
@@ -407,22 +412,7 @@ class GeneratorProjectTemplate {
 							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);
-				}
+				fsa.generateFile(flow.getName() + ".txt", builder.toString());
 			}
 		}
 	'''