1
22
23 package com.liferay.portlet;
24
25 import com.liferay.portal.kernel.portlet.PortletURLWrapper;
26 import com.liferay.portal.kernel.util.StringMaker;
27 import com.liferay.portal.kernel.util.StringPool;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.util.PortalUtil;
30
31 import java.util.HashMap;
32 import java.util.Iterator;
33 import java.util.List;
34 import java.util.Map;
35
36 import javax.portlet.PortletURL;
37
38 import org.springframework.web.util.HtmlUtils;
39
40
46 public class MultiPortletURL extends PortletURLWrapper {
47
48 public MultiPortletURL(PortletURL portletURL) {
49 super(portletURL);
50 }
51
52 public void addPortletParameters(String portletId, Map parameters) {
53 if (Validator.isNotNull(portletId)) {
54 _portletsParams.put(portletId, parameters);
55 }
56 }
57
58 public String toString() {
59 String url = super.toString();
60
61 if (Validator.isNull(url)) {
62 return url;
63 }
64 else {
65 StringMaker sm = new StringMaker(url);
66
67 if (!url.endsWith(StringPool.AMPERSAND)) {
68 sm.append(StringPool.AMPERSAND);
69 }
70
71 String suffix = StringPool.BLANK;
72
73 int pos = url.lastIndexOf(StringPool.POUND);
74
75 if (pos >= 0) {
76 suffix = url.substring(pos);
77
78 sm.delete(pos, sm.length());
79 }
80
81 Iterator itr1 = _portletsParams.keySet().iterator();
82
83 while (itr1.hasNext()) {
84 String portletId = (String)itr1.next();
85
86 String namespace = PortalUtil.getPortletNamespace(portletId);
87
88 Map parameters = (Map)_portletsParams.get(portletId);
89
90 Iterator itr2 = parameters.keySet().iterator();
91
92 while (itr2.hasNext()) {
93 String name = (String)itr2.next();
94
95 List values = (List)parameters.get(name);
96
97 for (int i = 0; i < values.size(); i++) {
98 String value = (String)values.get(i);
99
100 sm.append(namespace);
101 sm.append(name);
102 sm.append(StringPool.EQUAL);
103 sm.append(HtmlUtils.htmlEscape(value));
104 sm.append(StringPool.AMPERSAND);
105 }
106 }
107 }
108
109 return sm.toString() + suffix;
110 }
111 }
112
113 private Map _portletsParams = new HashMap();
114
115 }