package org.objectstyle.wolips.eomodeler.utils; import java.io.File; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.ui.IURIEditorInput; import org.eclipse.ui.ide.FileStoreEditorInput; import org.eclipse.ui.part.FileEditorInput; import org.objectstyle.wolips.baseforplugins.util.URLUtils; import org.objectstyle.wolips.eomodeler.core.model.EOModel; import org.objectstyle.wolips.eomodeler.core.model.EOModelException; public class EclipseFileUtils { public static IURIEditorInput getEditorInput(EOModel model) throws MalformedURLException, EOModelException, CoreException, URISyntaxException { IURIEditorInput editorInput; IFile indexFile = EclipseFileUtils.getEclipseIndexFile(model); if (indexFile == null) { String externalForm = model.getIndexURL().toExternalForm().replace(' ', '+'); IFileStore indexFileStore = EFS.getStore(new URI(externalForm)); editorInput = new FileStoreEditorInput(indexFileStore); } else { editorInput = new FileEditorInput(indexFile); } return editorInput; } public static File getExternalIndexFile(EOModel model) throws MalformedURLException, EOModelException { if (model.getIndexURL() == null) { throw new EOModelException("Failed to load model."); } return URLUtils.cheatAndTurnIntoFile(model.getIndexURL()); } public static IFile getEclipseFile(URL url) { // fails when using: ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(url.toString())); return EclipseFileUtils.getEclipseFile(URLUtils.cheatAndTurnIntoFile(url)); } public static IFile getEclipseFile(URI uri) { // fails when using: return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(uri.toString())); return EclipseFileUtils.getEclipseFile(URLUtils.cheatAndTurnIntoFile(uri)); } public static IFile getEclipseFile(File externalFile) { return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(externalFile.getAbsolutePath())); //return EclipseFileUtils.getEclipseFile(externalFile.toURI()); } public static IFile getEclipseIndexFile(EOModel model) throws MalformedURLException, EOModelException { //return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(model.getIndexURL().toString())); return EclipseFileUtils.getEclipseFile(EclipseFileUtils.getExternalIndexFile(model)); } }