package com.yoursway.common.resources;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.CoreException;
public abstract class ResourceSwitch implements IResourceVisitor {
public final boolean visit(IResource resource) throws CoreException {
switch (resource.getType()) {
case IResource.FILE:
return visitFile((IFile) resource);
case IResource.FOLDER:
return visitFolder((IFolder) resource);
case IResource.PROJECT:
return visitProject((IProject) resource);
case IResource.ROOT:
return visitRoot((IWorkspaceRoot) resource);
}
throw new AssertionError("Unreachable code");
}
protected boolean visitRoot(IWorkspaceRoot resource) {
throw new AssertionError("Unexpected type of resource: " + resource.getFullPath());
}
protected boolean visitProject(IProject resource) {
throw new AssertionError("Unexpected type of resource: " + resource.getFullPath());
}
protected abstract boolean visitFolder(IFolder resource);
protected abstract boolean visitFile(IFile resource);
}