generation manager structure improved
diff --git a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/Activator.class b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/Activator.class
index 6b999a5..bb175e2 100644
--- a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/Activator.class
+++ b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/Activator.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.class b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.class
similarity index 93%
rename from org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.class
rename to org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.class
index 859b0cb..598eec2 100644
--- a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.class
+++ b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava$1.class b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava$1.class
index bbe5e98..05f34c3 100644
--- a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava$1.class
+++ b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric$1.class b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric$1.class
index 80028c4..0ce6575 100644
--- a/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric$1.class
+++ b/org.eclipse.emf.refactor.smells.generator/bin/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/Activator.java b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/Activator.java
index 7f05ba9..a3393f7 100644
--- a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/Activator.java
+++ b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/Activator.java
@@ -1,6 +1,6 @@
 package org.eclipse.emf.refactor.smells.generator;
 
-import org.eclipse.emf.refactor.smells.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.smells.generator.managers.SmellGenerationManager;
 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();
+		SmellGenerationManager.getInstance();
 	}
 
 	/*
diff --git a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.java b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.java
similarity index 96%
rename from org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.java
rename to org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.java
index 7bb43a8..fd7518a 100644
--- a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/GenerationManager.java
+++ b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/managers/SmellGenerationManager.java
@@ -26,9 +26,9 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.osgi.framework.Bundle;
 
-public class GenerationManager {
+public class SmellGenerationManager {
 	
-	private static GenerationManager instance;
+	private static SmellGenerationManager instance;
 	
 	private static final String JAVA_TEMPLATE_CLASS_NAME = "JavaFinderClassTemplate";
 	private static final String METRIC_TEMPLATE_CLASS_NAME = "MetricBasedFinderClassTemplate";
@@ -41,7 +41,7 @@
 	protected static String templateDirectory;
 	protected static List<IClasspathEntry> classpathEntries;
 	
-	protected GenerationManager() {
+	protected SmellGenerationManager() {
 		templateDirectory = setTemplateDirectory();
 		classpathEntries = setClassPathEntries();
 		System.out.println("GenerationManager initialized!");
@@ -62,9 +62,9 @@
 		return cpe;
 	}
 
-	public static GenerationManager getInstance() {
+	public static SmellGenerationManager getInstance() {
 		if (instance == null) {
-			instance = new GenerationManager();
+			instance = new SmellGenerationManager();
 		}
 		return instance;
 	}
diff --git a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava.java b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava.java
index 440b6f3..a673a26 100644
--- a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava.java
+++ b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardJava.java
@@ -10,7 +10,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.refactor.smells.generator.core.ModelSmellInfo;
 import org.eclipse.emf.refactor.smells.generator.interfaces.INewModelSmellWizard;
-import org.eclipse.emf.refactor.smells.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.smells.generator.managers.SmellGenerationManager;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.IWizardPage;
@@ -77,8 +77,8 @@
 		try{
 			getContainer().run(true, true, new IRunnableWithProgress(){
 				public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException {
-					GenerationManager.getInstance();
-					GenerationManager.createNewModelSmell(monitor, getModelSmellInfo(), newSmellTargetProject);
+					SmellGenerationManager.getInstance();
+					SmellGenerationManager.createNewModelSmell(monitor, getModelSmellInfo(), newSmellTargetProject);
 				}
 			});
 		}
diff --git a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric.java b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric.java
index 690db01..3782452 100644
--- a/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric.java
+++ b/org.eclipse.emf.refactor.smells.generator/src/org/eclipse/emf/refactor/smells/generator/ui/NewModelSmellWizardMetric.java
@@ -10,7 +10,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.refactor.smells.generator.core.MetricBasedModelSmellInfo;
 import org.eclipse.emf.refactor.smells.generator.interfaces.INewModelSmellWizard;
-import org.eclipse.emf.refactor.smells.generator.managers.GenerationManager;
+import org.eclipse.emf.refactor.smells.generator.managers.SmellGenerationManager;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.IWizardPage;
@@ -80,8 +80,8 @@
 		try{
 			getContainer().run(true, true, new IRunnableWithProgress(){
 				public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException {
-					GenerationManager.getInstance();
-					GenerationManager.createNewModelSmell(monitor, getModelSmellInfo(), newSmellTargetProject);
+					SmellGenerationManager.getInstance();
+					SmellGenerationManager.createNewModelSmell(monitor, getModelSmellInfo(), newSmellTargetProject);
 				}
 			});
 		}
diff --git a/org.eclipse.emf.refactor.smells.henshin/bin/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.class b/org.eclipse.emf.refactor.smells.henshin/bin/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.class
index 7ec6535..3953638 100644
--- a/org.eclipse.emf.refactor.smells.henshin/bin/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.class
+++ b/org.eclipse.emf.refactor.smells.henshin/bin/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.henshin/src/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.java b/org.eclipse.emf.refactor.smells.henshin/src/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.java
index 8544ef9..a68e949 100644
--- a/org.eclipse.emf.refactor.smells.henshin/src/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.java
+++ b/org.eclipse.emf.refactor.smells.henshin/src/org/eclipse/emf/refactor/smells/henshin/managers/HenshinGenerationManager.java
@@ -1,18 +1,25 @@
 package org.eclipse.emf.refactor.smells.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.smells.generator.managers.GenerationManager;
+import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.emf.refactor.smells.generator.core.ModelSmellInfo;
 import org.eclipse.emf.refactor.smells.generator.managers.XMLPluginFileManager;
 import org.eclipse.emf.refactor.smells.henshin.Activator;
 import org.eclipse.emf.refactor.smells.henshin.core.HenshinModelSmellInfo;
@@ -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 = "HenshinFinderClassTemplate";
 	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.smells.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.smells to class path
+	    bundle = Platform.getBundle(org.eclipse.emf.refactor.smells.Activator.PLUGIN_ID);
+	    version = (String) bundle.getHeaders().get(BUNDLEVERSION);
+	    cpe.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH + 
+	    		org.eclipse.emf.refactor.smells.Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));	
 	    return cpe;
 	}
 	
@@ -65,8 +85,7 @@
 		}
 	}
 	
-	private static void createCalculateClass(IProgressMonitor monitor, 
-			HenshinModelSmellInfo modelSmellInfo) {
+	private static void createCalculateClass(IProgressMonitor monitor, HenshinModelSmellInfo modelSmellInfo) {
 		String generatedCode = "";
 		String templateName = HENSHIN_TEMPLATE_CLASS_NAME;
 		try {
@@ -95,8 +114,7 @@
 		return directory;
 	}
 	
-	protected static String generateCode(IProgressMonitor monitor, String template, 
-			HenshinModelSmellInfo modelSmellInfo) {
+	protected static String generateCode(IProgressMonitor monitor, String template, HenshinModelSmellInfo modelSmellInfo) {
 		String templatePath = templateDirectory + template + TEMPLATE_FILE_EXTENSION;
 		ClassLoader classLoader = modelSmellInfo.getClass().getClassLoader();
 		JETEmitter jetEmitter = new JETEmitter(templatePath, classLoader);
@@ -111,5 +129,29 @@
 		System.out.println(result);
 		return result;
 	}
+	
+	protected static void saveCode(IProgressMonitor monitor, String content, ModelSmellInfo modelSmellInfo) throws CoreException, JETException {
+		IContainer container = findOrCreatePackage(monitor, modelSmellInfo);
+		if (container == null) {
+			throw new JETException("Could not find or create container for package " + modelSmellInfo.getPackage() + " in " + modelSmellInfo.getProjectName());
+		}
+		IFile file = container.getFile(new Path(modelSmellInfo.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, ModelSmellInfo modelSmellInfo) throws CoreException {
+		IPath outputPath = new Path(modelSmellInfo.getProjectName() + SOURCE_DIR + modelSmellInfo.getPackage().replace('.', '/'));
+		IProgressMonitor subMonitor = new SubProgressMonitor(progressMonitor, 1);
+		IPath localLocation = null; 
+		IContainer container = CodeGenUtil.EclipseUtil.findOrCreateContainer(outputPath, true, localLocation, subMonitor);
+		return container;
+	}
 
 }