package monolipse.core.internal;
import monolipse.core.BooCore;
import monolipse.core.IAssemblySource;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
public class BooMarkers {
static void addMarker(IResource resource, String message, int lineNumber, int severity) {
try {
IMarker marker = resource.createMarker(BooMarkers.BOO_PROBLEM_MARKER_TYPE);
marker.setAttribute(IMarker.MESSAGE, message);
marker.setAttribute(IMarker.SEVERITY, severity);
if (lineNumber == -1) {
lineNumber = 1;
}
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
} catch (CoreException e) {
BooCore.logException(e);
}
}
static void addErrorMarker(IAssemblySource source, String message) {
addMarker(source.getFolder(), message, -1, IMarker.SEVERITY_ERROR);
}
static void deleteMarkers(IResource resource) {
try {
resource.deleteMarkers(BooMarkers.BOO_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_INFINITE);
} catch (CoreException e) {
BooCore.logException(e);
}
}
private static final String BOO_PROBLEM_MARKER_TYPE = BooCore.ID_PLUGIN + ".booProblem";
public static IMarker[] booProblemsOn(final IFile file)
throws CoreException {
return file.findMarkers(BOO_PROBLEM_MARKER_TYPE, true, IResource.DEPTH_ZERO);
}
public static IMarker[] booProblemsOn(IAssemblySource source)
throws CoreException {
return source.getFolder().findMarkers(BOO_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_INFINITE);
}
public static boolean hasErrors(IAssemblySource source) throws CoreException {
IMarker[] markers = booProblemsOn(source);
for (IMarker m : markers)
if (IMarker.SEVERITY_ERROR == m.getAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR))
return true;
return false;
}
}