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);