package org.rubypeople.rdt.internal.core.builder;
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.core.runtime.SubMonitor;
import org.rubypeople.rdt.core.compiler.BuildContext;
public class CleanRdtCompiler extends AbstractRdtCompiler
{
private List<BuildContext> contexts;
public CleanRdtCompiler(IProject project)
{
this(project, new MarkerManager());
}
public CleanRdtCompiler(IProject project, IMarkerManager markerManager)
{
super(project, markerManager);
}
protected void removeMarkers(IMarkerManager markerManager, IProgressMonitor monitor)
{
SubMonitor sub = SubMonitor.convert(monitor, "Removing Markers...", 1);
markerManager.removeProblemsAndTasksFor(project);
sub.worked(1);
sub.done();
}
private void analyzeFiles() throws CoreException
{
BuildContextCollector collector = new BuildContextCollector(project);
project.accept(collector, IResource.NONE);
contexts = collector.getContexts();
}
@Override
protected BuildContext[] getBuildContexts() throws CoreException
{
if (contexts == null)
{
analyzeFiles();
}
return contexts.toArray(new BuildContext[contexts.size()]);
}
}