/*******************************************************************************
* Copyright (c) 2006-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
* IBM Research
*******************************************************************************/
package com.ibm.research.tours.content.url.parser;
public class URLParser
{
public static final String PARAMETER_START = "?";
public static final String PARAMETER_START_REGEX = "\\?";
public static final String PARAMETER_DELIM = "&";
public static final String PARAMETER_EQUALS = "=";
public static final String ECLIPSE_PREAMBLE = "eclipse:";
public static final String HTTP_PREAMBLE = "http://";
public static final String COLON = ":";
public static URLInfo parse(String urlString)
{
if(urlString!=null)
{
urlString = urlString.trim();
// Hack to support http
if(urlString.toLowerCase().startsWith(HTTP_PREAMBLE))
{
URLInfo info = new URLInfo();
info.setPreamble(HTTP_PREAMBLE);
info.setBody(urlString);
return info;
}
if(urlString.toLowerCase().startsWith(ECLIPSE_PREAMBLE))
{
String parameterString = null;
int colon = urlString.indexOf(COLON);
String body = urlString.substring(colon + 1, urlString.length());
int parameterDelim = body.indexOf(PARAMETER_START);
if(parameterDelim != -1)
{
parameterString = body.substring(parameterDelim,body.length());
parameterString = parameterString.replaceFirst(PARAMETER_START_REGEX, "");
body = body.substring(0,parameterDelim);
}
URLInfo info = new URLInfo();
info.setPreamble(ECLIPSE_PREAMBLE);
info.setBody(body);
info.setParameterString(parameterString);
return info;
}
}
return null;
}
}