/**
*
*/
package com.aptana.editor.php.indexer;
import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.IProgressMonitor;
import com.aptana.core.CorePlugin;
import com.aptana.core.IDebugScopes;
import com.aptana.core.logging.IdeLog;
import com.aptana.editor.php.internal.contentAssist.ContentAssistUtils;
/**
* An incremental project builder for PHP projects. This builder is here for clean operations.
*
* @author Shalom Gibly
* @since Aptana PHP 1.1
*/
public class IncrementalPHPProjectBuilder extends IncrementalProjectBuilder
{
/*
* (non-Javadoc)
* @see org.eclipse.core.resources.IncrementalProjectBuilder#clean(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
protected void clean(IProgressMonitor monitor)
{
IProject project = getProject();
PHPGlobalIndexer.getInstance().clean(project, monitor);
PHPGlobalIndexer.getInstance().cleanLibraries(monitor);
ContentAssistUtils.cleanIndex();
if (IdeLog.isTraceEnabled(CorePlugin.getDefault(), IDebugScopes.BUILDER))
{
// @formatter:off
String message = MessageFormat.format("Cleaning the PHP project {0}", //$NON-NLS-1$
(project != null) ? project.getName() : "null" //$NON-NLS-1$
);
// @formatter:on
IdeLog.logTrace(CorePlugin.getDefault(), message, IDebugScopes.BUILDER);
}
}
/**
* Constructor
*/
public IncrementalPHPProjectBuilder()
{
}
/**
* Returns null, as the PHP plugin still does not use the builders as it should.
*
* @see org.eclipse.core.resources.IncrementalProjectBuilder#build(int, java.util.Map,
* org.eclipse.core.runtime.IProgressMonitor)
*/
@SuppressWarnings("rawtypes")
protected IProject[] build(int kind, Map args, IProgressMonitor monitor)
{
// FIXME - SG: Convert from Indexer timer to the builder system.
IProject project = getProject();
if ((kind == CLEAN_BUILD || kind == FULL_BUILD) && project != null)
{
PHPGlobalIndexer.getInstance().clean(project, monitor);
PHPGlobalIndexer.getInstance().build(project, monitor);
if (IdeLog.isTraceEnabled(CorePlugin.getDefault(), IDebugScopes.BUILDER))
{
// @formatter:off
String message = MessageFormat.format("Building the PHP project {0}", //$NON-NLS-1$
project.getName());
// @formatter:on
IdeLog.logTrace(CorePlugin.getDefault(), message, IDebugScopes.BUILDER);
}
}
return null;
}
}