packaging improved
diff --git a/org.eclipse.emf.refactor.metrics.ocl/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.metrics.ocl/META-INF/MANIFEST.MF
index 4e7f0e1..fd4e570 100644
--- a/org.eclipse.emf.refactor.metrics.ocl/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.metrics.ocl/META-INF/MANIFEST.MF
@@ -6,9 +6,13 @@
Bundle-Activator: org.eclipse.emf.refactor.metrics.ocl.Activator
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.ocl;bundle-version="3.2.1",
org.eclipse.ocl.ecore;bundle-version="3.2.0",
- org.eclipse.emf.refactor.metrics.generator;bundle-version="0.7.0"
+ org.eclipse.emf.refactor.metrics;bundle-version="0.7.0",
+ org.eclipse.emf.refactor.metrics.generator;bundle-version="0.7.0",
+ org.eclipse.emf.codegen;bundle-version="2.8.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLMetricInfo.java b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/core/OCLMetricInfo.java
similarity index 90%
rename from org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLMetricInfo.java
rename to org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/core/OCLMetricInfo.java
index 5c9fe7c..38a0ab0 100644
--- a/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLMetricInfo.java
+++ b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/core/OCLMetricInfo.java
@@ -1,4 +1,4 @@
-package org.eclipse.emf.refactor.metrics.ocl;
+package org.eclipse.emf.refactor.metrics.ocl.core;
import org.eclipse.emf.refactor.metrics.generator.core.MetricInfo;
diff --git a/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.java b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.java
new file mode 100644
index 0000000..7312e44
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.java
@@ -0,0 +1,113 @@
+package org.eclipse.emf.refactor.metrics.ocl.managers;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.emf.codegen.jet.JETEmitter;
+import org.eclipse.emf.codegen.jet.JETException;
+import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.XMLPluginFileManager;
+import org.eclipse.emf.refactor.metrics.ocl.Activator;
+import org.eclipse.emf.refactor.metrics.ocl.core.OCLMetricInfo;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.osgi.framework.Bundle;
+
+public class OCLGenerationManager extends GenerationManager {
+
+ private static final String OCL_TEMPLATE_CLASS_NAME = "OCLCalculateClassTemplate";
+ private static OCLGenerationManager instance;
+
+ private OCLGenerationManager() {
+ templateDirectory = setTemplateDirectory();
+ classpathEntries = setClassPathEntries();
+ System.out.println("OCLGenerationManager initialized!");
+ }
+
+ public static OCLGenerationManager getInstance() {
+ if (instance == null) {
+ instance = new OCLGenerationManager();
+ }
+ return instance;
+ }
+
+ protected List<IClasspathEntry> setClassPathEntries() {
+ List<IClasspathEntry> cpe = super.setClassPathEntries();
+ Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
+ // add org.eclipse.emf.refactor.metrics.ocl 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,
+ OCLMetricInfo metricInfo, IProject targetProject) {
+ System.out.println(metricInfo);
+ HenshinDependenciesManager.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 {
+// MessageDialog.openError(null, null, "vor generateCode()");
+ generatedCode = generateCode(monitor, templateName, metricInfo);
+// MessageDialog.openError(null, null, "nach generateCode()");
+ saveCode(monitor, generatedCode, metricInfo);
+// MessageDialog.openError(null, null, "nach saveCode()");
+ } catch (JETException e) {
+// MessageDialog.openError(null, null, e.getMessage());
+ e.printStackTrace();
+ } catch (CoreException e) {
+// MessageDialog.openError(null, null, e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ protected String setTemplateDirectory() {
+ String directory = "";
+ final Bundle bundle = Activator.getDefault().getBundle();
+ try {
+ directory = FileLocator.toFileURL(bundle.getEntry(TEMPLATE_DIR)).getFile();
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ return directory;
+ }
+
+ protected static String generateCode(IProgressMonitor monitor, String template, HenshinMetricInfo metricInfo) {
+ String templatePath = templateDirectory + template + TEMPLATE_FILE_EXTENSION;
+ ClassLoader classLoader = metricInfo.getClass().getClassLoader();
+ JETEmitter jetEmitter = new JETEmitter(templatePath, classLoader);
+ jetEmitter.getClasspathEntries().addAll(classpathEntries);
+ String result = "";
+ IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1);
+ try {
+ result = jetEmitter.generate(subMonitor, new Object[] {metricInfo});
+ } catch (JETException e) {
+ e.printStackTrace();
+ }
+ System.out.println(result);
+ return result;
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLManager.java b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLManager.java
similarity index 95%
rename from org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLManager.java
rename to org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLManager.java
index 8dd2d9f..b68baac 100644
--- a/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/OCLManager.java
+++ b/org.eclipse.emf.refactor.metrics.ocl/src/org/eclipse/emf/refactor/metrics/ocl/managers/OCLManager.java
@@ -1,4 +1,4 @@
-package org.eclipse.emf.refactor.metrics.ocl;
+package org.eclipse.emf.refactor.metrics.ocl.managers;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;