View Javadoc

1   package org.seasar.cubby.util;
2   
3   import java.io.UnsupportedEncodingException;
4   import java.net.URLEncoder;
5   import java.util.LinkedHashMap;
6   import java.util.Map;
7   
8   public class Uri {
9   
10  	private Map<String,Object> params = new LinkedHashMap<String, Object>();
11  
12  	private String encode = "UTF-8";
13  
14  	public void setParam(String name, Object value) {
15  		params.put(name, value);
16  	}
17  
18  	public void setParam(String name, Object[] values) {
19  		params.put(name, values);
20  	}
21  
22  	public String getQueryString() {
23  		StringBuilder sb = new StringBuilder();
24  		if (!params.isEmpty()) {
25  			for (String name : params.keySet()) {
26  				Object value = params.get(name);
27  				if (value == null) {
28  					appendParams(sb, name, value);
29  				} else if (value.getClass().isArray()) {
30  					Object[] values = (Object[])value;
31  					for (Object v : values) {
32  						appendParams(sb, name, v);
33  					}
34  				} else {
35  					appendParams(sb, name, value);
36  				}
37  			}
38  		}
39  		return sb.toString();
40  	}
41  
42  	private void appendParams(StringBuilder sb, String name, Object value) {
43  		if(sb.length() > 0) {
44  			sb.append("&");
45  		}
46  		try {
47  			sb.append(URLEncoder.encode(name, encode));
48  			sb.append("=");
49  			if (value != null) {
50  				sb.append(URLEncoder.encode(value.toString(), encode));
51  			}
52  		} catch (UnsupportedEncodingException e) {
53  			throw new RuntimeException(e.getMessage(), e);
54  		}
55  	}
56  
57  	public void setEncode(String encode) {
58  		this.encode = encode;
59  	}
60  }