• CRM项目总结-封装PortletURLUtil


    package com.ebizwindow.crm.utils;
    
    import java.security.Key;
    import java.util.List;
    
    import javax.portlet.ActionRequest;
    import javax.portlet.PortletMode;
    import javax.portlet.PortletModeException;
    import javax.portlet.PortletRequest;
    import javax.portlet.PortletURL;
    import javax.portlet.WindowState;
    import javax.portlet.WindowStateException;
    import javax.servlet.http.HttpServletRequest;
    
    import com.ebizwindow.crm.constants.PortletIDs;
    import com.liferay.portal.kernel.exception.PortalException;
    import com.liferay.portal.kernel.exception.SystemException;
    import com.liferay.portal.kernel.log.Log;
    import com.liferay.portal.kernel.log.LogFactoryUtil;
    import com.liferay.portal.kernel.util.HttpUtil;
    import com.liferay.portal.kernel.util.StringPool;
    import com.liferay.portal.kernel.util.StringUtil;
    import com.liferay.portal.kernel.util.UnicodeProperties;
    import com.liferay.portal.kernel.util.WebKeys;
    import com.liferay.portal.model.Layout;
    import com.liferay.portal.model.PortletConstants;
    import com.liferay.portal.model.User;
    import com.liferay.portal.service.LayoutLocalServiceUtil;
    import com.liferay.portal.service.UserLocalServiceUtil;
    import com.liferay.portal.theme.ThemeDisplay;
    import com.liferay.portal.util.PortalUtil;
    import com.liferay.portlet.PortletURLFactoryUtil;
    import com.liferay.util.Encryptor;
    import com.liferay.util.EncryptorException;
    
    /**
     * @author Ivan Li
     * 
     */
    public class PortletURLUtil {
    
    	private static Log _log = LogFactoryUtil.getLog(PortletURLUtil.class);
    
    	public static String getPortletURLWithinCurrentPage(
    			PortletRequest portletRequest, String portletId, int lifeCycle,
    			String windowState, String portletMode) throws PortalException,
    			SystemException {
    		String portletURL = null;
    
    		HttpServletRequest request = PortalUtil
    				.getHttpServletRequest(portletRequest);
    
    		ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
    
    		String targetPortletId = null;
    		String rootPortletId = PortletConstants.getRootPortletId(portletId);
    
    		Layout layout = themeDisplay.getLayout();
    		if (layout != null) {
    
    			UnicodeProperties typeSettings = layout.getTypeSettingsProperties();
    
    			labelBreak: for (String key : typeSettings.keySet()) {
    				String value = typeSettings.get(key);
    				int idx = value.indexOf(rootPortletId);
    				if (idx >= 0) {
    					String[] portletIds = StringUtil.split(value);
    					for (String id : portletIds) {
    						if (id.contains(rootPortletId)) {
    							targetPortletId = id;
    							break labelBreak;
    						}
    					}
    				}
    			}
    
    			StringBuilder sb = new StringBuilder();
    			String layoutURL = PortalUtil.getLayoutFriendlyURL(layout,
    					themeDisplay);
    
    			sb.append(layoutURL);
    			sb.append(StringPool.QUESTION).append("p_p_id")
    					.append(StringPool.EQUAL).append(targetPortletId);
    			sb.append(StringPool.AMPERSAND).append("p_p_lifecycle")
    					.append(StringPool.EQUAL).append(lifeCycle);
    			sb.append(StringPool.AMPERSAND).append("p_p_state")
    					.append(StringPool.EQUAL).append(windowState);
    			sb.append(StringPool.AMPERSAND).append("p_p_mode")
    					.append(StringPool.EQUAL).append(portletMode);
    
    			portletURL = sb.toString();
    
    		} else {
    			_log.debug("Get portlet URL by portletId within the current page!");
    		}
    		return portletURL;
    	}
    
    	public static String getPortletURLByUserId(PortletRequest portletRequest,
    			long userId, String portletId) throws PortalException,
    			SystemException {
    		User user = UserLocalServiceUtil.getUserById(userId);
    		long groupId = user.getGroup().getGroupId();
    
    		return getPortletURLByGroupId(portletRequest, groupId, portletId, 1,
    				WindowState.MAXIMIZED.toString(), PortletMode.VIEW.toString());
    	}
    
    	public static String getPortletURLByGroupId(PortletRequest portletRequest,
    			long groupId, String portletId, int lifeCycle, String state,
    			String mode) throws SystemException, PortalException {
    		String portletURL = null;
    		Layout selectedLayout = null;
    		String targetPortletId = null;
    		String rootPortletId = PortletConstants.getRootPortletId(portletId);
    		List<Layout> layouts = LayoutLocalServiceUtil
    				.getLayouts(groupId, false);
    		if (layouts != null) {
    			labelBreak: for (Layout layout : layouts) {
    				UnicodeProperties typeSettings = layout
    						.getTypeSettingsProperties();
    				for (String key : typeSettings.keySet()) {
    					String value = typeSettings.get(key);
    					int idx = value.indexOf(rootPortletId);
    					if (idx >= 0) {
    						String[] portletIds = StringUtil.split(value);
    						for (String id : portletIds) {
    							if (id.contains(rootPortletId)) {
    								selectedLayout = layout;
    								targetPortletId = id;
    								break labelBreak;
    							}
    						}
    					}
    				}
    			}
    		}
    
    		if (selectedLayout != null) {
    			StringBuilder sb = new StringBuilder();
    			// HttpServletRequest request =
    			// PortalUtil.getHttpServletRequest(portletRequest);
    			ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest
    					.getAttribute(WebKeys.THEME_DISPLAY);
    			String layoutURL = PortalUtil.getLayoutFriendlyURL(selectedLayout,
    					themeDisplay);
    
    			sb.append(layoutURL);
    
    			// sb.append(StringPool.QUESTION).append("p_auth").append(StringPool.EQUAL);
    			// sb.append(processValue(null, AuthTokenUtil.getToken(request)));
    
    			sb.append(StringPool.QUESTION).append("p_p_id")
    					.append(StringPool.EQUAL).append(targetPortletId);
    			sb.append(StringPool.AMPERSAND).append("p_p_lifecycle")
    					.append(StringPool.EQUAL).append(lifeCycle);
    			sb.append(StringPool.AMPERSAND).append("p_p_state")
    					.append(StringPool.EQUAL).append(state);
    			sb.append(StringPool.AMPERSAND).append("p_p_mode")
    					.append(StringPool.EQUAL).append(mode);
    
    			portletURL = sb.toString();
    		} else {
    			_log.debug("Get Portlet URL By UserId and portletId with empty result!");
    		}
    
    		return portletURL;
    	}
    
    	public static PortletURL getPortletURL(ActionRequest actionRequest)
    			throws PortalException, SystemException {
    		long groupId = PortalUtil.getScopeGroupId(actionRequest);
    		String portletId = PortalUtil.getPortletId(actionRequest);
    		long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);
    		PortletURL redirectURL = PortletURLFactoryUtil.create(
    				PortalUtil.getHttpServletRequest(actionRequest), portletId,
    				plid, PortletRequest.ACTION_PHASE);
    		try {
    			redirectURL.setPortletMode(actionRequest.getPortletMode());
    			redirectURL.setWindowState(actionRequest.getWindowState());
    		} catch (PortletModeException e) {
    			_log.error(e);
    		} catch (WindowStateException e) {
    			_log.error(e);
    		}
    		return redirectURL;
    	}
    
    	public static PortletURL getPortletURL(PortletRequest actionRequest)
    			throws PortalException, SystemException {
    		long groupId = PortalUtil.getScopeGroupId(actionRequest);
    		String portletId = PortalUtil.getPortletId(actionRequest);
    		long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);
    		PortletURL redirectURL = PortletURLFactoryUtil.create(
    				PortalUtil.getHttpServletRequest(actionRequest), portletId,
    				plid, PortletRequest.ACTION_PHASE);
    		try {
    			redirectURL.setPortletMode(actionRequest.getPortletMode());
    			redirectURL.setWindowState(actionRequest.getWindowState());
    		} catch (PortletModeException e) {
    			_log.error(e);
    		} catch (WindowStateException e) {
    			_log.error(e);
    		}
    		return redirectURL;
    	}
    
    	public static PortletURL getPortletURLInLayout(ActionRequest actionRequest) {
    		String portletId = PortalUtil.getPortletId(actionRequest);
    
    		ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest
    				.getAttribute(WebKeys.THEME_DISPLAY);
    		Layout layout = themeDisplay.getLayout();
    		long plid = layout.getPlid();
    
    		PortletURL redirectURL = PortletURLFactoryUtil.create(
    				PortalUtil.getHttpServletRequest(actionRequest), portletId,
    				plid, PortletRequest.ACTION_PHASE);
    		try {
    			redirectURL.setPortletMode(actionRequest.getPortletMode());
    			redirectURL.setWindowState(actionRequest.getWindowState());
    		} catch (PortletModeException e) {
    			_log.error(e);
    		} catch (WindowStateException e) {
    			_log.error(e);
    		}
    
    		_log.debug("redirectURL : " + redirectURL.toString());
    		return redirectURL;
    	}
    
    	public static String getObjDetailURL(PortletRequest portletRequest,
    			String portletId, long entityId) throws SystemException,
    			PortalException {
    		long groupId = PortalUtil.getScopeGroupId(portletRequest);
    		int lifeCycle = 1;
    		String windowState = WindowState.NORMAL.toString();
    		String portletMode = PortletMode.VIEW.toString();
    		String detailURL = PortletURLUtil.getPortletURLByGroupId(
    				portletRequest, groupId, portletId, lifeCycle, windowState,
    				portletMode);
    		if (portletId.equals(PortletIDs.CUSTOMER_DETAIL)) {
    			detailURL = detailURL + "&customerId=" + entityId;
    		} else if (portletId.equals(PortletIDs.CONTACT_DETAIL)) {
    			detailURL = detailURL + "&contactId=" + entityId;
    		} else if (portletId.equals(PortletIDs.MARKET_DETAIL)) {
    			detailURL = detailURL + "&marketId=" + entityId;
    		} else if (portletId.equals(PortletIDs.CLUE_DETAIL)) {
    			detailURL = detailURL + "&clueId=" + entityId;
    		} else if (portletId.equals(PortletIDs.OPPORTUNITY_DETAIL)) {
    			detailURL = detailURL + "&opportunityId=" + entityId;
    		} else if (portletId.equals(PortletIDs.QUOTATION_DETAIL)) {
    			detailURL = detailURL + "&quotationId=" + entityId;
    		} else if (portletId.equals(PortletIDs.CONTRACT_DETAIL)) {
    			detailURL = detailURL + "&contractId=" + entityId;
    		} else if (portletId.equals(PortletIDs.ACTIVITY_DETAIL)) {
    			detailURL = detailURL + "&activityId=" + entityId;
    		} else if (portletId.equals(PortletIDs.PRODUCT)) {
    			detailURL = detailURL + "&productIds" + entityId;
    		} else if (portletId.equals(PortletIDs.ORDER_DETAIL)) {
    			detailURL = detailURL + "&orderId=" + entityId;
    		}
    		detailURL = detailURL + "&operation=load";
    		return detailURL;
    	}
    
    	@SuppressWarnings("unused")
    	private static String processValue(Key key, String value) {
    		if (key == null) {
    			return HttpUtil.encodeURL(value);
    		} else {
    			try {
    				return HttpUtil.encodeURL(Encryptor.encrypt(key, value));
    			} catch (EncryptorException ee) {
    				return value;
    			}
    		}
    	}
    	
    	public static String getReturnUrl(ActionRequest actionRequest, String portletId, String layoutId)
    			throws PortalException, SystemException {
    		long groupId = PortalUtil.getScopeGroupId(actionRequest);
    		int lifeCycle = 0;
    		String portletMode = PortletMode.VIEW.toString();
    		String windowState = WindowState.NORMAL.toString();
    		String url = getPortletURLByGroupId(actionRequest, groupId, portletId, lifeCycle, windowState, portletMode);
    		StringBuffer sb = new StringBuffer(url);
    		sb.append("&layoutId=").append(layoutId)
    			.append("&fileLarge=fileLarge");
    		return sb.toString();
    	}
    
    }
    

      

  • 相关阅读:
    上传几张智能开关产品图片
    python+ueditor+七牛云存储整合
    Shell脚本检查memcache进程并自己主动重新启动
    Cocos2dx 3.x创建Layer的步骤
    HDU 5009 Paint Pearls (动态规划)
    (转)Spring4.2.5+Hibernate4.3.11+Struts2.3.24整合开发
    (转)Spring提供的CharacterEncoding和OpenSessionInView功能
    (转)为Spring集成的Hibernate配置二级缓存
    (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二
    (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • 原文地址:https://www.cnblogs.com/airycode/p/4819421.html
Copyright © 2020-2023  润新知