1 23 package org.infoglue.deliver.portal.information; 24 25 import java.util.Iterator ; 26 import java.util.Map ; 27 28 import javax.portlet.PortletMode; 29 import javax.portlet.WindowState; 30 31 import org.apache.pluto.om.window.PortletWindow; 32 import org.apache.pluto.services.information.PortletURLProvider; 33 import org.infoglue.deliver.portal.PortalControlURL; 34 35 40 public class PortletURLProviderIG implements PortletURLProvider { 41 45 private DynamicInformationProviderIG provider; 46 private PortletWindow portletWindow; 47 private PortletMode mode; 48 private WindowState state; 49 private boolean action; 50 private boolean secure; 51 private boolean clearParameters; 52 private Map parameters; 53 54 public PortletURLProviderIG( 55 DynamicInformationProviderIG provider, 56 PortletWindow portletWindow) { 57 this.provider = provider; 58 this.portletWindow = portletWindow; 59 } 60 61 63 public void setPortletMode(PortletMode mode) { 64 this.mode = mode; 65 } 66 67 public void setWindowState(WindowState state) { 68 this.state = state; 69 } 70 71 public void setAction() { 72 action = true; 73 } 74 75 public void setSecure() { 76 secure = true; 77 } 78 79 public void clearParameters() { 80 clearParameters = true; 81 } 82 83 public void setParameters(Map parameters) { 84 this.parameters = parameters; 85 } 86 87 public String toString() { 88 PortalControlURL url = provider.getPortalURL(); 89 90 if (mode != null) { 91 url.setPortletMode(portletWindow, mode); 92 } 93 if (state != null) { 94 url.setPortletWindowState(portletWindow, state); 95 } 96 97 if (clearParameters) { 98 url.clearRenderParameters(portletWindow); 99 } 100 101 106 if (!url.isTargeted()) { 108 Map params = url.getQueryParameterMap(); 109 for (Iterator it = params.keySet().iterator(); it.hasNext();) { 110 String name = (String ) it.next(); 111 String [] values = (String []) params.get(name); 112 url.setPathParameter(PortalControlURL.IG + name, values); 113 } 114 } 115 116 url.clearActionParameter(); 118 if (action) { 119 url.setActionParameter(portletWindow); 120 } else { 121 url.setPortletId(portletWindow); 122 } 123 124 url.clearQueryParameters(); 125 126 if (parameters != null) { 127 Iterator names = parameters.keySet().iterator(); 128 while (names.hasNext()) { 129 String name = (String ) names.next(); 130 Object value = parameters.get(name); 131 String [] values = value instanceof String ? new String [] {(String ) value } 132 : (String []) value; 133 if (action) { 134 url.setQueryParameter(portletWindow, name, values); 135 } else { 136 url.setRenderParameter(portletWindow, name, values); 137 } 138 } 139 } 140 String str = url.toString(); 141 return str; 143 } 144 145 } 146 | Popular Tags |