1 /*******************************************************************************
2  * Copyright (c) 2000, 2004 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  *
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package net.sourceforge.phpdt.internal.corext.refactoring.util;
12 
13 import java.util.ArrayList;
14 import java.util.List;
15 
16 import net.sourceforge.phpdt.core.ICompilationUnit;
17 import net.sourceforge.phpdt.core.IJavaElement;
18 import net.sourceforge.phpdt.core.IMember;
19 import net.sourceforge.phpdt.core.IOpenable;
20 import net.sourceforge.phpdt.internal.corext.Assert;
21 
22 import org.eclipse.core.resources.IFile;
23 import org.eclipse.core.resources.IResource;
24 
25 public class ResourceUtil {
26 
ResourceUtil()27 	private ResourceUtil() {
28 	}
29 
getFiles(ICompilationUnit[] cus)30 	public static IFile[] getFiles(ICompilationUnit[] cus) {
31 		List files = new ArrayList(cus.length);
32 		for (int i = 0; i < cus.length; i++) {
33 			IResource resource = ResourceUtil.getResource(cus[i]);
34 			if (resource != null && resource.getType() == IResource.FILE)
35 				files.add(resource);
36 		}
37 		return (IFile[]) files.toArray(new IFile[files.size()]);
38 	}
39 
getFile(ICompilationUnit cu)40 	public static IFile getFile(ICompilationUnit cu) {
41 		IResource resource = ResourceUtil.getResource(cu);
42 		if (resource != null && resource.getType() == IResource.FILE)
43 			return (IFile) resource;
44 		else
45 			return null;
46 	}
47 
48 	// ----- other ------------------------------
49 
50 	/**
51 	 * Finds an <code>IResource</code> for a given
52 	 * <code>ICompilationUnit</code>. If the parameter is a working copy then
53 	 * the <code>IResource</code> for the original element is returned.
54 	 */
getResource(ICompilationUnit cu)55 	public static IResource getResource(ICompilationUnit cu) {
56 		return cu.getResource();
57 	}
58 
59 	/**
60 	 * Returns the <code>IResource</code> that the given <code>IMember</code>
61 	 * is defined in.
62 	 *
63 	 * @see #getResource
64 	 */
getResource(IMember member)65 	public static IResource getResource(IMember member) {
66 		Assert.isTrue(!member.isBinary());
67 		return getResource(member.getCompilationUnit());
68 	}
69 
getResource(Object o)70 	public static IResource getResource(Object o) {
71 		if (o instanceof IResource)
72 			return (IResource) o;
73 		if (o instanceof IJavaElement)
74 			return getResource((IJavaElement) o);
75 		return null;
76 	}
77 
getResource(IJavaElement element)78 	private static IResource getResource(IJavaElement element) {
79 		if (element.getElementType() == IJavaElement.COMPILATION_UNIT)
80 			return getResource((ICompilationUnit) element);
81 		else if (element instanceof IOpenable)
82 			return element.getResource();
83 		else
84 			return null;
85 	}
86 }
87