From 0a8221c38c35cb603a014cd0b6c29e54d962f0c3 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Mon, 3 Oct 2016 15:44:42 +0000 Subject: [PATCH] Added possibility to display VRE Groups and VRE Managers git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/vre-members@132487 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 16 +++-- .project | 1 + .settings/org.eclipse.wst.common.component | 19 +++--- distro/changelog.xml | 10 ++- pom.xml | 2 +- .../vremembers/client/MembersService.java | 1 + .../client/MembersServiceAsync.java | 2 + .../client/panels/VREMembersPanel.java | 64 +++++++++++++------ .../vremembers/server/MembersServiceImpl.java | 55 ++++++++++++++-- 9 files changed, 130 insertions(+), 40 deletions(-) diff --git a/.classpath b/.classpath index e72fb11..7bc3933 100644 --- a/.classpath +++ b/.classpath @@ -1,19 +1,27 @@ - + - + + + + + - + + + + + @@ -31,5 +39,5 @@ - + diff --git a/.project b/.project index 5dbe300..73819aa 100644 --- a/.project +++ b/.project @@ -55,5 +55,6 @@ org.eclipse.wst.common.project.facet.core.nature org.eclipse.wst.jsdt.core.jsNature com.google.gwt.eclipse.core.gwtNature + com.liferay.ide.core.liferayNature diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 2618502..3bfa2c7 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,16 +1,15 @@ - - + - - - + + + + + - + uses - - + + diff --git a/distro/changelog.xml b/distro/changelog.xml index fbc9d9b..62e47ac 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,11 +1,17 @@ - + + Added possibility to display VRE Groups and VRE Managers + + Added Capability to display tagged VRE Groups Added Client scope handler, to set the scope from the client - and help preventing the browser back button cache problem + and help preventing the browser back button cache problem + diff --git a/pom.xml b/pom.xml index d92b7f5..56293fc 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ org.gcube.portlets.user vre-members war - 2.0.0-SNAPSHOT + 2.1.0-SNAPSHOT gCube VRE Members Portlet VRE Members display the members of the current VRE diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersService.java b/src/main/java/org/gcube/portlets/user/vremembers/client/MembersService.java index 849ec61..6e4e0b8 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersService.java +++ b/src/main/java/org/gcube/portlets/user/vremembers/client/MembersService.java @@ -15,4 +15,5 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; public interface MembersService extends RemoteService { ArrayList getSiteUsers(); VREGroup getVREGroupUsers(String teamId); + VREGroup getVREManagers(); } diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersServiceAsync.java b/src/main/java/org/gcube/portlets/user/vremembers/client/MembersServiceAsync.java index b6d36bd..17a9256 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/vremembers/client/MembersServiceAsync.java @@ -12,4 +12,6 @@ public interface MembersServiceAsync { void getSiteUsers(AsyncCallback> callback); void getVREGroupUsers(String teamId, AsyncCallback callback); + + void getVREManagers(AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java b/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java index 1f5d639..0cb5c76 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java +++ b/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java @@ -25,26 +25,53 @@ public class VREMembersPanel extends FlowPanel { //if showing a VRE Group if (getGroupShowId() != null) { String teamId = Encoder.decode(getGroupShowId()); - vreMemberService.getVREGroupUsers(teamId, new AsyncCallback() { + if (teamId.compareTo("-100")==0) { + vreMemberService.getVREManagers(new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - add(new HTML("
" + - "Sorry, looks like something is broken with the server connection
" + - "Please check your connection and try refresh this page.
")); - } + @Override + public void onFailure(Throwable caught) { + add(new HTML("
" + + "Sorry, looks like something is broken with the server connection
" + + "Please check your connection and try refresh this page.
")); + } - @Override - public void onSuccess(VREGroup group) { - clear(); - PageHeader toAdd = new PageHeader(); - toAdd.setText(group.getName()); - toAdd.setSubtext(group.getDescription()); - add(toAdd); - showMembers(group.getUsers()); - } - }); - + @Override + public void onSuccess(VREGroup group) { + clear(); + PageHeader toAdd = new PageHeader(); + toAdd.setText("VRE managers"); + toAdd.setSubtext("The moderators of this VRE"); + add(toAdd); + if (group.getUsers().size() > 0) + showMembers(group.getUsers()); + else + add(new HTML("
There are no VRE Managers in this VRE, this is weird please report this issue.
")); + } + }); + } else { + vreMemberService.getVREGroupUsers(teamId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + add(new HTML("
" + + "Sorry, looks like something is broken with the server connection
" + + "Please check your connection and try refresh this page.
")); + } + + @Override + public void onSuccess(VREGroup group) { + clear(); + PageHeader toAdd = new PageHeader(); + toAdd.setText(group.getName()); + toAdd.setSubtext(group.getDescription()); + add(toAdd); + if (group.getUsers().size() > 0) + showMembers(group.getUsers()); + else + add(new HTML("
This group has no members, VRE Managers can define VRE groups and associate members to these groups.
")); + } + }); + } } else { //show all the VRE Members vreMemberService.getSiteUsers(new AsyncCallback>() { @Override @@ -80,4 +107,5 @@ public class VREMembersPanel extends FlowPanel { private String getGroupShowId() { return Window.Location.getParameter(Encoder.encode(GCubeSocialNetworking.GROUP_MEMBERS_OID)); } + } diff --git a/src/main/java/org/gcube/portlets/user/vremembers/server/MembersServiceImpl.java b/src/main/java/org/gcube/portlets/user/vremembers/server/MembersServiceImpl.java index 5d0112b..e0b70d0 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/server/MembersServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/vremembers/server/MembersServiceImpl.java @@ -7,7 +7,6 @@ import java.util.List; import org.apache.commons.codec.binary.Base64; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; -import org.gcube.common.portal.GCubePortalConstants; import org.gcube.common.scope.impl.ScopeBean; import org.gcube.common.scope.impl.ScopeBean.Type; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; @@ -25,6 +24,7 @@ import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager; import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; import org.gcube.vomanagement.usermanagement.model.GCubeGroup; +import org.gcube.vomanagement.usermanagement.model.GCubeRole; import org.gcube.vomanagement.usermanagement.model.GCubeTeam; import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; @@ -79,7 +79,7 @@ public class MembersServiceImpl extends RemoteServiceServlet implements MembersS } @Override public VREGroup getVREGroupUsers(String groupId) { - String scope = getASLSession().getScope(); + _log.info("Asking for members of team with id = " + groupId ); ArrayList groupUsers = new ArrayList(); long teamId = -1; try{ @@ -87,8 +87,7 @@ public class MembersServiceImpl extends RemoteServiceServlet implements MembersS } catch (NumberFormatException e) { _log.error("The groupId is not a valid long: " + groupId); return null; - } - _log.info("Asking for members of team with id = " + groupId + " in scope: " + scope); + } GCubeTeam team2Return = null; GCubeGroup parent = null; if (isWithinPortal()) { @@ -112,12 +111,35 @@ public class MembersServiceImpl extends RemoteServiceServlet implements MembersS } } } else { //developmennt mode - _log.info("Returning test team members with id = " + groupId + " in scope: " + scope); + _log.info("Returning test team members with id = " + groupId ); return new VREGroup(teamId, "TestTeam Name", "parent VRE", "Test Team Description", getTestUsers()); } return new VREGroup(teamId, team2Return.getTeamName(), parent.getGroupName(), team2Return.getDescription(), groupUsers); } + @Override + public VREGroup getVREManagers() { + ArrayList vreManagers = new ArrayList(); + long currGroupId = getCurrentGroupID(); + try { + long roleId = new LiferayRoleManager().getRole(GCubeRole.VRE_MANAGER_LABEL, currGroupId).getRoleId(); + for (GCubeUser user : new LiferayUserManager().listUsersByGroupAndRole(currGroupId, roleId)) { + if (user.getUsername().compareTo("test.user") != 0) { //skip test.user + vreManagers.add( + new BelongingUser( + user.getUsername(), + user.getFullname(), + user.getUserAvatarURL(), + user.getJobTitle(), + user.getLocation_industry(), getUserProfileLink(user.getUsername() ), true)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return new VREGroup(-100,"", "", "", vreManagers); + } + /** * * @param session the Asl Session @@ -175,6 +197,10 @@ public class MembersServiceImpl extends RemoteServiceServlet implements MembersS return portalUsers; } + + + + private String getUserProfileLink(String username) { return "profile?"+ new String(Base64.encodeBase64(GCubeSocialNetworking.USER_PROFILE_OID.getBytes()))+"="+new String(Base64.encodeBase64(username.getBytes())); } @@ -193,5 +219,24 @@ public class MembersServiceImpl extends RemoteServiceServlet implements MembersS portalUsers.add(new BelongingUser("pino.pinetti", "Tenth Testing User Photoed", "http://placehold.it/200x200", "hard worker the10th", "istiw777", "",true)); return portalUsers; } + /** + * Get the current group ID + * + * @return the current group ID or null if an exception is thrown + * @throws Exception + * @throws CurrentGroupRetrievalException + */ + private long getCurrentGroupID(){ + GroupManager groupM = new LiferayGroupManager(); + ASLSession session = getASLSession(); + _log.debug("The current group NAME is --> " + session.getGroupName()); + try { + return groupM.getGroupId(session.getGroupName()); + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + }