blob: 0d01e785691ba4ea1aba163426bf31323f63b198 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* 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:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.core.environment;
import java.io.File;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.internal.environment.LocalEnvironment;
@SuppressWarnings("nls")
public class FileHandles {
public static IFileStore asFileStore(IFileHandle handle)
throws CoreException {
if (handle instanceof IFileStoreProvider) {
return ((IFileStoreProvider) handle).getFileStore();
} else {
throw new CoreException(new Status(IStatus.ERROR,
DLTKCore.PLUGIN_ID, "Unsupported " + handle.getFullPath()));
}
}
public static File asFile(IFileHandle handle) throws CoreException {
if (handle instanceof FileAsFileHandle) {
return ((FileAsFileHandle) handle).getFile();
}
if (LocalEnvironment.ENVIRONMENT_ID.equals(handle.getEnvironmentId())) {
return handle.getPath().toFile();
}
final File result = asFileStore(handle).toLocalFile(EFS.NONE, null);
if (result == null) {
throw new CoreException(new Status(IStatus.ERROR,
DLTKCore.PLUGIN_ID, "Unsupported " + handle.getFullPath()));
}
return result;
}
public static IPath asPath(IFileHandle handle, IEnvironment environment)
throws CoreException {
if (environment.getId().equals(handle.getEnvironmentId())) {
return handle.getPath();
}
throw new CoreException(new Status(IStatus.ERROR, DLTKCore.PLUGIN_ID,
"Couldn't resolve " + handle.getFullPath() + " for "
+ environment.getName()));
}
}