package com.yoursway.common.resources; import java.util.ArrayList; import java.util.Collection; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; public class PathUtils { private PathUtils() { throw new AssertionError("Cannot instantiate utility class"); } public static boolean startsWith(IPath path, String[] segments) { if (segments.length > path.segmentCount()) return false; for (int i = 0; i < segments.length; i++) { if (!segments[i].equals(path.segment(i))) return false; } return true; } public static String getBaseNameWithoutExtension(IFile file) { String name = file.getName(); String ext = file.getFileExtension(); if (ext == null) return name; int pos = name.lastIndexOf("." + ext); return (pos >= 0 ? name.substring(0, pos) : name); } public static String[] determinePathComponents(IFolder referenceFolder, IFile file) { Collection<IFolder> folders = new ArrayList<IFolder>(); if (referenceFolder != null) { IContainer parentFolder = file.getParent(); while (parentFolder != null && !parentFolder.equals(referenceFolder)) { if (parentFolder instanceof IFolder) { IFolder folder = (IFolder) parentFolder; folders.add(folder); } parentFolder = parentFolder.getParent(); } } String[] pathComponents = new String[folders.size() + 1]; int index = folders.size() - 1; for (IFolder folder : folders) { pathComponents[index--] = folder.getName(); } pathComponents[folders.size()] = getBaseNameWithoutExtension(file); return pathComponents; } public static IFolder getFolder(IContainer container, String path) { IResource member = container.findMember(path); if (member instanceof IFolder) return (IFolder) member; return null; } public static IFile getFile(IContainer container, String path) { IResource member = container.findMember(path); if (member instanceof IFile) return (IFile) member; return null; } public static IFile getFile(IContainer container, IPath path) { IResource member = container.findMember(path); if (member instanceof IFile) return (IFile) member; return null; } public static boolean isIgnoredResourceOrNoExtension(IResource resource) { String extension = resource.getFileExtension(); if (extension == null || extension.length() == 0) return false; return isIgnoredResource(resource); } public static boolean isIgnoredResource(IResource resource) { String name = resource.getName(); if (name.length() == 0 || name.charAt(0) == '.' || "CVS".equals(name) || "_darcs".equals(name)) return true; return false; } }