package sk.stuba.fiit.perconik.eclipse.core.resources;
import java.net.URI;
import java.util.EnumSet;
import java.util.Set;
import javax.annotation.Nullable;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import sk.stuba.fiit.perconik.eclipse.core.runtime.CoreExceptions;
/**
* Static utility methods pertaining to Eclipse resources.
*
* @author Pavol Zbell
* @since 1.0
*/
public final class Resources {
private Resources() {}
public static void accept(final IResource resource, final IResourceVisitor visitor) {
try {
resource.accept(visitor);
} catch (CoreException e) {
CoreExceptions.propagate(e);
}
}
public static void accept(final IResource resource, final IResourceVisitor visitor, final ResourceVisitorDepth depth) {
accept(resource, visitor, depth, EnumSet.allOf(ResourceMemberFlag.class));
}
public static void accept(final IResource resource, final IResourceVisitor visitor, final ResourceVisitorDepth depth, final Set<ResourceMemberFlag> flags) {
try {
resource.accept(visitor, depth.getValue(), ResourceMemberFlag.valuesAsInteger(flags));
} catch (CoreException e) {
CoreExceptions.propagate(e);
}
}
public static IPath getLocation(@Nullable final IResource resource) {
return resource != null ? resource.getLocation() : null;
}
public static URI getLocationUri(@Nullable final IResource resource) {
return resource != null ? resource.getLocationURI() : null;
}
}