Java tutorial
// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.core.internal; import static org.eclipse.core.resources.ResourcesPlugin.getWorkspace; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.launching.IVMInstall; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.jdt.launching.LibraryLocation; import org.projectusus.core.project2.IUSUSProject; import org.projectusus.core.statistics.UsusModelProvider; public class TestProjectCreator { private static final String OUTPUT_FOLDER = "bin"; public static final String SOURCE_FOLDER = "src"; private final IProject project; public TestProjectCreator(String name) throws CoreException { super(); project = createNewProject(name); addJavaNature(project); makeUsusProject(); } public IProject getProject() { return project; } private IProject createNewProject(String name) throws CoreException { IProject regularProject = getWorkspace().getRoot().getProject(name); regularProject.create(null); regularProject.open(null); return regularProject; } private void addJavaNature(IProject project) throws CoreException { IProjectDescription description = project.getDescription(); description.setNatureIds(new String[] { JavaCore.NATURE_ID }); project.setDescription(description, null); IJavaProject javaProject = JavaCore.create(project); addBinFolder(javaProject); addJDKToClasspath(javaProject); addSourceFolder(javaProject); } private void addJDKToClasspath(IJavaProject javaProject) throws JavaModelException { List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>(); IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall(); LibraryLocation[] locations = JavaRuntime.getLibraryLocations(vmInstall); for (LibraryLocation element : locations) { entries.add(JavaCore.newLibraryEntry(element.getSystemLibraryPath(), null, null)); } javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null); } private void addBinFolder(IJavaProject javaProject) throws CoreException { IFolder binFolder = javaProject.getProject().getFolder(OUTPUT_FOLDER); javaProject.setOutputLocation(binFolder.getFullPath(), null); } private void addSourceFolder(IJavaProject javaProject) throws CoreException { IFolder sourceFolder = javaProject.getProject().getFolder(SOURCE_FOLDER); sourceFolder.create(false, true, null); IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(sourceFolder); IClasspathEntry[] oldEntries = javaProject.getRawClasspath(); IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1]; System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length); newEntries[oldEntries.length] = JavaCore.newSourceEntry(root.getPath()); javaProject.setRawClasspath(newEntries, null); } private void makeUsusProject() throws CoreException { makeUsusProject(true, project); UsusModelProvider.ususModelForAdapter().dropRawData(project); } static void makeUsusProject(boolean makeUsusProject, IProject project) throws CoreException { IUSUSProject ususProject = (IUSUSProject) project.getAdapter(IUSUSProject.class); ususProject.setUsusProject(makeUsusProject); } }