/*******************************************************************************
* Copyright © 2008, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.ide.core.internal.builder;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.edt.compiler.core.ast.File;
import org.eclipse.edt.compiler.internal.core.builder.BuildException;
import org.eclipse.edt.compiler.internal.core.builder.IBuildNotifier;
import org.eclipse.edt.compiler.internal.util.PackageAndPartName;
import org.eclipse.edt.ide.core.internal.lookup.FileInfoManager;
import org.eclipse.edt.ide.core.internal.lookup.IASTFileInfo;
import org.eclipse.edt.ide.core.internal.lookup.ResourceFileInfoCreator;
public class CleanBatchBuilder extends AbstractBatchBuilder {
protected CleanBatchBuilder(Builder builder, IBuildNotifier notifier) {
super(builder, notifier);
}
@Override
protected void addEGLFile(IFile file, String packageName) {
try {
String fileContents = org.eclipse.edt.ide.core.internal.utils.Util.getFileContents(file);
File fileAST = ASTManager.getInstance().getFileAST(file, fileContents);
ResourceFileInfoCreator fileInfoCreator = new ResourceFileInfoCreator(projectInfo, packageName, file, fileAST, fileContents, new DuplicatePartRequestor(builder.getProject(), packageName, file));
IASTFileInfo info = fileInfoCreator.getASTInfo();
FileInfoManager.getInstance().saveFileInfo(builder.getProject(), file.getProjectRelativePath(), info);
// report fileInfo errors
info.accept(new FileMarkerProblemRequestor(file, info));
// Perform Syntax Checking
fileAST.accept(new MarkerSyntaxErrorRequestor(new SyntaxMarkerProblemRequestor(file, info), fileContents));
Set partNames = info.getPartNames();
for (Iterator iter = partNames.iterator(); iter.hasNext();) {
String partName = (String) iter.next();
PackageAndPartName ppName = new PackageAndPartName(info.getCaseSensitivePackageName(), info.getCaseSensitivePartName(partName), packageName);
projectInfo.partAdded(packageName, partName, info.getPartType(partName), file, ppName);
addPart(ppName);
}
}catch(Exception e){
throw new BuildException("Error adding EGL File: " + file.getProjectRelativePath(), e);
}
}
@Override
protected void addEGLPackage(String packageName) {
projectInfo.packageAdded(packageName);
}
}