Shows only the virtual groups available in the Site it is deployed on
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/my-vres@131354 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
781d933483
commit
5d4b49b43a
10
.classpath
10
.classpath
|
@ -1,12 +1,16 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/my-vres-2.0.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/my-vres-2.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry including="**/*.java" kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
|
<classpathentry excluding="**" kind="src" output="target/my-vres-2.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
|
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
||||||
|
@ -34,5 +38,5 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/my-vres-2.0.1-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/my-vres-2.1.0-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
1
.project
1
.project
|
@ -55,5 +55,6 @@
|
||||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||||
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
|
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
|
||||||
|
<nature>com.liferay.ide.core.liferayNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
|
||||||
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||||
<dependent-module archiveName="gcube-widgets-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-widgets/gcube-widgets">
|
<dependent-module archiveName="gcube-widgets-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-widgets/gcube-widgets">
|
||||||
<dependency-type>uses</dependency-type>
|
<dependency-type>uses</dependency-type>
|
||||||
</dependent-module>
|
</dependent-module>
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<ReleaseNotes>
|
<ReleaseNotes>
|
||||||
|
<Changeset component="org.gcube.portlet.user.my-vres.2-1-0" date="2016-09-12">
|
||||||
|
<Change>Shows only the virtual groups available in the Site it is deployed on</Change>
|
||||||
|
</Changeset>
|
||||||
<Changeset component="org.gcube.portlet.user.my-vres.2-0-1" date="2016-04-02">
|
<Changeset component="org.gcube.portlet.user.my-vres.2-0-1" date="2016-04-02">
|
||||||
<Change>Ported to Liferay 6.2</Change>
|
<Change>Ported to Liferay 6.2</Change>
|
||||||
</Changeset>
|
</Changeset>
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -13,7 +13,7 @@
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>my-vres</artifactId>
|
<artifactId>my-vres</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.1.0-SNAPSHOT</version>
|
||||||
<name>My VREs Portlet</name>
|
<name>My VREs Portlet</name>
|
||||||
<description>
|
<description>
|
||||||
gCube My VREs Portlet shows only the VO and VREs a user is member of, divided by category.
|
gCube My VREs Portlet shows only the VO and VREs a user is member of, divided by category.
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.Collections;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
|
@ -14,11 +15,13 @@ import org.gcube.common.portal.PortalContext;
|
||||||
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
||||||
import org.gcube.portlet.user.my_vres.client.MyVREsService;
|
import org.gcube.portlet.user.my_vres.client.MyVREsService;
|
||||||
import org.gcube.portlet.user.my_vres.shared.UserBelonging;
|
import org.gcube.portlet.user.my_vres.shared.UserBelonging;
|
||||||
import org.gcube.portlet.user.my_vres.shared.VO;
|
|
||||||
import org.gcube.portlet.user.my_vres.shared.VRE;
|
import org.gcube.portlet.user.my_vres.shared.VRE;
|
||||||
import org.gcube.vomanagement.usermanagement.GroupManager;
|
import org.gcube.vomanagement.usermanagement.GroupManager;
|
||||||
|
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
|
||||||
|
import org.gcube.vomanagement.usermanagement.exception.VirtualGroupNotExistingException;
|
||||||
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
|
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
|
||||||
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
|
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
|
||||||
|
import org.gcube.vomanagement.usermanagement.model.CustomAttributeKeys;
|
||||||
import org.gcube.vomanagement.usermanagement.model.GCubeGroup;
|
import org.gcube.vomanagement.usermanagement.model.GCubeGroup;
|
||||||
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
||||||
import org.gcube.vomanagement.usermanagement.model.VirtualGroup;
|
import org.gcube.vomanagement.usermanagement.model.VirtualGroup;
|
||||||
|
@ -26,7 +29,18 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException;
|
||||||
|
import com.liferay.portal.kernel.exception.SystemException;
|
||||||
|
import com.liferay.portal.model.Group;
|
||||||
|
import com.liferay.portal.model.VirtualHost;
|
||||||
|
import com.liferay.portal.security.auth.PrincipalThreadLocal;
|
||||||
|
import com.liferay.portal.security.permission.PermissionChecker;
|
||||||
|
import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
|
||||||
|
import com.liferay.portal.security.permission.PermissionThreadLocal;
|
||||||
|
import com.liferay.portal.service.GroupLocalServiceUtil;
|
||||||
|
import com.liferay.portal.service.LayoutSetLocalServiceUtil;
|
||||||
import com.liferay.portal.service.UserLocalServiceUtil;
|
import com.liferay.portal.service.UserLocalServiceUtil;
|
||||||
|
import com.liferay.portal.service.VirtualHostLocalServiceUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The server side implementation of the RPC service.
|
* The server side implementation of the RPC service.
|
||||||
|
@ -93,15 +107,17 @@ public class MyVREsServiceImpl extends RemoteServiceServlet implements MyVREsSer
|
||||||
GroupManager gm = new LiferayGroupManager();
|
GroupManager gm = new LiferayGroupManager();
|
||||||
|
|
||||||
LinkedHashMap<String, ArrayList<VRE>> toReturn = new LinkedHashMap<String, ArrayList<VRE>>();
|
LinkedHashMap<String, ArrayList<VRE>> toReturn = new LinkedHashMap<String, ArrayList<VRE>>();
|
||||||
//before iterating the actual groups create the virtualGroups in the correct order
|
|
||||||
List<VirtualGroup> virtualGroups = gm.getVirtualGroups();
|
long currentSiteGroupId = getSiteFromServletRequest(getThreadLocalRequest()).getGroupId();
|
||||||
for (VirtualGroup vg : virtualGroups) {
|
List<VirtualGroup> currentSiteVGroups = getVirtualGroups(currentSiteGroupId);
|
||||||
|
for (VirtualGroup vg : currentSiteVGroups) {
|
||||||
String gName = vg.getName();
|
String gName = vg.getName();
|
||||||
ArrayList<VRE> toCreate = new ArrayList<VRE>();
|
ArrayList<VRE> toCreate = new ArrayList<VRE>();
|
||||||
String cat = gName;
|
String cat = gName;
|
||||||
toReturn.put(cat, toCreate);
|
toReturn.put(cat, toCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GCubeGroup rootGroupVO = gm.getRootVO();
|
GCubeGroup rootGroupVO = gm.getRootVO();
|
||||||
try {
|
try {
|
||||||
_log.debug("root: " + rootGroupVO.getGroupName() );
|
_log.debug("root: " + rootGroupVO.getGroupName() );
|
||||||
|
@ -242,6 +258,72 @@ public class MyVREsServiceImpl extends RemoteServiceServlet implements MyVREsSer
|
||||||
|
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* read the list of virtual groups the current site (i-marine, services etc. ) should show up
|
||||||
|
* @param actualGroupId
|
||||||
|
* @return he list of virtual groups the current site (i-marine, services etc. ) should show up
|
||||||
|
* @throws GroupRetrievalFault
|
||||||
|
* @throws VirtualGroupNotExistingException
|
||||||
|
*/
|
||||||
|
private List<VirtualGroup> getVirtualGroups(long actualGroupId) throws GroupRetrievalFault, VirtualGroupNotExistingException {
|
||||||
|
List<VirtualGroup> toReturn = new ArrayList<VirtualGroup>();
|
||||||
|
try {
|
||||||
|
long userId = LiferayUserManager.getAdmin().getUserId();
|
||||||
|
PrincipalThreadLocal.setName(userId);
|
||||||
|
PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(UserLocalServiceUtil.getUser(userId));
|
||||||
|
PermissionThreadLocal.setPermissionChecker(permissionChecker);
|
||||||
|
Group site = GroupLocalServiceUtil.getGroup(actualGroupId);
|
||||||
|
_log.debug("Set Thread Permission done, getVirtual Group of " + site.getName());
|
||||||
|
if (site.getExpandoBridge().getAttribute(CustomAttributeKeys.VIRTUAL_GROUP.getKeyName()) == null || site.getExpandoBridge().getAttribute(CustomAttributeKeys.VIRTUAL_GROUP.getKeyName()).equals("")) {
|
||||||
|
String warningMessage = String.format("Attribute %s not initialized.", CustomAttributeKeys.VIRTUAL_GROUP.getKeyName());
|
||||||
|
_log.warn(warningMessage);
|
||||||
|
throw new VirtualGroupNotExistingException(warningMessage);
|
||||||
|
} else {
|
||||||
|
String[] values = (String[]) site.getExpandoBridge().getAttribute(CustomAttributeKeys.VIRTUAL_GROUP.getKeyName());
|
||||||
|
VirtualGroup toAdd = new VirtualGroup();
|
||||||
|
if (values != null && values.length > 0) {
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
toAdd = new VirtualGroup();
|
||||||
|
String[] splits = values[i].split("\\|");
|
||||||
|
toAdd.setName(splits[0]);
|
||||||
|
toAdd.setDescription(splits[1]);
|
||||||
|
toReturn.add(toAdd);
|
||||||
|
_log.debug("VirtualGroup selected found for " + site.getName() + " -> " + toAdd.getName());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toAdd.setName("NoVirtualGroupAssigned");
|
||||||
|
toAdd.setDescription("NoVirtualGroupDescription");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return the current Group instance based on the request
|
||||||
|
* @throws PortalException
|
||||||
|
* @throws SystemException
|
||||||
|
*/
|
||||||
|
private Group getSiteFromServletRequest(final HttpServletRequest request) throws PortalException, SystemException {
|
||||||
|
String serverName = request.getServerName();
|
||||||
|
_log.debug("currentHost is " + serverName);
|
||||||
|
Group site = null;
|
||||||
|
List<VirtualHost> 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());
|
||||||
|
return site;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue