package org.sakaiproject.citation.impl.openurl;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* Small class that builds up a URL.
* It uses the builder pattern.
* @author buckett
*
*/
public class URLBuilder {
private static final String SEPERATOR = "&";
private static final String KEY_VALUE_SEP = "=";
private StringBuilder url;
private String encoding;
public URLBuilder(String encoding) {
this.encoding = encoding;
this.url = new StringBuilder();
}
public URLBuilder append(String key, String value) {
if (url.length() > 0) {
this.url.append(SEPERATOR);
}
this.url.append(key);
this.url.append(KEY_VALUE_SEP);
try {
this.url.append(URLEncoder.encode(value, encoding));
} catch (UnsupportedEncodingException uee) {
throw new RuntimeException(uee);
}
return this;
}
/**
* Append some existing data that has already been encoded and put together.
* @param data Such as "name=Matthew%20Buckett&login=buckett"
* @return The URLBuilder.
*/
public URLBuilder append(String data) {
if (url.length() > 0 && !data.startsWith(SEPERATOR)) {
this.url.append(SEPERATOR);
}
this.url.append(data);
return this;
}
public int length() {
return url.length();
}
public String toString() {
return url.toString();
}
}