package nl.helixsoft.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; /** * Build a url of the following form * <code> * BASE_URL/optional/additions?param=val¶m=val¶m=val * </code> * * class can be subclassed to provide extra utility methods. * <p> * Most methods return <code>this</code> so calls can be chained. */ public class URLBuilder { private StringBuilder result; private Map<String, String> params = new HashMap<String, String>(); public URLBuilder(String base) { result = new StringBuilder (base); } public String build() { String sep = "?"; for (Map.Entry<String, String> param : params.entrySet()) { result.append (sep); result.append (param.getKey()); result.append ("="); result.append (param.getValue()); sep = "&"; } return result.toString(); } public URLBuilder param(String key, Object val) { params.put (key, val.toString()); return this; } public URLBuilder append(String val) { result.append(val); return this; } public URLBuilder appendEncoded(String val) { try { result.append (URLEncoder.encode(val, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new IllegalStateException("Programming bug: unknown encoding"); } return this; } }