package sbt.eclipse.logic;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.JavaCore;
import sbt.eclipse.Constants;
/**
* Adds a classpath container to a project if it does not yet exist.
*
* @author Joonas Javanainen
*
*/
public class ClasspathContainerConfigurer extends AbstractConfigurer {
private IPath containerId;
/**
* @param project
* @throws CoreException
*/
public ClasspathContainerConfigurer(IPath containerId, IProject project)
throws CoreException {
super(project);
this.containerId = containerId;
}
@Override
public void run(IProgressMonitor monitor) throws CoreException {
List<IClasspathEntry> classpaths = new ArrayList<IClasspathEntry>();
for (IClasspathEntry entry : javaProject.getRawClasspath()) {
if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
if (entry.getPath().equals(containerId)) {
return;
}
}
classpaths.add(entry);
}
classpaths.add(JavaCore.newContainerEntry(containerId));
javaProject.setRawClasspath(classpaths
.toArray(Constants.EMPTY_CLASSPATHENTRY_ARRAY), monitor);
}
}