Browse Source

refactoring of GenerateBaseUtil

markus.muehlbrandt@itemis.de 14 years ago
parent
commit
c06081e1ed

+ 8 - 40
plugins/org.yakindu.sct.generator.base/src/org/yakindu/sct/generator/base/util/AbstractXpandCodeGeneratorSubscriber.java

@@ -2,27 +2,14 @@ package org.yakindu.sct.generator.base.util;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Collections;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.xpand2.XpandExecutionContextImpl;
-import org.eclipse.xpand2.XpandFacade;
-import org.eclipse.xpand2.output.Outlet;
-import org.eclipse.xpand2.output.OutputImpl;
-import org.eclipse.xtend.expression.Variable;
-import org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel;
 import org.yakindu.sct.builder.subscriber.IBuilderSubscriber;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
-import org.yakindu.sct.model.sexec.SexecPackage;
-import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Statechart;
-import org.yakindu.sct.model.stext.stext.StextPackage;
 
 /**
  * 
@@ -39,7 +26,10 @@ public abstract class AbstractXpandCodeGeneratorSubscriber implements
 	public void doBuild(IResource resource) {
 		try {
 			IProject project = resource.getProject();
-			Statechart statechart = GeneratorBaseUtil.loadStatechart(resource);
+			Statechart statechart;
+
+			statechart = GeneratorBaseUtil.loadStatechart(resource);
+
 			ExecutionFlow executionFlow = GeneratorBaseUtil
 					.createExecutionFlowModel(statechart);
 			String absoluteTargetFolder = ResourcesPlugin.getWorkspace()
@@ -47,34 +37,12 @@ public abstract class AbstractXpandCodeGeneratorSubscriber implements
 					+ File.separator
 					+ project.getFullPath().toOSString()
 					+ File.separator + getOutletPath(resource);
-
-			OutputImpl output = new OutputImpl();
-			Outlet outlet = new Outlet(absoluteTargetFolder);
-			outlet.setOverwrite(true);
-			output.addOutlet(outlet);
-
-			XpandExecutionContextImpl execCtx = new XpandExecutionContextImpl(
-					output, null, Collections.<String, Variable> emptyMap(),
-					null, null);
-			EmfRegistryMetaModel metamodel = new EmfRegistryMetaModel() {
-				@Override
-				protected EPackage[] allPackages() {
-					return new EPackage[] { SGraphPackage.eINSTANCE,
-							StextPackage.eINSTANCE, EcorePackage.eINSTANCE,
-							SexecPackage.eINSTANCE };
-				}
-			};
-			execCtx.registerMetaModel(metamodel);
-			// generate
-			XpandFacade facade = XpandFacade.create(execCtx);
-			facade.evaluate(getTemplatePath(), executionFlow);
-			// refresh the project to get external updates:
-			project.refreshLocal(IResource.DEPTH_INFINITE,
-					new NullProgressMonitor());
-		} catch (IOException ex) {
-			ex.printStackTrace();
+			GeneratorBaseUtil.generate(executionFlow, getTemplatePath(),
+					project, absoluteTargetFolder);
 		} catch (CoreException e) {
 			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
 		}
 
 	}