From 26aac386fe61736cc5c044313516b1794822d10e Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 24 Mar 2016 11:19:28 +0000 Subject: [PATCH] added getLandingPage path method git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portal/portal-manager@126225 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 34 +++++++++- .../common/portal/GCubePortalConstants.java | 6 ++ .../gcube/common/portal/PortalContext.java | 64 ++++++++++++++++++- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 694cb41..22ea4c7 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ distro 1.7 1.7 - + 6.2.5 UTF-8 UTF-8 @@ -33,9 +33,39 @@ javax.servlet servlet-api - 2.5 + 2.4 provided + + javax.portlet + portlet-api + 2.0 + provided + + + com.liferay.portal + portal-service + ${liferay.version} + provided + + + com.liferay.portal + util-java + ${liferay.version} + provided + + + com.liferay.portal + util-bridges + ${liferay.version} + provided + + + com.liferay.portal + util-taglib + ${liferay.version} + provided + org.slf4j slf4j-log4j12 diff --git a/src/main/java/org/gcube/common/portal/GCubePortalConstants.java b/src/main/java/org/gcube/common/portal/GCubePortalConstants.java index 4fa9069..6e0f5f7 100644 --- a/src/main/java/org/gcube/common/portal/GCubePortalConstants.java +++ b/src/main/java/org/gcube/common/portal/GCubePortalConstants.java @@ -1,7 +1,13 @@ package org.gcube.common.portal; +import com.liferay.portal.kernel.util.PropsKeys; +import com.liferay.portal.kernel.util.PropsUtil; + public class GCubePortalConstants { public static final String PREFIX_GROUP_URL = "/group"; + public static final String GUEST_GROUP_FRIENDLY_URL = "/guest"; + public static final String PRIVATE_GROUP_SERVLET_MAPPING = PropsUtil.get(PropsKeys.LAYOUT_FRIENDLY_URL_PRIVATE_GROUP_SERVLET_MAPPING); + public static final String INFRASTRUCTURE_NAME = "infrastructure"; public static final String SCOPES = "scopes"; diff --git a/src/main/java/org/gcube/common/portal/PortalContext.java b/src/main/java/org/gcube/common/portal/PortalContext.java index c649d07..ba359b6 100644 --- a/src/main/java/org/gcube/common/portal/PortalContext.java +++ b/src/main/java/org/gcube/common/portal/PortalContext.java @@ -12,6 +12,19 @@ import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.util.StringBundler; +import com.liferay.portal.kernel.util.StringPool; +import com.liferay.portal.model.Group; +import com.liferay.portal.model.User; +import com.liferay.portal.model.VirtualHost; +import com.liferay.portal.service.GroupLocalServiceUtil; +import com.liferay.portal.service.LayoutSetLocalServiceUtil; +import com.liferay.portal.service.UserLocalServiceUtil; +import com.liferay.portal.service.VirtualHostLocalServiceUtil; +import com.liferay.portal.util.PortalUtil; + @@ -24,6 +37,9 @@ import org.slf4j.LoggerFactory; */ public class PortalContext { private static final Logger _log = LoggerFactory.getLogger(PortalContext.class); + public static final String PORTAL_CONTEXT = PortalUtil.getPathContext(); + + private static PortalContext singleton = new PortalContext(); private String infra; @@ -111,7 +127,53 @@ public class PortalContext { toReturn += (httpServletRequest.getServerPort() == 80) ? "" : ":"+httpServletRequest.getServerPort() ; return toReturn; } - + /** + * + * @param request + * @return the landing page path of the current Site e.g. "/group/i-marine" + * @throws PortalException + * @throws SystemException + */ + public String getSiteLandingPagePath(final HttpServletRequest request) throws PortalException, SystemException { + String sitePath = StringPool.BLANK; + String serverName = request.getServerName(); + _log.debug("currentHost is " + serverName); + Group site = null; + List vHosts = VirtualHostLocalServiceUtil.getVirtualHosts(0, VirtualHostLocalServiceUtil.getVirtualHostsCount()); + for (VirtualHost virtualHost : vHosts) { + _log.debug("Found " + virtualHost.getHostname()); + if (virtualHost.getHostname().compareTo("localhost") != 0 && + virtualHost.getLayoutSetId() != 0 && + virtualHost.getHostname().compareTo(serverName) == 0) { + long layoutSetId = virtualHost.getLayoutSetId(); + site = LayoutSetLocalServiceUtil.getLayoutSet(layoutSetId).getGroup(); + _log.debug("Found match! Your site is " + site.getName()); + } + } + if (site.getPrivateLayoutsPageCount() > 0) { + sitePath = getGroupFriendlyURL(request, site); + } else { + _log.debug(site.getName() + " site doesn't have any private page. Default landing page will be used"); + } + return sitePath; + } + /** + * @param request + * @param currentGroup + * @param isPrivate + * @param isUser + * @return + * @throws PortalException + * @throws SystemException + */ + private static String getGroupFriendlyURL(final HttpServletRequest request, final Group currentGroup) throws PortalException, SystemException { + String friendlyURL = GCubePortalConstants.PRIVATE_GROUP_SERVLET_MAPPING; + StringBundler sb = new StringBundler(); + sb.append(PORTAL_CONTEXT); + sb.append(friendlyURL); + sb.append(currentGroup.getFriendlyURL()); + return sb.toString(); + } /** * read the infrastructure gateway name from a property file and returns it */