package gr.upatras.ece.wcl.radl2.ui.wizard;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.xtend.type.impl.java.JavaBeansMetaModel;
import org.eclipse.xpand2.XpandExecutionContextImpl;
import org.eclipse.xpand2.XpandFacade;
import org.eclipse.xpand2.output.Outlet;
import org.eclipse.xpand2.output.OutputImpl;
import org.eclipse.xtext.ui.wizard.AbstractPluginProjectCreator;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
public class RadlProjectCreator extends AbstractPluginProjectCreator {
protected static final String DSL_GENERATOR_PROJECT_NAME = "gr.upatras.ece.wcl.radl.generator;resolution:=optional";
private static final String DSL_RALIB_PROJECT_NAME = "gr.upatras.ece.wcl.radl.externalLibs;resolution:=optional";
protected static final String SRC_ROOT = "src";
protected static final String SRC_GEN_ROOT = "src-gen";
protected final List<String> SRC_FOLDER_LIST = ImmutableList.of(SRC_ROOT, SRC_GEN_ROOT);
@Override
protected RadlProjectInfo getProjectInfo() {
System.out.println("----->> RadlProjectInfo getProjectInfo() = " + super.getProjectInfo().getProjectName());
return (RadlProjectInfo) super.getProjectInfo();
}
protected String getModelFolderName() {
return SRC_ROOT;
}
@Override
protected List<String> getAllFolders() {
return SRC_FOLDER_LIST;
}
@Override
protected List<String> getRequiredBundles() {
// List<String> result = Lists.newArrayList(super.getRequiredBundles());
// result.add(DSL_GENERATOR_PROJECT_NAME);
// return result;
return Lists.newArrayList(
// "com.ibm.icu",
// "org.eclipse.xtext",
// "org.eclipse.xtext.generator",
// "org.eclipse.xtend",
// "org.eclipse.xtend.typesystem.emf",
// "org.eclipse.xpand",
// "de.itemis.xtext.antlr",
// "org.eclipse.xtend.util.stdlib",
"org.apache.log4j;resolution:=optional",
"org.apache.commons.logging;resolution:=optional",
"org.apache.commons.logging;resolution:=optional",
"org.eclipse.equinox.common;resolution:=optional",
"org.eclipse.jface.text;resolution:=optional",
"org.eclipse.jdt.core;resolution:=optional",
"gr.upatras.ece.wcl.radl2;resolution:=optional",
"org.eclipse.xtext.common.types",
"gr.upatras.ece.nam.broker.model",
DSL_GENERATOR_PROJECT_NAME,
// DSL_TIDE_MODEL,
DSL_RALIB_PROJECT_NAME
);
}
protected String getActivatorClassName() {
return getProjectInfo().getProjectName()+".RAActivator" ;
//return null;
}
protected String[] getProjectNatures() {
return new String[] {
"org.eclipse.jdt.core.javanature",
"org.eclipse.pde.PluginNature",
"org.eclipse.xtext.ui.shared.xtextNature"
};
}
protected List<String> getImportedPackages() {
//return Lists.newArrayList("org.apache.log4j", "org.apache.commons.logging");
//org.apache.log4j;bundle-version="1.2.15";resolution:=optional
return Lists.newArrayList(
"com.bct.ptm.core.ral",
"com.bct.ral.interfaces",
"com.bct.ral.util",
"javax.servlet",
"com.bct.ral",
"com.uop.ssh",
"javax.servlet.http",
"com.jcraft.jsch",
// "javax.wsdl",
// "javax.wsdl.extensions",
// "javax.wsdl.factory",
// "javax.wsdl.xml",
"javax.xml.namespace",
"javax.xml.rpc",
"javax.xml.rpc.handler",
"javax.xml.rpc.handler.soap",
"javax.xml.rpc.holders",
"javax.xml.soap",
"org.apache.axis",
"org.apache.axis.client",
"org.apache.axis.configuration",
"org.apache.axis.description",
"org.apache.axis.encoding",
// "org.apache.axis.enum",
"org.apache.axis.soap",
"org.apache.axis.types",
"org.apache.axis.utils",
"org.apache.axis.wsdl",
"org.osgi.framework",
"org.osgi.service.http"
);
}
protected void enhanceProject(final IProject project, final IProgressMonitor monitor) throws CoreException {
OutputImpl output = new OutputImpl();
output.addOutlet(new Outlet(false, getEncoding(), null, true, project.getLocation().makeAbsolute().toOSString()));
XpandExecutionContextImpl execCtx = new XpandExecutionContextImpl(output, null);
execCtx.getResourceManager().setFileEncoding("Cp1253");
execCtx.registerMetaModel(new JavaBeansMetaModel());
XpandFacade facade = XpandFacade.create(execCtx);
facade.evaluate("gr::upatras::ece::wcl::radl2::ui::wizard::RadlNewProject::main", getProjectInfo(), getProjectInfo().getProjectName());
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
}
}