package org.docear.plugin.core.workspace.compatible; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; import org.freeplane.plugin.workspace.model.project.AWorkspaceProject; import org.osgi.service.url.AbstractURLStreamHandlerService; public class DocearConversionURLHandler extends AbstractURLStreamHandlerService { private static AWorkspaceProject targetProject; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ /*********************************************************************************** * METHODS **********************************************************************************/ public static AWorkspaceProject getTargetProject() { // if(targetProject == null) { // return WorkspaceController.getCurrentProject(); // } return targetProject; } /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ @Override public URLConnection openConnection(URL url) throws IOException { if(getTargetProject() == null) { throw new IOException("no project assignment"); } String path = targetProject.getProjectHome().getRawPath(); URL ret = new URL("file", null, path + url.getPath()); try { URI uri = ret.toURI(); if (uri.getPath().startsWith("//")) { uri = uri.normalize(); uri = new URI(uri.getScheme(), null, "///" + uri.getPath(), null); } else { uri = uri.normalize(); } ret = uri.toURL(); } catch (URISyntaxException e) { throw new IOException(e.getMessage()); } return ret.openConnection(); } public static void setTargetProject(AWorkspaceProject project) { targetProject = project; } }