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