class HenshinGenerationManager added
diff --git a/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
index 772d7a7..5e6cb18 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
@@ -7,10 +7,12 @@
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources;bundle-version="3.8.0",
+ org.eclipse.jdt.core;bundle-version="3.8.1",
org.eclipse.emf.ecore;bundle-version="2.8.1",
org.eclipse.emf.refactor.metrics;bundle-version="0.7.0",
org.eclipse.emf.refactor.metrics.generator;bundle-version="0.7.0",
- org.eclipse.emf.henshin.interpreter;bundle-version="0.9.2"
+ org.eclipse.emf.henshin.interpreter;bundle-version="0.9.2",
+ org.eclipse.emf.codegen;bundle-version="2.8.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.emf.refactor.metrics.henshin.managers
diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinGenerationManager.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinGenerationManager.java
new file mode 100644
index 0000000..f2a673e
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinGenerationManager.java
@@ -0,0 +1,75 @@
+package org.eclipse.emf.refactor.metrics.henshin;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.codegen.jet.JETException;
+import org.eclipse.emf.refactor.metrics.generator.managers.DependenciesManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.XMLPluginFileManager;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.osgi.framework.Bundle;
+
+public class HenshinGenerationManager extends GenerationManager {
+
+ private static final String HENSHIN_TEMPLATE_CLASS_NAME = "HenshinCalculateClassTemplate";
+
+ private HenshinGenerationManager() {
+ templateDirectory = setTemplateDirectory();
+ classpathEntries = setClassPathEntries();
+ System.out.println("HenshinGenerationManager initialized!");
+ }
+
+ public static HenshinGenerationManager getInstance() {
+ if (instance == null) {
+ instance = new HenshinGenerationManager();
+ }
+ return (HenshinGenerationManager) instance;
+ }
+
+ protected List<IClasspathEntry> setClassPathEntries() {
+ List<IClasspathEntry> cpe = super.setClassPathEntries();
+ Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
+ // add org.eclipse.emf.refactor.metrics.henshin to class path
+ String version = (String) bundle.getHeaders().get(BUNDLEVERSION);
+ cpe.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH +
+ Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));
+ return cpe;
+ }
+
+ public static void createNewMetric(IProgressMonitor monitor,
+ HenshinMetricInfo metricInfo, IProject targetProject) {
+ System.out.println(metricInfo);
+ DependenciesManager.updateDependencies(metricInfo);
+ createCalculateClass(monitor, metricInfo);
+ XMLPluginFileManager.createMetricEntry(metricInfo.getProjectPath(),
+ metricInfo.getName(), metricInfo.getId(),
+ metricInfo.getDescription(), metricInfo.getMetamodel(),
+ metricInfo.getContext(), metricInfo.getPackage()+"."+metricInfo.getClassName());
+ try {
+ targetProject.refreshLocal(IProject.DEPTH_INFINITE, monitor);
+ targetProject.refreshLocal(IProject.DEPTH_INFINITE, monitor);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void createCalculateClass(IProgressMonitor monitor, HenshinMetricInfo metricInfo) {
+ String generatedCode = "";
+ String templateName = HENSHIN_TEMPLATE_CLASS_NAME;
+ try {
+ generatedCode = generateCode(monitor, templateName, metricInfo);
+ saveCode(monitor, generatedCode, metricInfo);
+ } catch (JETException e) {
+ e.printStackTrace();
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+}