package com.banking.xc.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import android.net.Uri;
import android.net.UrlQuerySanitizer;
import android.net.UrlQuerySanitizer.ParameterValuePair;
public class URLParamMap implements Map<String, String> {
private static final String TAG = "URLParamMap";
private Map<String, String> map = new HashMap<String, String>();
private final String charset;
public URLParamMap() {
charset = "UTF-8";
}
public URLParamMap(String charset) {
this.charset = charset;
}
public void clear() {
map.clear();
}
public boolean containsKey(Object key) {
return map.containsKey(key);
}
public boolean containsValue(Object value) {
throw new RuntimeException("Can't use putAll method");
}
public Set<java.util.Map.Entry<String, String>> entrySet() {
return map.entrySet();
}
public boolean equals(Object object) {
return map.equals(object);
}
public String get(Object key) {
return map.get(key);
}
public int hashCode() {
return map.hashCode();
}
public boolean isEmpty() {
return map.isEmpty();
}
public Set<String> keySet() {
return map.keySet();
}
public String put(String key, String value) {
try {
value = URLEncoder.encode(value, charset);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
return map.put(key, value);
}
public void putAll(Map<? extends String, ? extends String> arg0) {
throw new RuntimeException("Can't use putAll method");
}
public String remove(Object key) {
return map.remove(key);
}
public int size() {
return map.size();
}
public Collection<String> values() {
return map.values();
}
public void put(Uri uri) {
String url = uri.toString();
if (Log.D) {
Log.d(TAG, "put() url -->> " + url);
}
UrlQuerySanitizer urlQuerySanitizer = new UrlQuerySanitizer(url);
List<ParameterValuePair> parameterList = urlQuerySanitizer.getParameterList();
if (Log.D) {
Log.d(TAG, "put() parameterList.size() -->> " + parameterList.size());
}
for (Iterator<ParameterValuePair> iterator = parameterList.iterator(); iterator.hasNext();) {
ParameterValuePair parameterValuePair = (ParameterValuePair) iterator.next();
String key = parameterValuePair.mParameter;
String value = uri.getQueryParameter(key);
if (Log.D) {
Log.d(TAG, "put() -->> key:" + key + ",value:" + value);
}
put(key, value);
}
}
}