/**
* Copyright (c) 2013-2016 Angelo ZERR.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.eclipse.ide.core.utils;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
/**
* {@link IPath} utilities.
*/
public class PathUtils {
private static final String SLASH_STAR = "/*";
private PathUtils() {
}
/**
* Returns true if the given path belongs to the given container and false
* otherwise.
*
* @param path
* the path to check
* @param containerPath
* the container path
* @return true if the given path belongs to the given container and false
* otherwise.
*/
public static boolean isBelongToContainer(IPath path, IPath containerPath) {
int count = containerPath.matchingFirstSegments(path);
return containerPath.segmentCount() == count;
}
/**
* Returns the relative path of the given path relative to the given
* container path. In the case of the resource is a folder, "/*" is added to
* the relative path.
*
* @param the
* path to check
* @param containerPath
* the container path
* @param resourceType
* the {@link IResource} resource type.
* @return the relative path of the given path relative to the given
* container path. In the case of the resource is a folder, "/*" is
* added to the relative path.
*/
public static IPath getRelativePath(IPath path, IPath containerPath, int resourceType) {
IPath relativePath = path.makeRelativeTo(containerPath);
if (resourceType == IResource.FOLDER) {
relativePath = relativePath.append(SLASH_STAR);
}
return relativePath;
}
public static IPath getParentPath(IPath path) {
if (path.isRoot()) {
return null;
}
return path.removeFirstSegments(1);
}
}