blob: ea0c2bc802f6b38d07556e44b3dc80763d9ee879 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xml.ui.internal.catalog;
import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
public class URIUtils {
private static final String PROTOCOL_PATTERN = ":";
private static final String FILE_PROTOCOL = "file:";
private static final String PLATFORM_RESOURCE_PROTOCOL = "platform:/resource/";
private static final String LOCAL_FILE_PROTOCOL_FORWARD_SLASH = "\\\\\\";
private static final String LOCAL_FILE_PROTOCOL_BACK_SLASH = "///";
private static final char PATH_SEPARATOR_FORWARD_SLASH = '/';
private static final char PATH_SEPARATOR_BACK_SLASH = '\\';
public static String convertURIToLocation(String uri) {
String location = uri;
if (uri != null) {
if (uri.startsWith(FILE_PROTOCOL)) {
location = org.eclipse.wst.common.uriresolver.internal.URI.createURI(uri).toFileString();
if (location != null && (location.startsWith(LOCAL_FILE_PROTOCOL_BACK_SLASH)
|| location.startsWith(LOCAL_FILE_PROTOCOL_FORWARD_SLASH))) {
location = location.substring(LOCAL_FILE_PROTOCOL_BACK_SLASH.length());
}
} else if (uri.startsWith(PLATFORM_RESOURCE_PROTOCOL)) {
location = uri.substring(PLATFORM_RESOURCE_PROTOCOL.length());
}
}
return location;
}
public static String convertLocationToURI(String location) {
String uri = location;
if (!URIHelper.hasProtocol(location)) {
uri = URIHelper.isAbsolute(location)? org.eclipse.wst.common.uriresolver.internal.URI.createFileURI(location).toString()
: URIHelper.prependPlatformResourceProtocol(location);
}
if (uri.startsWith(FILE_PROTOCOL) && uri.indexOf(PROTOCOL_PATTERN, FILE_PROTOCOL.length()) != -1) {
uri = URIHelper.ensureFileURIProtocolFormat(uri);
}
uri = uri.replace(PATH_SEPARATOR_BACK_SLASH, PATH_SEPARATOR_FORWARD_SLASH);
return uri;
}
}