generation manager structure improved
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/Activator.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/Activator.class
index 703ea38..3b2e601 100644
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/Activator.class
+++ b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/Activator.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.class
deleted file mode 100644
index 95476da..0000000
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite$1.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite$1.class
index fdb6445..7e7a689 100644
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite$1.class
+++ b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.class
index 86f387e..be60829 100644
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.class
+++ b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardComposite.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava$1.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava$1.class
index a01dfea..e390a01 100644
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava$1.class
+++ b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.class b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.class
index 189a709..176e022 100644
--- a/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.class
+++ b/org.eclipse.emf.refactor.metrics.generator/bin/org/eclipse/emf/refactor/metrics/generator/ui/NewMetricWizardJava.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/Activator.java b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/Activator.java
index 4afbfdb..d8fa7dd 100644
--- a/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/Activator.java
+++ b/org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/Activator.java
@@ -1,6 +1,6 @@
 package org.eclipse.emf.refactor.metrics.generator;
 
-import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.MetricsGenerationManager;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
@@ -28,7 +28,7 @@
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
-		GenerationManager.getInstance();
+		MetricsGenerationManager.getInstance();
 	}
 
 	/*
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/MetricsGenerationManager.java
similarity index 96%
rename from org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/GenerationManager.java
rename to org.eclipse.emf.refactor.metrics.generator/src/org/eclipse/emf/refactor/metrics/generator/managers/MetricsGenerationManager.java
index 6759674..fc91a9e 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/MetricsGenerationManager.java
@@ -26,9 +26,9 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.osgi.framework.Bundle;
 
-public class GenerationManager {
+public class MetricsGenerationManager {
 	
-	private static GenerationManager instance;
+	private static MetricsGenerationManager instance;
 	private static final String COMPOSITE_TEMPLATE_CLASS_NAME = "CompositeCalculateClassTemplate";
 	private static final String SKELETON_TEMPLATE_CLASS_NAME = "CalculateClassTemplate";
 	protected static final  String TEMPLATE_DIR = "/templates";
@@ -40,15 +40,15 @@
 	protected static String templateDirectory;
 	protected static List<IClasspathEntry> classpathEntries;
 	
-	protected GenerationManager() {
+	protected MetricsGenerationManager() {
 		templateDirectory = setTemplateDirectory();
 		classpathEntries = setClassPathEntries();
 		System.out.println("GenerationManager initialized!");
 	}
 	
-	public static GenerationManager getInstance() {
+	public static MetricsGenerationManager getInstance() {
 		if (instance == null) {
-			instance = new GenerationManager();
+			instance = new MetricsGenerationManager();
 		}
 		return instance;
 	}
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 83d84c6..17e909a 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
@@ -11,7 +11,7 @@
 import org.eclipse.emf.refactor.metrics.core.Metric;
 import org.eclipse.emf.refactor.metrics.generator.core.CompositeMetricInfo;
 import org.eclipse.emf.refactor.metrics.generator.interfaces.INewMetricWizard;
-import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.MetricsGenerationManager;
 import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
 import org.eclipse.emf.refactor.metrics.managers.MetricManager;
 import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -23,6 +23,7 @@
 
 public class NewMetricWizardComposite extends Wizard implements INewWizard, INewMetricWizard {
 	
+	private static final String ORG_ECLIPSE_PDE_PLUGIN_NATURE = "org.eclipse.pde.PluginNature";
 	private final String WINDOW_TITLE = "New Metric";
 	private MetricBasicDataWizardPage basicDataPage;
 	private CompositeDataWizardPage compositePage;
@@ -66,8 +67,8 @@
 		try{
 			getContainer().run(true, true, new IRunnableWithProgress(){
 				public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException{
-					GenerationManager.getInstance();
-					GenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
+					MetricsGenerationManager.getInstance();
+					MetricsGenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
 				}
 			});
 		}
@@ -89,7 +90,7 @@
 			if (project.isOpen()) {
 				IProjectNature nature = null;
 				try {
-					nature = project.getNature("org.eclipse.pde.PluginNature");
+					nature = project.getNature(ORG_ECLIPSE_PDE_PLUGIN_NATURE);
 				} catch (CoreException e) {
 					e.printStackTrace();
 				}
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 97cdb8d..d518aeb 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
@@ -10,7 +10,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.refactor.metrics.generator.core.MetricInfo;
 import org.eclipse.emf.refactor.metrics.generator.interfaces.INewMetricWizard;
-import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.metrics.generator.managers.MetricsGenerationManager;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
@@ -20,6 +20,7 @@
 
 public class NewMetricWizardJava extends Wizard implements INewWizard, INewMetricWizard {
 	
+	private static final String ORG_ECLIPSE_PDE_PLUGIN_NATURE = "org.eclipse.pde.PluginNature";
 	private final String WINDOW_TITLE = "New Metric";
 	private MetricBasicDataWizardPage basicDataPage;
 	private String name, id, description, metamodel, context, jar;
@@ -60,8 +61,8 @@
 		try{
 			getContainer().run(true, true, new IRunnableWithProgress(){
 				public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException{
-					GenerationManager.getInstance();
-					GenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
+					MetricsGenerationManager.getInstance();
+					MetricsGenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
 				}
 			});
 		}
@@ -83,7 +84,7 @@
 			if (project.isOpen()) {
 				IProjectNature nature = null;
 				try {
-					nature = project.getNature("org.eclipse.pde.PluginNature");
+					nature = project.getNature(ORG_ECLIPSE_PDE_PLUGIN_NATURE);
 				} catch (CoreException e) {
 					e.printStackTrace();
 				}
diff --git a/org.eclipse.emf.refactor.metrics.xtext/bin/.gitignore b/org.eclipse.emf.refactor.metrics.henshin/bin/.gitignore
similarity index 100%
rename from org.eclipse.emf.refactor.metrics.xtext/bin/.gitignore
rename to org.eclipse.emf.refactor.metrics.henshin/bin/.gitignore
diff --git a/org.eclipse.emf.refactor.metrics.henshin/bin/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.class b/org.eclipse.emf.refactor.metrics.henshin/bin/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.class
index 39df964..a3105f8 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/bin/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.class
+++ b/org.eclipse.emf.refactor.metrics.henshin/bin/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
index 0ed1753..2284900 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
@@ -1,18 +1,25 @@
 package org.eclipse.emf.refactor.metrics.henshin.managers;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
 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.codegen.util.CodeGenUtil;
+import org.eclipse.emf.refactor.metrics.generator.core.MetricInfo;
 import org.eclipse.emf.refactor.metrics.generator.managers.XMLPluginFileManager;
 import org.eclipse.emf.refactor.metrics.henshin.Activator;
 import org.eclipse.emf.refactor.metrics.henshin.core.HenshinMetricInfo;
@@ -20,10 +27,18 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.osgi.framework.Bundle;
 
-public class HenshinGenerationManager extends GenerationManager {
+public class HenshinGenerationManager {
 	
 	private static final String HENSHIN_TEMPLATE_CLASS_NAME = "HenshinCalculateClassTemplate";
 	private static HenshinGenerationManager instance;
+	private static final  String TEMPLATE_DIR = "/templates";
+	private static final String SOURCE_DIR = "/src/";
+	private static final  String TEMPLATE_FILE_EXTENSION = ".javajet";
+	private static final String JAVA_FILE_EXTENSION = ".java";
+	private static final String PLUGINSPATH = Platform.getInstallLocation().getURL().getPath() + "plugins/";
+	private static final String BUNDLEVERSION = "Bundle-Version";
+	protected static String templateDirectory;
+	protected static List<IClasspathEntry> classpathEntries;
 	
 	private HenshinGenerationManager() {
 		templateDirectory = setTemplateDirectory();
@@ -39,12 +54,17 @@
 	}
 	
 	protected List<IClasspathEntry> setClassPathEntries() {
-		List<IClasspathEntry> cpe = super.setClassPathEntries();
+		List<IClasspathEntry> cpe = new ArrayList<IClasspathEntry>();
 		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));
+	    // 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;
 	}
 	
@@ -109,5 +129,29 @@
 		System.out.println(result);
 		return result;
 	}
+	
+	protected static void saveCode(IProgressMonitor monitor, String content, MetricInfo metricInfo) throws CoreException, JETException {
+		IContainer container = findOrCreatePackage(monitor, metricInfo);
+		if (container == null) {
+			throw new JETException("Could not find or create container for package " + metricInfo.getPackage() + " in " + metricInfo.getProjectName());
+		}
+		IFile file = container.getFile(new Path(metricInfo.getClassName() + JAVA_FILE_EXTENSION));
+		System.out.println("saving code into: "+file.getLocation());
+		InputStream inputStream = new ByteArrayInputStream(content.getBytes());
+		if (!file.exists()) {
+			file.create(inputStream, false, monitor);
+		} else {
+			container.refreshLocal(1, monitor);
+			file.setContents(inputStream, true, false, monitor);
+		}
+	}
+	
+	private static IContainer findOrCreatePackage(IProgressMonitor progressMonitor, MetricInfo metricInfo) throws CoreException {
+		IPath outputPath = new Path(metricInfo.getProjectName() + SOURCE_DIR + metricInfo.getPackage().replace('.', '/'));
+		IProgressMonitor subMonitor = new SubProgressMonitor(progressMonitor, 1);
+		IPath localLocation = null; 
+		IContainer container = CodeGenUtil.EclipseUtil.findOrCreateContainer(outputPath, true, localLocation, subMonitor);
+		return container;
+	}
 
 }
diff --git a/org.eclipse.emf.refactor.metrics.ocl/bin/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.class b/org.eclipse.emf.refactor.metrics.ocl/bin/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.class
index e3a124d..c2321b3 100644
--- a/org.eclipse.emf.refactor.metrics.ocl/bin/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.class
+++ b/org.eclipse.emf.refactor.metrics.ocl/bin/org/eclipse/emf/refactor/metrics/ocl/managers/OCLGenerationManager.class
Binary files differ
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
index a2ff5cb..9ceda6f 100644
--- 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
@@ -1,18 +1,25 @@
 package org.eclipse.emf.refactor.metrics.ocl.managers;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
 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.codegen.util.CodeGenUtil;
+import org.eclipse.emf.refactor.metrics.generator.core.MetricInfo;
 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;
@@ -20,10 +27,18 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.osgi.framework.Bundle;
 
-public class OCLGenerationManager extends GenerationManager {
+public class OCLGenerationManager {
 	
 	private static final String OCL_TEMPLATE_CLASS_NAME = "OCLCalculateClassTemplate";
 	private static OCLGenerationManager instance;
+	private static final  String TEMPLATE_DIR = "/templates";
+	private static final String SOURCE_DIR = "/src/";
+	private static final  String TEMPLATE_FILE_EXTENSION = ".javajet";
+	private static final String JAVA_FILE_EXTENSION = ".java";
+	private static final String PLUGINSPATH = Platform.getInstallLocation().getURL().getPath() + "plugins/";
+	private static final String BUNDLEVERSION = "Bundle-Version";
+	private static String templateDirectory;
+	private static List<IClasspathEntry> classpathEntries;
 	
 	private OCLGenerationManager() {
 		templateDirectory = setTemplateDirectory();
@@ -39,13 +54,18 @@
 	}
 	
 	protected List<IClasspathEntry> setClassPathEntries() {
-		List<IClasspathEntry> cpe = super.setClassPathEntries();
+		List<IClasspathEntry> cpe = new ArrayList<IClasspathEntry>();
 		Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
-	    // add org.eclipse.emf.refactor.metrics.ocl to class path
+		// 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;
+	    // 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;
 	}
 	
 	public static void createNewMetric(IProgressMonitor monitor,
@@ -109,5 +129,29 @@
 		System.out.println(result);
 		return result;
 	}
+	
+	protected static void saveCode(IProgressMonitor monitor, String content, MetricInfo metricInfo) throws CoreException, JETException {
+		IContainer container = findOrCreatePackage(monitor, metricInfo);
+		if (container == null) {
+			throw new JETException("Could not find or create container for package " + metricInfo.getPackage() + " in " + metricInfo.getProjectName());
+		}
+		IFile file = container.getFile(new Path(metricInfo.getClassName() + JAVA_FILE_EXTENSION));
+		System.out.println("saving code into: "+file.getLocation());
+		InputStream inputStream = new ByteArrayInputStream(content.getBytes());
+		if (!file.exists()) {
+			file.create(inputStream, false, monitor);
+		} else {
+			container.refreshLocal(1, monitor);
+			file.setContents(inputStream, true, false, monitor);
+		}
+	}
+	
+	private static IContainer findOrCreatePackage(IProgressMonitor progressMonitor, MetricInfo metricInfo) throws CoreException {
+		IPath outputPath = new Path(metricInfo.getProjectName() + SOURCE_DIR + metricInfo.getPackage().replace('.', '/'));
+		IProgressMonitor subMonitor = new SubProgressMonitor(progressMonitor, 1);
+		IPath localLocation = null; 
+		IContainer container = CodeGenUtil.EclipseUtil.findOrCreateContainer(outputPath, true, localLocation, subMonitor);
+		return container;
+	}
 
 }
diff --git a/org.eclipse.emf.refactor.metrics.reporter/bin/.gitignore b/org.eclipse.emf.refactor.metrics.reporter/bin/.gitignore
deleted file mode 100644
index 571ee51..0000000
--- a/org.eclipse.emf.refactor.metrics.reporter/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org