blob: 631b8a2cb69fd3f4ce090912a7daabe7922bc4cb [file] [log] [blame]
/*
* Copyright (c) 2008 Borland Software Corporation
*
* 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
*/
package org.eclipse.gmf.internal.xpand.ant;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.URIConverter;
public class FileUtil {
public static IFile getFile(URI uri, URIConverter converter) {
IFile result = null;
if ("platform".equals(uri.scheme()) && (uri.segmentCount() > 2)) { //$NON-NLS-1$
if ("resource".equals(uri.segment(0))) { //$NON-NLS-1$
IPath path = new Path(URI.decode(uri.path())).removeFirstSegments(1);
result = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
}
} else if (uri.isFile() && !uri.isRelative()) {
result = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(uri.toFileString()));
} else {
// normalize, to see whether may we can resolve it this time
if (converter != null) {
URI normalized = converter.normalize(uri);
if (!uri.equals(normalized)) {
// recurse on the new URI
result = getFile(normalized, converter);
}
}
}
return result;
}
}