blob: 5bd33037bdc1f866b9cb9a5efe92ae3f93a6b82b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v2.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Description:
*
* Contributors:
* Alvaro Sanchez-Leon - Intial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.versions.core.spi;
import java.net.URI;
import java.util.ArrayList;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
/**
* @author lmcalvs
*/
public class ScmResourceUtils {
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
/**
* Return the projects currently opened in the work space
*
* @return
*/
public static IProject[] getProjects() {
IWorkspace root = ResourcesPlugin.getWorkspace();
IProject[] projects = root.getRoot().getProjects();
return projects;
}
/**
* Return the workspace project associated with the given name
*
* @param name
* @return - IProject if found, null if not found
*/
public static IProject getProject(String name) {
IWorkspace root = ResourcesPlugin.getWorkspace();
IProject[] projects = root.getRoot().getProjects();
IProject project = null;
if (projects != null) {
for (IProject project2 : projects) {
project = project2;
if (project.getName().equals(name)) {
return project;
}
}
}
return null;
}
/**
* Find the workspace file identified by the absolute URI which is associated to the given project
*
* @param aFilePathURI
* - URI in absolute format
* @param aProject
* - workspace project where is expected
* @return - null if no file found
*/
public static IFile getWorkSpaceFile(URI aFilePathURI, IProject aProject) {
IFile[] files = getWorkSpaceFiles(aFilePathURI);
for (IFile iFile : files) {
if (iFile.getProject().equals(aProject)) {
// found
return iFile;
}
}
// not found
return null;
}
/**
* Return all handles to Resource files for the given URI (in absolute form)
*
* @param filePathURI
* - Absolute URI to the file
* @return - File handles to resource files within the workspace
*/
public static IFile[] getWorkSpaceFiles(URI filePathURI) {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IFile[] files = null;
if (filePathURI != null) {
files = filterNonExistentFiles(root.findFilesForLocationURI(filePathURI));
}
return files;
}
/**
* @param files
* @return
*/
private static IFile[] filterNonExistentFiles(IFile[] files) {
if (files == null) {
return null;
}
int length = files.length;
ArrayList<IFile> existentFiles = new ArrayList<IFile>(length);
for (int i = 0; i < length; i++) {
if (files[i].exists()) {
existentFiles.add(files[i]);
} else if (files[i].getType() == IResource.FILE) {
existentFiles.add(files[i]);
}
}
return existentFiles.toArray(new IFile[existentFiles.size()]);
}
}