diff --git a/.project b/.project index 5dbe300..13d6430 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - vre-members + join-vre vre-members project diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 9dc9986..4bb1323 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,10 +4,7 @@ - - uses - - + diff --git a/VreMembersTest-dev.launch b/JoinVRETest-dev.launch similarity index 100% rename from VreMembersTest-dev.launch rename to JoinVRETest-dev.launch diff --git a/VreMembersTest-prod.launch b/JoinVRETest-prod.launch similarity index 100% rename from VreMembersTest-prod.launch rename to JoinVRETest-prod.launch diff --git a/distro/MAINTAINERS b/distro/MAINTAINERS index 680cebb..55570e5 100644 --- a/distro/MAINTAINERS +++ b/distro/MAINTAINERS @@ -4,3 +4,5 @@ Mantainers * Massimiliano Assante (massimiliano.assante@isti.cnr.it), CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo". +* Luca Frosini (luca.frosini@isti.cnr.it), CNR Pisa, + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo". diff --git a/distro/README b/distro/README index 0aad29e..5a1f3bb 100644 --- a/distro/README +++ b/distro/README @@ -6,7 +6,8 @@ context of the iMarine project (www.i-marine.eu), under the 1st call of FP7 IST Authors ------- -Massimiliano Assante +Massimiliano Assante +Luca Frosini * Version and Release Date ------------------------ @@ -20,7 +21,7 @@ Description Download information -------------------- Source code is available from SVN: -https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/notifications +{$scm} Binaries can be downloaded from: http://software.d4science.research-infrastructures.eu/ diff --git a/distro/changelog.xml b/distro/changelog.xml index 8ce33ec..0464c76 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,11 +1,6 @@ - - Added Client scope handler, to set the scope from the client - and help preventing the browser back button cache problem - - + First Release diff --git a/distro/profile.xml b/distro/profile.xml index ee9da4e..6f24ea7 100644 --- a/distro/profile.xml +++ b/distro/profile.xml @@ -3,7 +3,7 @@ Service - gCube VRE Members Portlet + gCube Join VRE Portlet PortletUser ${artifactId} ${version} diff --git a/pom.xml b/pom.xml index 9b62f30..2b79aae 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.gcube.portlets.user - vre-members + join-vre war 1.0.1-SNAPSHOT gCube VRE Members Portlet @@ -49,12 +49,14 @@ com.google.gwt gwt-user + 2.7.0 provided com.google.gwt gwt-servlet - provided + 2.7.0 + compile org.gcube.portlets.user diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/JoinService.java b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinService.java new file mode 100644 index 0000000..e5417f3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinService.java @@ -0,0 +1,20 @@ +package org.gcube.portlets.user.joinvre.client; + +import java.util.ArrayList; + +import org.gcube.portlets.user.vremembers.shared.VRE; + +import com.google.gwt.user.client.rpc.RemoteService; +import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; + +/** + * The client side stub for the RPC service. + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + */ +@RemoteServiceRelativePath("memberservice") +public interface JoinService extends RemoteService { + + ArrayList getVREs(); + +} diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/JoinServiceAsync.java b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinServiceAsync.java new file mode 100644 index 0000000..ee72792 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinServiceAsync.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.joinvre.client; + +import java.util.ArrayList; + +import org.gcube.portlets.user.vremembers.shared.VRE; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + */ +public interface JoinServiceAsync { + + void getVREs(AsyncCallback> callback); +} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/VreMembers.java b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java similarity index 61% rename from src/main/java/org/gcube/portlets/user/vremembers/client/VreMembers.java rename to src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java index b504227..c2bccd2 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/VreMembers.java +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java @@ -1,7 +1,7 @@ -package org.gcube.portlets.user.vremembers.client; +package org.gcube.portlets.user.joinvre.client; import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper; -import org.gcube.portlets.user.vremembers.client.panels.VREMembersPanel; +import org.gcube.portlets.user.joinvre.client.panels.JoinVREPanel; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window.Location; @@ -10,14 +10,18 @@ import com.google.gwt.user.client.ui.RootPanel; /** * Entry point classes define onModuleLoad(). + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ */ -public class VreMembers implements EntryPoint { +public class JoinVRE implements EntryPoint { public void onModuleLoad() { + ClientScopeHelper.getService().setScope(Location.getHref(), new AsyncCallback() { @Override public void onSuccess(Boolean result) { - RootPanel.get("VRE-Members-Container").add(new VREMembersPanel()); + // TODO + RootPanel.get("JoinVRE-Container").add(new JoinVREPanel()); } @Override public void onFailure(Throwable caught) { diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java b/src/main/java/org/gcube/portlets/user/joinvre/client/panels/JoinVREPanel.java similarity index 66% rename from src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java rename to src/main/java/org/gcube/portlets/user/joinvre/client/panels/JoinVREPanel.java index 664eaab..68fce98 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/panels/VREMembersPanel.java +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/panels/JoinVREPanel.java @@ -1,16 +1,15 @@ -package org.gcube.portlets.user.vremembers.client.panels; +package org.gcube.portlets.user.joinvre.client.panels; import java.util.ArrayList; -import org.gcube.portlets.user.vremembers.client.MembersService; -import org.gcube.portlets.user.vremembers.client.MembersServiceAsync; -import org.gcube.portlets.user.vremembers.client.ui.DisplayBadge; -import org.gcube.portlets.user.vremembers.shared.BelongingUser; +import org.gcube.portlets.user.joinvre.client.JoinService; +import org.gcube.portlets.user.joinvre.client.JoinServiceAsync; +import org.gcube.portlets.user.joinvre.client.ui.DisplayVRE; +import org.gcube.portlets.user.vremembers.shared.VRE; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasAlignment; @@ -18,39 +17,49 @@ import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.VerticalPanel; -public class VREMembersPanel extends Composite { +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + */ +public class JoinVREPanel extends Composite { /** * Create a remote service proxy to talk to the server-side Greeting service. */ - private final MembersServiceAsync vreMemberService = GWT.create(MembersService.class); + private final JoinServiceAsync joinService = GWT.create(JoinService.class); public static final String loading = GWT.getModuleBaseURL() + "../images/members-loader.gif"; private Image loadingImage; private VerticalPanel mainPanel = new VerticalPanel(); - public VREMembersPanel() { + public JoinVREPanel() { super(); loadingImage = new Image(loading); mainPanel.add(loadingImage); showLoader(); - vreMemberService.getOrganizationUsers(new AsyncCallback>() { + joinService.getVREs(new AsyncCallback>() { @Override - public void onSuccess(ArrayList users) { + public void onSuccess(ArrayList vres) { mainPanel.clear(); mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT); mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP); - if (users == null || users.isEmpty()) { + + + // TODO + + if (vres == null || vres.isEmpty()) { mainPanel.add(new HTML("
Ops, something went wrong. Please reload this page.
")); } else { - Grid grid = new Grid(users.size()/4+1, 4); + Grid grid = new Grid(vres.size()/4+1, 4); mainPanel.add(grid); - for (int i = 0; i < users.size(); i++) { - grid.setWidget(i/4, i%4, new DisplayBadge(users.get(i))); + for (int i = 0; i < vres.size(); i++) { + grid.setWidget(i/4, i%4, new DisplayVRE(vres.get(i))); } } + + } @Override diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.java b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.java new file mode 100644 index 0000000..cb4c433 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.java @@ -0,0 +1,64 @@ +package org.gcube.portlets.user.joinvre.client.ui; + +import org.gcube.portlets.user.vremembers.shared.VRE; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Widget; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class DisplayVRE extends Composite { + + protected final static String HEADLINE_TEXT = "Professional Headline"; + protected final static String ISTI_TEXT = "Company"; + + private static DisplayBadgeUiBinder uiBinder = GWT.create(DisplayBadgeUiBinder.class); + + interface DisplayBadgeUiBinder extends UiBinder {} + + // TODO Change This + public static final String avatar_default = GWT.getModuleBaseURL() + "../images/Avatar_default.png"; + + public static final String loading = GWT.getModuleBaseURL() + "../images/avatarLoader.gif"; + + @UiField HTMLPanel mainPanel; + @UiField Image vreImage; + + @UiField AnchorElement vreName; + + public DisplayVRE(VRE vre) { + vreImage.setUrl(loading); + + initWidget(uiBinder.createAndBindUi(this)); + vreImage.setUrl(loading); + + vreImage.setUrl(vre.getImageURL()); + vreImage.setTitle(vre.getName()); + + vreName.setTitle(vre.getName()); + vreName.setHref(vre.getFriendlyURL()); + vreName.setInnerText(vre.getName()); + + } + + + + public void showError(String message) { + Window.alert("Failure: " + message); + vreImage.setSize("100px", "100px"); + vreImage.setUrl(avatar_default); + } + + + +} diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.ui.xml b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.ui.xml new file mode 100644 index 0000000..246f7cb --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/DisplayVRE.ui.xml @@ -0,0 +1,16 @@ + + + + +
+ +
+
+ +
+ + + \ No newline at end of file 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 deleted file mode 100644 index f8ebf2f..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersService.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.gcube.portlets.user.vremembers.client; - -import java.util.ArrayList; - -import org.gcube.portlets.user.vremembers.shared.BelongingUser; -import com.google.gwt.user.client.rpc.RemoteService; -import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; - -/** - * The client side stub for the RPC service. - */ -@RemoteServiceRelativePath("memberservice") -public interface MembersService extends RemoteService { - ArrayList getOrganizationUsers(); -} 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 deleted file mode 100644 index 297c5fa..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/MembersServiceAsync.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.gcube.portlets.user.vremembers.client; - -import java.util.ArrayList; - -import org.gcube.portlets.user.vremembers.shared.BelongingUser; - - -import com.google.gwt.user.client.rpc.AsyncCallback; - -public interface MembersServiceAsync { - - void getOrganizationUsers(AsyncCallback> callback); -} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.java b/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.java deleted file mode 100644 index b0cdd90..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.gcube.portlets.user.vremembers.client.ui; - -import org.gcube.portlets.user.vremembers.shared.BelongingUser; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.AnchorElement; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.Window.Location; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.HTMLPanel; -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.Widget; - -public class DisplayBadge extends Composite { - protected final static String HEADLINE_TEXT = "Professional Headline"; - protected final static String ISTI_TEXT = "Company"; - - private static DisplayBadgeUiBinder uiBinder = GWT.create(DisplayBadgeUiBinder.class); - - interface DisplayBadgeUiBinder extends UiBinder { - } - public static final String avatar_default = GWT.getModuleBaseURL() + "../images/Avatar_default.png"; - public static final String loading = GWT.getModuleBaseURL() + "../images/avatarLoader.gif"; - - @UiField HTMLPanel mainPanel; - @UiField Image avatarImage; - @UiField HTML userFullName; - - @UiField HTML headlineLabel; - @UiField HTML institutionLabel; - @UiField AnchorElement imageRedirect; - - - private BelongingUser myUserInfo; - - public DisplayBadge(BelongingUser user) { - initWidget(uiBinder.createAndBindUi(this)); - avatarImage.setUrl(loading); - mainPanel.addStyleName("profile-section"); - - myUserInfo = user; - avatarImage.getElement().getParentElement().setAttribute("href", myUserInfo.getAvatarId()); - avatarImage.setUrl(myUserInfo.getAvatarId()); - userFullName.setHTML(""+myUserInfo.getFullName()+""); - - - String head = (user.getHeadline() == null || user.getHeadline().compareTo("") == 0) ? "" : user.getHeadline(); - String isti = (user.getInstitution() == null || user.getInstitution().compareTo("") == 0) ? "" : user.getInstitution(); - headlineLabel.setText(head); - institutionLabel.setText(isti); - imageRedirect.setHref(user.getProfileLink()); - String title = "See profile of " + myUserInfo.getFullName(); - avatarImage.setTitle(title); - userFullName.setTitle(title); - } - - - - public void showError(String message) { - Window.alert("Failure: " + message); - avatarImage.setSize("100px", "100px"); - avatarImage.setUrl(avatar_default); - } - - - -} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.ui.xml b/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.ui.xml deleted file mode 100644 index ff54f99..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/client/ui/DisplayBadge.ui.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - -
- - - -
-
- - - -
-
-
\ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/vremembers/server/JoinServiceImpl.java b/src/main/java/org/gcube/portlets/user/vremembers/server/JoinServiceImpl.java new file mode 100644 index 0000000..7696c54 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/vremembers/server/JoinServiceImpl.java @@ -0,0 +1,91 @@ +package org.gcube.portlets.user.vremembers.server; + +import java.util.ArrayList; +import java.util.Collections; + +import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; +import org.gcube.portlets.user.joinvre.client.JoinService; +import org.gcube.portlets.user.vremembers.shared.UserBelonging; +import org.gcube.portlets.user.vremembers.shared.VRE; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gwt.user.server.rpc.RemoteServiceServlet; +import com.liferay.portal.service.UserLocalServiceUtil; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + */ +@SuppressWarnings("serial") +public class JoinServiceImpl extends RemoteServiceServlet implements JoinService { + private static final Logger _log = LoggerFactory.getLogger(JoinServiceImpl.class); + + /** + * the current ASLSession + * @return the session + */ + private ASLSession getASLSession() { + String sessionID = this.getThreadLocalRequest().getSession().getId(); + String user = (String) this.getThreadLocalRequest().getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE); + if (user == null) { + _log.warn("USER IS NULL setting test.user and Running OUTSIDE PORTAL"); + user = getDevelopmentUser(); + SessionManager.getInstance().getASLSession(sessionID, user).setScope("/gcube"); + } + return SessionManager.getInstance().getASLSession(sessionID, user); + } + + /** + * when packaging test will fail if the user is not set to test.user + * @return . + */ + public String getDevelopmentUser() { + String user = "test.user"; + return user; + } + + /** + * + * @return true if you're running into the portal, false if in development + */ + private boolean isWithinPortal() { + try { + UserLocalServiceUtil.getService(); + return true; + } catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) { + _log.trace("Development Mode ON"); + return false; + } + } + /** + * + * @param session the Asl Session + * @param withinPortal true when is on Liferay portal + * @return the users belonging to the current organization (scope) + */ + @Override + public ArrayList getVREs() { + ArrayList vres = new ArrayList(); + + try { + if (isWithinPortal()) { + + + } else { + vres.add(new VRE(0, "devsec", "devsec VRE", "", "", "/group/devsec", UserBelonging.NOT_BELONGING, false)); + vres.add(new VRE(0, "devVRE", "devVRE VRE", "", "", "/group/devVRE", UserBelonging.NOT_BELONGING, false)); + vres.add(new VRE(0, "devmode", "devmode VRE", "", "", "/group/devmode", UserBelonging.NOT_BELONGING, true)); + } + } catch (Exception e) { + _log.error("Error in server get all contacts ", e); + } + + // Ordering VREs by Name + Collections.sort(vres); + return vres; + } + +} 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 deleted file mode 100644 index 1955399..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/server/MembersServiceImpl.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.gcube.portlets.user.vremembers.server; - -import java.util.ArrayList; -import java.util.Collections; -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.scope.impl.ScopeBean; -import org.gcube.common.scope.impl.ScopeBean.Type; -import org.gcube.portal.custom.communitymanager.OrganizationsUtil; -import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; -import org.gcube.portal.databook.client.GCubeSocialNetworking; -import org.gcube.portlets.user.vremembers.client.MembersService; -import org.gcube.portlets.user.vremembers.shared.BelongingUser; -import org.gcube.vomanagement.usermanagement.GroupManager; -import org.gcube.vomanagement.usermanagement.UserManager; -import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager; -import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager; -import org.gcube.vomanagement.usermanagement.model.UserModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gwt.user.server.rpc.RemoteServiceServlet; -import com.liferay.portal.service.UserLocalServiceUtil; - -/** - * @author Massimiliano Assante, ISTI-CNR - */ -@SuppressWarnings("serial") -public class MembersServiceImpl extends RemoteServiceServlet implements MembersService { - private static final Logger _log = LoggerFactory.getLogger(MembersServiceImpl.class); - - /** - * the current ASLSession - * @return the session - */ - private ASLSession getASLSession() { - String sessionID = this.getThreadLocalRequest().getSession().getId(); - String user = (String) this.getThreadLocalRequest().getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE); - if (user == null) { - _log.warn("USER IS NULL setting test.user and Running OUTSIDE PORTAL"); - user = getDevelopmentUser(); - SessionManager.getInstance().getASLSession(sessionID, user).setScope("/gcube"); - } - return SessionManager.getInstance().getASLSession(sessionID, user); - } - /** - * when packaging test will fail if the user is not set to test.user - * @return . - */ - public String getDevelopmentUser() { - String user = "test.user"; - //user = "massimiliano.assante"; - return user; - } - /** - * - * @return true if you're running into the portal, false if in development - */ - private boolean isWithinPortal() { - try { - UserLocalServiceUtil.getService(); - return true; - } - catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) { - _log.trace("Development Mode ON"); - return false; - } - } - /** - * - * @param session the Asl Session - * @param withinPortal true when is on Liferay portal - * @return the users belonging to the current organization (scope) - */ - @Override - public ArrayList getOrganizationUsers() { - ArrayList portalUsers = new ArrayList(); - String scope = getASLSession().getScope(); - if (scope == null) - return portalUsers; - try { - if (isWithinPortal()) { - UserManager um = new LiferayUserManager(); - GroupManager gm = new LiferayGroupManager(); - ScopeBean sb = new ScopeBean(scope); - List users = null; - - if (sb.is(Type.INFRASTRUCTURE)) { - users = new ArrayList(); - return new ArrayList(); - } - else if (sb.is(Type.VRE)) { //must be in VRE - //get the name from the scope - String orgName = scope.substring(scope.lastIndexOf("/")+1, scope.length()); - //ask the users - users = um.listUsersByGroup(gm.getGroupId(orgName)); - } - else { - _log.error("Error, you must be in SCOPE VRE OR INFRASTURCTURE, you are in VO SCOPE returning no users"); - return portalUsers; - } - for (UserModel user : users) { - if (user.getScreenName().compareTo("test.user") != 0) { //skip test.user - String thumbnailURL = ""; - com.liferay.portal.model.User lifeUser = UserLocalServiceUtil.getUserByScreenName(OrganizationsUtil.getCompany().getCompanyId(), user.getScreenName()); - thumbnailURL = lifeUser.isMale() ? "/image/user_male_portrait?img_id="+lifeUser.getPortraitId() : "/image/user_female_portrait?img_id="+lifeUser.getPortraitId(); - portalUsers.add(new BelongingUser(user.getScreenName(), user.getFullname(), thumbnailURL, lifeUser.getJobTitle(), lifeUser.getOpenId(), getUserProfileLink(user.getScreenName() ),lifeUser.getPortraitId() != 0)); - } - } - - } - else { //test users - portalUsers.add(new BelongingUser("massimiliano.assante", "Test User #1", "1111", "headline", "isti", "",false)); - portalUsers.add(new BelongingUser("pino.assante", "Test Second User #2", "1111", "headline1", "istitution complex", "",false)); - portalUsers.add(new BelongingUser("pino.pino", "With Photo Third User", "1111", "hard worker", "acme Ltd", "",true)); - portalUsers.add(new BelongingUser("giorgi.giorgi", "Test Fourth User", "1111", "hard worker 3", "isti3", "",false)); - portalUsers.add(new BelongingUser("pinetti.giorgi", "Test Fifth User", "1111", "hard worker 4", "super acme Inc.", "",false)); - portalUsers.add(new BelongingUser("massimiliano.pinetti", "Test Sixth User", "1111", "hard worker the5th", "istiw", "", false)); - portalUsers.add(new BelongingUser("giorgi.assante", "Ninth Testing User", "1111", "hard worker the9th", "istiw9", "",false)); - portalUsers.add(new BelongingUser("massimiliano.giorgi", "Eighth Testing User", "1111", "hard worker the8th", "istiw56", "", false)); - portalUsers.add(new BelongingUser("giogio.giorgi", "Seventh Test User", "1111", "hard worker the7th", "istiw7", "", false)); - portalUsers.add(new BelongingUser("pino.pinetti", "Tenth Testing User Photoed", "1111", "hard worker the10th", "istiw777", "",true)); - } - } catch (Exception e) { - _log.error("Error in server get all contacts ", e); - } - //users having photo go first - Collections.sort(portalUsers); - return portalUsers; - } - - private String getUserProfileLink(String username) { - return (username.compareTo(getASLSession().getUsername()) != 0) ? - "profile?"+ new String(Base64.encodeBase64(GCubeSocialNetworking.USER_PROFILE_OID.getBytes()))+"="+new String(Base64.encodeBase64(username.getBytes())) - : GCubeSocialNetworking.USER_PROFILE_LINK; - } - - - -} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/server/portlet/VREMembersPortlet.java b/src/main/java/org/gcube/portlets/user/vremembers/server/portlet/JoinVREPortlet.java similarity index 84% rename from src/main/java/org/gcube/portlets/user/vremembers/server/portlet/VREMembersPortlet.java rename to src/main/java/org/gcube/portlets/user/vremembers/server/portlet/JoinVREPortlet.java index 34e18ab..0a6220b 100644 --- a/src/main/java/org/gcube/portlets/user/vremembers/server/portlet/VREMembersPortlet.java +++ b/src/main/java/org/gcube/portlets/user/vremembers/server/portlet/JoinVREPortlet.java @@ -13,14 +13,15 @@ import javax.portlet.PortletRequestDispatcher; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; /** - * * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ */ - public class VREMembersPortlet extends GenericPortlet { + public class JoinVREPortlet extends GenericPortlet { + public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { response.setContentType("text/html"); ScopeHelper.setContext(request); - PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/VREMembers_view.jsp"); + PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/JoinVRE_view.jsp"); dispatcher.include(request, response); } diff --git a/src/main/java/org/gcube/portlets/user/vremembers/shared/BelongingUser.java b/src/main/java/org/gcube/portlets/user/vremembers/shared/BelongingUser.java deleted file mode 100644 index 5befd0f..0000000 --- a/src/main/java/org/gcube/portlets/user/vremembers/shared/BelongingUser.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.gcube.portlets.user.vremembers.shared; - -import java.io.Serializable; -import java.util.Comparator; - -@SuppressWarnings("serial") -public class BelongingUser implements Serializable, Comparable { - private String username; - private String fullName; - private String avatarId; - private String headline; - private String institution; - private String profileLink; - private boolean hasPhoto; - - public BelongingUser(String username, String fullName, String avatarId, - String headline, String institution, String profileLink, boolean hasPhoto) { - super(); - this.username = username; - this.fullName = fullName; - this.avatarId = avatarId; - this.headline = headline; - this.institution = institution; - this.hasPhoto = hasPhoto; - this.profileLink = profileLink; - - } - - public BelongingUser() { - super(); - } - - - public String getUsername() { - return username; - } - - - public void setUsername(String username) { - this.username = username; - } - - - public String getFullName() { - return fullName; - } - - - public void setFullName(String fullName) { - this.fullName = fullName; - } - - - public String getAvatarId() { - return avatarId; - } - - - public void setAvatarId(String avatarId) { - this.avatarId = avatarId; - } - - - public String getHeadline() { - return headline; - } - - - public void setHeadline(String headline) { - this.headline = headline; - } - - - public String getInstitution() { - return institution; - } - - - public void setInstitution(String institution) { - this.institution = institution; - } - - - public boolean hasPhoto() { - return hasPhoto; - } - - public void setHasPhoto(boolean hasPhoto) { - this.hasPhoto = hasPhoto; - } - - - - public String getProfileLink() { - return profileLink; - } - - public void setProfileLink(String profileLink) { - this.profileLink = profileLink; - } - - - @Override - public int compareTo(BelongingUser o) { - if (this.hasHeadline() && !o.hasHeadline()) { - return -1; - } - if (!this.hasHeadline() && o.hasHeadline()) - return 1; - - if ( (this.hasHeadline() && o.hasHeadline()) || ((!this.hasHeadline() && !o.hasHeadline())) ) { - if (this.hasPhoto && !o.hasPhoto) - return -1; - if (!this.hasPhoto && o.hasPhoto) - return 1; - return 0; - } - return 0; - } - - - private boolean hasHeadline() { - return (headline != null && headline.compareTo("") != 0); - } - -} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/shared/ResearchEnvironment.java b/src/main/java/org/gcube/portlets/user/vremembers/shared/ResearchEnvironment.java new file mode 100644 index 0000000..5b7801c --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/vremembers/shared/ResearchEnvironment.java @@ -0,0 +1,84 @@ +package org.gcube.portlets.user.vremembers.shared; + +import java.io.Serializable; +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + */ +@SuppressWarnings("serial") +public class ResearchEnvironment implements Serializable { + private String name; + + private String description; + + private String imageURL; + + private String groupName; + + private String friendlyURL; + + private UserBelonging userBelonging; + + public ResearchEnvironment() { + super(); + } + + public ResearchEnvironment(String name, String description, + String imageURL, String groupName, String friendlyURL, + UserBelonging userBelonging) { + super(); + this.name = name; + this.description = description; + this.imageURL = imageURL; + this.groupName = groupName; + this.friendlyURL = friendlyURL; + this.userBelonging = userBelonging; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getImageURL() { + return imageURL; + } + + public void setImageURL(String imageURL) { + this.imageURL = imageURL; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getFriendlyURL() { + return friendlyURL; + } + + public void setFriendlyURL(String friendlyURL) { + this.friendlyURL = friendlyURL; + } + + public UserBelonging getUserBelonging() { + return userBelonging; + } + + public void setUserBelonging(UserBelonging userBelonging) { + this.userBelonging = userBelonging; + } +} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/shared/UserBelonging.java b/src/main/java/org/gcube/portlets/user/vremembers/shared/UserBelonging.java new file mode 100644 index 0000000..9da0b08 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/vremembers/shared/UserBelonging.java @@ -0,0 +1,8 @@ +package org.gcube.portlets.user.vremembers.shared; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + */ +public enum UserBelonging { + BELONGING, NOT_BELONGING, PENDING +} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/shared/VO.java b/src/main/java/org/gcube/portlets/user/vremembers/shared/VO.java new file mode 100644 index 0000000..ed2473b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/vremembers/shared/VO.java @@ -0,0 +1,68 @@ +package org.gcube.portlets.user.vremembers.shared; + +import java.io.Serializable; +import java.util.ArrayList; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + */ +@SuppressWarnings("serial") +public class VO extends ResearchEnvironment implements Comparable, Serializable{ + + private boolean isRoot; + + private ArrayList vres = new ArrayList(); + /** + * + */ + public VO() { + super(); + } + /** + * + * @param voName . + * @param description . + * @param imageURL . + * @param vomsGroupName . + * @param friendlyURL . + * @param userBelonging . + * @param isRoot . + * @param vres . + */ + public VO(String voName, String description, String imageURL, + String vomsGroupName, String friendlyURL, + UserBelonging userBelonging, boolean isRoot, ArrayList vres) { + super(voName, description, imageURL, vomsGroupName, friendlyURL, userBelonging); + this.isRoot = isRoot; + this.vres = vres; + } + + public boolean isRoot() { + return isRoot; + } + public void setRoot(boolean isRoot) { + this.isRoot = isRoot; + } + public ArrayList getVres() { + return vres; + } + public void setVres(ArrayList vres) { + this.vres = vres; + } + /** + * + * @param toAdd + */ + public void addVRE(VRE toAdd) { + if (vres == null) + vres = new ArrayList(); + vres.add(toAdd); + } + /** + * compare the number of vres + */ + public int compareTo(VO voToCompare) { + return (this.vres.size() >= voToCompare.getVres().size()) ? 1 : -1; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/vremembers/shared/VRE.java b/src/main/java/org/gcube/portlets/user/vremembers/shared/VRE.java new file mode 100644 index 0000000..9078034 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/vremembers/shared/VRE.java @@ -0,0 +1,64 @@ +package org.gcube.portlets.user.vremembers.shared; + +import java.io.Serializable; + +/** + * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + */ +@SuppressWarnings("serial") +public class VRE extends ResearchEnvironment implements Serializable, Comparable { + private boolean uponRequest; + private long id; + + public VRE() { + super(); + this.uponRequest = true; + } + + /** + * + * @param vreName + * @param description + * @param imageURL + * @param vomsGroupName + * @param friendlyURL + * @param userBelonging + */ + public VRE(long id, String vreName, String description, String imageURL, + String vomsGroupName, String friendlyURL, + UserBelonging userBelonging, boolean uponRequest) { + super(vreName, description, imageURL, vomsGroupName, friendlyURL, userBelonging); + this.uponRequest = uponRequest; + this.id = id; + } + + public boolean isUponRequest() { + return uponRequest; + } + public void setUponRequest(boolean uponRequest) { + this.uponRequest = uponRequest; + } + + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + @Override + public String toString() { + return "VRE [getName()=" + getName() + + ", uponRequest=" + uponRequest+"]"; + } + + @Override + public int compareTo(VRE o) { + return this.getName().compareTo(o.getName()); + } + + +} diff --git a/src/main/resources/org/gcube/portlets/user/vremembers/VreMembers.gwt.xml b/src/main/resources/org/gcube/portlets/user/joinvre/JoinVRE.gwt.xml similarity index 82% rename from src/main/resources/org/gcube/portlets/user/vremembers/VreMembers.gwt.xml rename to src/main/resources/org/gcube/portlets/user/joinvre/JoinVRE.gwt.xml index 21b714d..fb6cd85 100644 --- a/src/main/resources/org/gcube/portlets/user/vremembers/VreMembers.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/joinvre/JoinVRE.gwt.xml @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ - + diff --git a/src/main/webapp/VreMembers.css b/src/main/webapp/JoinVRE.css similarity index 74% rename from src/main/webapp/VreMembers.css rename to src/main/webapp/JoinVRE.css index ae3f270..76fff5d 100644 --- a/src/main/webapp/VreMembers.css +++ b/src/main/webapp/JoinVRE.css @@ -1,5 +1,4 @@ .framed { - font-family: 'Helvetica Neue', Arial, sans-serif; width: 200px; height: 290px; padding: 10px; @@ -12,7 +11,6 @@ } .frame { - font-family: 'Helvetica Neue', Arial, sans-serif; padding: 10px; margin: 10px; background: #FFF; @@ -22,31 +20,30 @@ border: 1px solid #DBDBDB; } -.user-photo { +.vreImage { padding: 5px; border: 1px solid #E6E6E6; width: 180px; height: 175px; } -.user-details { - padding: 5px; -} - -.photo-details { +.vreImageDetails { width: 200px; text-align: center; } +.vreDetails { + padding: 5px; +} -a.person-link { +a.vreName { color: #444444; font-size: 15px; font-weight: bold; line-height: 18px; } -a.person-link,a.person-link:visited { +a.vreName, a.vreName:visited { cursor: pointer; cursor: hand; font-size: 16x; @@ -54,20 +51,15 @@ a.person-link,a.person-link:visited { color: #3B5998; } -a.person-link:hover { +a.vreName:hover { opacity: 0.8; font-size: 16x; text-decoration: underline; } -.headline { +.vreDescription { font-size: 13px; color: #444444; line-height: 16px; -} - -.institution { - font-size: 11px; - color: #444444; } \ No newline at end of file diff --git a/src/main/webapp/VreMembers.html b/src/main/webapp/JoinVRE.html similarity index 85% rename from src/main/webapp/VreMembers.html rename to src/main/webapp/JoinVRE.html index 3b022b7..5cf3817 100644 --- a/src/main/webapp/VreMembers.html +++ b/src/main/webapp/JoinVRE.html @@ -12,11 +12,11 @@ - + Vre Members Project - + @@ -27,7 +27,7 @@ Your web browser must have JavaScript enabled in order for this application to display correctly. -
+
diff --git a/src/main/webapp/WEB-INF/jsp/VREMembers_view.jsp b/src/main/webapp/WEB-INF/jsp/VREMembers_view.jsp index d8d3d73..f101d86 100644 --- a/src/main/webapp/WEB-INF/jsp/VREMembers_view.jsp +++ b/src/main/webapp/WEB-INF/jsp/VREMembers_view.jsp @@ -2,5 +2,5 @@ <%@page pageEncoding="UTF-8"%> - -
+ +
diff --git a/src/main/webapp/WEB-INF/liferay-display.xml b/src/main/webapp/WEB-INF/liferay-display.xml index 01ea2ae..6cd22d5 100644 --- a/src/main/webapp/WEB-INF/liferay-display.xml +++ b/src/main/webapp/WEB-INF/liferay-display.xml @@ -3,6 +3,6 @@ - + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-plugin-package.properties b/src/main/webapp/WEB-INF/liferay-plugin-package.properties index 6263ab8..02d126d 100644 --- a/src/main/webapp/WEB-INF/liferay-plugin-package.properties +++ b/src/main/webapp/WEB-INF/liferay-plugin-package.properties @@ -1,4 +1,4 @@ -name=VREMembers +name=JoinVRE module-group-id=liferay module-incremental-version=1 tags= diff --git a/src/main/webapp/WEB-INF/liferay-portlet.xml b/src/main/webapp/WEB-INF/liferay-portlet.xml index ac028cd..e1f52ed 100644 --- a/src/main/webapp/WEB-INF/liferay-portlet.xml +++ b/src/main/webapp/WEB-INF/liferay-portlet.xml @@ -3,11 +3,11 @@ - VREMembers + JoinVRE false false false - /VreMembers.css + /JoinVRE.css administrator diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml index f19846c..0805583 100644 --- a/src/main/webapp/WEB-INF/portlet.xml +++ b/src/main/webapp/WEB-INF/portlet.xml @@ -7,9 +7,9 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" > - VREMembers - VRE Members - org.gcube.portlets.user.vremembers.server.portlet.VREMembersPortlet + JoinVRE + Join VRE + org.gcube.portlets.user.joinvre.server.portlet.JoinVREPortlet view-jsp /view.jsp @@ -19,9 +19,9 @@ text/html - VRE Members - VRE Members - VRE Members + Join VRE + Join VRE + Join VRE administrator diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 7a098ab..13b3c16 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -8,7 +8,7 @@ greetServlet - org.gcube.portlets.user.vremembers.server.MembersServiceImpl + org.gcube.portlets.user.joinvre.server.JoinServiceImpl @@ -18,17 +18,17 @@ greetServlet - /vremembers/memberservice + /joinvre/joinservice scopeService - /vremembers/scopeService + /joinvre/scopeService - VreMembers.html + JoinVRE.html diff --git a/src/test/resources/org/gcube/portlets/user/vremembers/VreMembersJUnit.gwt.xml b/src/test/resources/org/gcube/portlets/user/joinvre/VreMembersJUnit.gwt.xml similarity index 100% rename from src/test/resources/org/gcube/portlets/user/vremembers/VreMembersJUnit.gwt.xml rename to src/test/resources/org/gcube/portlets/user/joinvre/VreMembersJUnit.gwt.xml