1 package org.seasar.cubby.util;
2
3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
5
6 import org.seasar.framework.exception.IORuntimeException;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class QueryStringBuilder {
25
26
27
28
29 private StringBuilder sb = new StringBuilder();
30
31
32
33
34 private String encode = "UTF-8";
35
36
37
38
39
40
41 public void setEncode(final String encode) {
42 this.encode = encode;
43 }
44
45
46
47
48
49
50
51
52
53 public void addParam(final String name, final Object value) {
54 if (value != null && value.getClass().isArray()) {
55 final Object[] values = (Object[]) value;
56 for (final Object v : values) {
57 appendParams(name, v);
58 }
59 } else {
60 appendParams(name, value);
61 }
62 }
63
64
65
66
67 @Override
68 public String toString() {
69 return sb.toString();
70 }
71
72
73
74
75
76
77
78
79
80 private void appendParams(final String name, final Object value) {
81 if (sb.length() > 0) {
82 sb.append("&");
83 }
84 try {
85 sb.append(URLEncoder.encode(name, encode));
86 sb.append("=");
87 if (value != null) {
88 sb.append(URLEncoder.encode(value.toString(), encode));
89 }
90 } catch (final UnsupportedEncodingException e) {
91 throw new IORuntimeException(e);
92 }
93 }
94 }