package org.genmymodel.customgen.wizards.newProject;
import java.beans.Introspector;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.genmymodel.customgen.project.GenMyModelProject;
/**
*
* @author Ali Gourch
* @author Vincent Aranega
*
*/
public class NewCustomgenProjectWizardModel {
protected String name;
protected boolean metamodel;
protected boolean transformation;
public String toString() {
return "Custom generator project: " + name +
"\n +- Metamodels? " + metamodel +
"\n +- Transformations? " + transformation;
}
public void createProject() throws CoreException {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject(name);
project.create(null);
project.open(null);
if (metamodel) {
IFolder metamodelFolder = project.getFolder(GenMyModelProject.METAMODEL_FOLDER);
metamodelFolder.create(false, true, null);
}
if (transformation) {
IFolder transformationFolder = project.getFolder(GenMyModelProject.TRANSFO_FOLDER);
transformationFolder.create(false, true, null);
}
IFolder codegenFolder = project.getFolder(GenMyModelProject.CODEGEN_FOLDER);
codegenFolder.create(false, true, null);
String mtlName = Introspector.decapitalize(name);
IFile mtl = project.getFile(GenMyModelProject.CODEGEN_FOLDER + "/" + mtlName + ".mtl");
String str = "[comment encoding = UTF-8 /]\n";
str += "[module " + mtlName
+ "('http://www.eclipse.org/uml2/4.0.0/UML')]\n\n";
str += "[template public generate(m : Model)]\n";
str += "[comment @main/]\n";
str += "[file ('hello.md', false, 'UTF-8')]\n";
str += "# Hello world from [m.name/]\n";
str += "[/file]\n";
str += "[/template]";
InputStream is = new ByteArrayInputStream(str.getBytes());
mtl.create(is, false, null);
IFile generator = project.getFile("generator.xml");
str = "<generator> \n" +
"\t <name>" + mtlName + "</name> \n" +
"\t <m2t name=\"" + mtlName + ".mtl\" /> \n" +
"</generator>";
is = new ByteArrayInputStream(str.getBytes());
generator.create(is, false, null);
}
}