package lcm.lcm;
import java.util.*;
import java.util.regex.*;
public class URLParser
{
HashMap<String,String> params = new HashMap<String,String>();
public URLParser(String url)
{
String prov_networkargs[] = url.split("://", 2);
if (prov_networkargs.length < 2)
throw new IllegalArgumentException ("URLParser: Invalid URL: "+url);
String network_args[] = prov_networkargs[1].split("[?]");
params.put("protocol", prov_networkargs[0]);
if (network_args[0].length() > 0) {
params.put("network", network_args[0]);
}
if (network_args.length > 1) {
String keyvalues[] = network_args[1].split("&");
for (int i = 0; i < keyvalues.length; i++) {
String toks[] = keyvalues[i].split("=");
if (toks.length != 2)
System.err.println("Invalid key-value pair in URL : "+keyvalues[i]);
else
params.put(toks[0], toks[1]);
}
}
}
public String get(String key)
{
return params.get(key);
}
public String get(String key, String def)
{
if (params.get(key)==null)
return def;
return params.get(key);
}
public int get(String key, int def)
{
String v = params.get(key);
if (v==null)
return def;
return Integer.parseInt(v);
}
public boolean get(String key, boolean def)
{
String v = params.get(key);
if (v==null)
return def;
return Boolean.parseBoolean(v) || v.equals("1");
}
public double get(String key, double def)
{
String v = params.get(key);
if (v==null)
return def;
return Double.parseDouble(v);
}
public static void main(String args[])
{
URLParser u = null;
if (args.length < 1) {
String env = System.getenv("LCM_DEFAULT_URL");
if (null != env)
u = new URLParser(env);
else {
System.err.println("Must specify URL");
System.exit(1);
}
} else {
u = new URLParser(args[0]);
}
for (String key : u.params.keySet()) {
System.err.printf("param %15s: %s\n", key, u.params.get(key));
}
}
}