finished composite metric generation
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/CompositeMetricInfo.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/CompositeMetricInfo.java
index 662d6b8..d76fade 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/CompositeMetricInfo.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/CompositeMetricInfo.java
@@ -30,10 +30,11 @@
* @param firstMetric
* @param secondMetric
* @param operation
+ * @param importPackage
*/
public CompositeMetricInfo(String name, String id, String description, String metamodel, String context, String project,
- Metric firstMetric, Metric secondMetric, IOperation operation, String jar) {
- super(name, id, description, metamodel, context, project, jar);
+ Metric firstMetric, Metric secondMetric, IOperation operation, String jar, String importPackage) {
+ super(name, id, description, metamodel, context, project, jar, importPackage);
this.firstMetric = firstMetric;
this.secondMetric = secondMetric;
this.operation = operation;
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/MetricInfo.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/MetricInfo.java
index 69e2955..5ff2705 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/MetricInfo.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/core/MetricInfo.java
@@ -7,7 +7,7 @@
*/
public class MetricInfo {
- private final static String PACKAGE_NAME = "de.unimarburg.swt.emf.metric";
+ private final static String PACKAGE_NAME = "org.eclipse.emf.refactor.metrics";
private String name;
private String description;
private String project;
@@ -16,6 +16,7 @@
private String id;
private String jar;
+ private String importPackage;
/**
@@ -29,10 +30,11 @@
* @param context
* @param valueType
* @param project
+ * @param importPackage
*/
public MetricInfo(String name, String id, String description,
String metamodel, String context, String project,
- String jar) {
+ String jar, String importPackage) {
this.name = name;
this.description = description;
this.project = project;
@@ -40,6 +42,7 @@
this.metamodel = metamodel;
this.id = id;
this.jar = jar;
+ this.importPackage = importPackage;
}
/**
@@ -136,6 +139,14 @@
public void setJar(String jar) {
this.jar = jar;
}
+
+ public void setImportPackage(String importPackage) {
+ this.importPackage = importPackage;
+ }
+
+ public String getImportPackage() {
+ return this.importPackage;
+ }
@Override
public String toString() {
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/interfaces/INewMetricWizard.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/interfaces/INewMetricWizard.java
index 8de1fd3..343d377 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/interfaces/INewMetricWizard.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/interfaces/INewMetricWizard.java
@@ -27,4 +27,8 @@
public WizardPage getSecondPage();
+ public void setImportPackage(String importPackage);
+
+ public void updateSecondPage();
+
}
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.java
index 79c0d07..588c93c 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.java
@@ -95,10 +95,17 @@
}
private List<IClasspathEntry> setClassPathEntries() {
- Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
- String version = (String) bundle.getHeaders().get(BUNDLEVERSION);
List<IClasspathEntry> cpe = new ArrayList<IClasspathEntry>();
- cpe.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH+ Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));
+ Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
+ // add org.eclipse.emf.refactor.metrics.generator to class path
+ String version = (String) bundle.getHeaders().get(BUNDLEVERSION);
+ cpe.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH +
+ Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));
+ // add org.eclipse.emf.refactor.metrics to class path
+ bundle = Platform.getBundle(org.eclipse.emf.refactor.metrics.Activator.PLUGIN_ID);
+ version = (String) bundle.getHeaders().get(BUNDLEVERSION);
+ cpe.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH +
+ org.eclipse.emf.refactor.metrics.Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));
return cpe;
}
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/CompositeDataWizardPage.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/CompositeDataWizardPage.java
index bd262ec..5a0c711 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/CompositeDataWizardPage.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/CompositeDataWizardPage.java
@@ -153,7 +153,7 @@
col.setWidth(200);
}
- protected void fillTables(){
+ protected void fillTables() {
String metamodel = ((NewMetricWizardComposite)getWizard()).getMetamodel();
String context = ((NewMetricWizardComposite)getWizard()).getContext() ;
System.out.println("filling tables for metamodel:"+metamodel+" context:"+context);
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/MetricBasicDataWizardPage.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/MetricBasicDataWizardPage.java
index bc8a64a..f7db702 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/MetricBasicDataWizardPage.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/MetricBasicDataWizardPage.java
@@ -1,5 +1,7 @@
package org.eclipse.emf.refactor.metrics.generator.ui;
+import java.io.File;
+import java.net.URISyntaxException;
import java.util.Arrays;
import org.eclipse.core.resources.IProject;
@@ -28,6 +30,7 @@
private Text nameTextField, idTextField, descriptionTextField;
private Combo projectCombo, metamodelCombo, contextCombo;
private String jar = "";
+ private String importPackage;
@Override
public void createControl(Composite parent) {
@@ -44,10 +47,12 @@
@Override
public boolean canFlipToNextPage() {
if (((INewMetricWizard) getWizard()).getPageNumbers() > 1) {
- return this.isPageComplete();
- } else {
- return false;
- }
+ if (this.isPageComplete()) {
+ ((INewMetricWizard) getWizard()).updateSecondPage();
+ return true;
+ }
+ }
+ return false;
}
public WizardPage getNextPage() {
@@ -68,18 +73,36 @@
if (nsURI != null && ! nsURI.isEmpty()) {
EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
if (ePackage != null) {
- jar = ePackage.getClass().getPackage().getName();
- contextCombo.removeAll();
- Object[] eObjectNames = new Object[ePackage.eContents().size()];
- for (int i = 0; i < eObjectNames.length; i++) {
- EObject eObject = ePackage.eContents().get(i);
- if (eObject instanceof ENamedElement) {
- eObjectNames[i] = ((ENamedElement) ePackage.eContents().get(i)).getName();
+ importPackage = ePackage.getClass().getPackage().getName();
+ if (importPackage.endsWith(".impl")) {
+ int length = importPackage.length();
+ importPackage = importPackage.substring(0, length-5);
+ }
+ System.out.println("importPackage: " + importPackage);
+ File jarFile;
+ try {
+ jarFile = new File
+ (ePackage.getClass().getProtectionDomain()
+ .getCodeSource().getLocation().toURI());
+ String jarName = jarFile.getName();
+ int index = jarName.indexOf("_");
+ jar = jarName.substring(0, index);
+ System.out.println("Jar5: " + jar);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ } finally {
+ contextCombo.removeAll();
+ Object[] eObjectNames = new Object[ePackage.eContents().size()];
+ for (int i = 0; i < eObjectNames.length; i++) {
+ EObject eObject = ePackage.eContents().get(i);
+ if (eObject instanceof ENamedElement) {
+ eObjectNames[i] = ((ENamedElement) ePackage.eContents().get(i)).getName();
+ }
+ }
+ Arrays.sort(eObjectNames);
+ for(Object object : eObjectNames){
+ contextCombo.add((String)object);
}
- }
- Arrays.sort(eObjectNames);
- for(Object object : eObjectNames){
- contextCombo.add((String)object);
}
}
} else {
@@ -238,6 +261,7 @@
((INewMetricWizard) getWizard()).setMetamodel(this.metamodelCombo.getText());
((INewMetricWizard) getWizard()).setContext(this.contextCombo.getText());
((INewMetricWizard) getWizard()).setJar(jar);
+ ((INewMetricWizard) getWizard()).setImportPackage(importPackage);
}
}
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.java
index 81ae69f..c17f518 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.java
@@ -30,6 +30,7 @@
private String name, id, description, metamodel, context, jar;
private LinkedList<IProject> projects;
private IProject targetProject;
+ private String importPackage;
public NewMetricWizardComposite() { }
@@ -98,7 +99,8 @@
String operationName = compositePage.getOperationName();
IOperation operation = MetricManager.getOperation(operationName);
CompositeMetricInfo info = new CompositeMetricInfo(this.name, this.id, this.description,
- this.metamodel, this.context, proj, first, second, operation, getJar());
+ this.metamodel, this.context, proj, first, second, operation,
+ getJar(), importPackage);
return info;
}
@@ -171,4 +173,14 @@
return this.compositePage;
}
+ @Override
+ public void setImportPackage(String importPackage) {
+ this.importPackage = importPackage;
+ }
+
+ @Override
+ public void updateSecondPage() {
+ compositePage.fillTables();
+ }
+
}
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.java
index b86bf79..ee87ad6 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.java
@@ -25,6 +25,7 @@
private String name, id, description, metamodel, context, jar;
private LinkedList<IProject> projects;
private IProject targetProject;
+ private String importPackage;
public NewMetricWizardJava() { }
@@ -86,7 +87,7 @@
private MetricInfo getMetricInfo(){
String proj = this.targetProject.getLocation().toString();
MetricInfo info = new MetricInfo(this.name, this.id, this.description,
- this.metamodel, this.context, proj, getJar());
+ this.metamodel, this.context, proj, getJar(), importPackage);
return info;
}
@@ -154,5 +155,13 @@
public WizardPage getSecondPage() {
return null;
}
+
+ @Override
+ public void setImportPackage(String importPackage) {
+ this.importPackage = importPackage;
+ }
+
+ @Override
+ public void updateSecondPage() { }
}
diff --git a/org.eclipse.emf.refactor.metrics.generator/templates/CalculateClassTemplate.javajet b/org.eclipse.emf.refactor.metrics.generator/templates/CalculateClassTemplate.javajet
index 9bcf422..e46439f 100644
--- a/org.eclipse.emf.refactor.metrics.generator/templates/CalculateClassTemplate.javajet
+++ b/org.eclipse.emf.refactor.metrics.generator/templates/CalculateClassTemplate.javajet
@@ -1,16 +1,15 @@
-<%@ jet package="de.unimarburg.swt.emf.metrics" class="HenshinFinderClass"
-imports="de.unimarburg.swt.emf.metrics.model.generator.MetricInfo"%>
+<%@ jet package="org.eclipse.emf.refactor.metrics" class="HenshinFinderClass"
+imports="org.eclipse.emf.refactor.metrics.generator.core.MetricInfo"%>
<%MetricInfo info = (MetricInfo) argument; %>
package <%=info.getPackage()%>;
-
-
import java.util.List;
import org.eclipse.emf.ecore.EObject;
-import de.unimarburg.swt.emf.metrics.interfaces.ICalculateClass;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import <%=info.getImportPackage()%>.*;
-public final class <%=info.getClassName()%> implements ICalculateClass {
+public final class <%=info.getClassName()%> implements IMetricCalculator {
private List<EObject> context;
diff --git a/org.eclipse.emf.refactor.metrics.generator/templates/CompositeCalculateClassTemplate.javajet b/org.eclipse.emf.refactor.metrics.generator/templates/CompositeCalculateClassTemplate.javajet
index e1e2fd7..68b1b36 100644
--- a/org.eclipse.emf.refactor.metrics.generator/templates/CompositeCalculateClassTemplate.javajet
+++ b/org.eclipse.emf.refactor.metrics.generator/templates/CompositeCalculateClassTemplate.javajet
@@ -1,18 +1,16 @@
-<%@ jet package="de.unimarburg.swt.emf.metrics" class="CompositeCalculateClassTemplate"
-imports="de.unimarburg.swt.emf.metrics.model.generator.CompositeMetricInfo"%>
+<%@ jet package="org.eclipse.emf.refactor.metrics" class="CompositeCalculateClassTemplate"
+imports="org.eclipse.emf.refactor.metrics.generator.core.CompositeMetricInfo"%>
<%CompositeMetricInfo info = (CompositeMetricInfo) argument; %>
package <%=info.getPackage()%>;
-
import java.util.List;
import org.eclipse.emf.ecore.EObject;
-import de.unimarburg.swt.emf.metrics.interfaces.ICalculateClass;
-import de.unimarburg.swt.emf.metrics.model.Metric;
-import de.unimarburg.swt.emf.metrics.operations.IOperation;
-import de.unimarburg.swt.emf.metrics.operations.Operations;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
-
-public final class <%=info.getClassName()%> implements ICalculateClass{
+public final class <%=info.getClassName()%> implements IMetricCalculator {
private List<EObject> context;
private String metricID1 = "<%=info.getFirstMetric().getId()%>";
@@ -30,8 +28,8 @@
Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
- ICalculateClass calc1 = metric1.getCalculateClass();
- ICalculateClass calc2 = metric2.getCalculateClass();
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
calc1.setContext(this.context);
calc2.setContext(this.context);