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 }