From 66930d30f3da00e858ebabf699a8a0d6be04aabd Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 23 Jun 2014 15:02:57 +0000 Subject: [PATCH] enhancements on groups integration git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@97637 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/WorkspaceSharingController.java | 2 +- .../WorkspaceSmartSharingController.java | 2 +- .../client/view/sharing/SmartShare.java | 2 +- .../server/WorkspaceSharingServiceImpl.java | 14 +- .../notifications/NotificationsProducer.java | 230 ++++++++++-------- .../notifications/NotificationsUtil.java | 14 +- .../server/util/WsUtil.java | 4 +- 7 files changed, 157 insertions(+), 111 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingController.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingController.java index fd43f74..eb74fe5 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingController.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingController.java @@ -43,7 +43,7 @@ public class WorkspaceSharingController { * @param if true, only owner can share, otherwise an alert with an error message is displayed * @param defaultPermission ACL_TYPE default permission, if is null default ACL_TYPE is loaded from server * - * base constructor by default do not retrieve groups + * base constructor by default does not retrieve groups */ public WorkspaceSharingController(String itemId, boolean shareOnlyOwner, ACL_TYPE defaultPermission) { this(itemId, shareOnlyOwner, defaultPermission, false, false); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSmartSharingController.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSmartSharingController.java index c104f0f..bedf7b6 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSmartSharingController.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSmartSharingController.java @@ -42,7 +42,7 @@ public class WorkspaceSmartSharingController { * @param file - a fake file to display the field name ("filename") into dialog * @param listAlreadySharedContact - list of already shared contacts to show into dialog * - * base constructor by default do not retrieve groups + * base constructor by default does not retrieve groups * */ public WorkspaceSmartSharingController(FileModel file, List listAlreadySharedContact) { diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/SmartShare.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/SmartShare.java index 44d4a61..d50dfa5 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/SmartShare.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/SmartShare.java @@ -47,7 +47,7 @@ public class SmartShare extends Dialog implements SmartDialogInterface{ private boolean readGroupsFromPortal; /** - * base constructor by default do not retrieve groups + * SmartShare base constructor by default does not retrieve groupss */ public SmartShare() { this(false, false); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java index f1ddf7d..0768877 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java @@ -359,14 +359,19 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements if(created){ NotificationsProducer np = getNotificationProducer(); - if(!sourceFolderIsShared) //if source folder is not already shared - np.notifyFolderSharing(listContacts, sharedFolder); - else{ + if(!sourceFolderIsShared) {//if source folder is not already shared + + //TODO ADD NOTIFICATION +// np.notifyFolderSharing(listContacts, sharedFolder); + + }else{ /*System.out.println("SHARED CONTACS: "); printContacts(listSharedContact); System.out.println("NEW CONTACS: "); printContacts(listContacts);*/ - np.notifyAddedUsersToSharing(listSharedContact, listContacts, sharedFolder); + + //TODO ADD NOTIFICATION +// np.notifyAddedUsersToSharing(listSharedContact, listContacts, sharedFolder); } } @@ -463,6 +468,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements for (VO vo : vos) { System.out.println("vo name "+vo.getName()); } + } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java index 2814890..5490455 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java @@ -1,21 +1,20 @@ -/** - * - */ package org.gcube.portlets.widgets.workspacesharingwidget.server.notifications; +import java.util.ArrayList; import java.util.List; +import org.apache.log4j.Logger; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; import org.gcube.applicationsupportlayer.social.NotificationsManager; -import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder; +import org.gcube.common.homelibrary.home.exceptions.InternalErrorException; import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder; import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.portlets.widgets.workspacesharingwidget.server.util.DiffereceBeetweenInfoContactModel; +import org.gcube.portlets.widgets.workspacesharingwidget.server.util.UserUtil; import org.gcube.portlets.widgets.workspacesharingwidget.server.util.WsUtil; import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @@ -26,7 +25,7 @@ public class NotificationsProducer { protected ScopeBean scope; - protected static Logger logger = LoggerFactory.getLogger(NotificationsProducer.class); + protected static Logger logger = Logger.getLogger(NotificationsProducer.class); protected NotificationsManager notificationsMng; protected ASLSession aslSession; @@ -55,25 +54,26 @@ public class NotificationsProducer { return aslSession; } + /** * Runs a new thread to notify the contacts passed in input * @param listContacts * @param sharedFolder */ - public void notifyFolderSharing(final List listContacts, final WorkspaceFolder sharedFolder) { -/* + public void notifyFolderSharing(final List listContacts, final WorkspaceSharedFolder sharedFolder) { + new Thread(){ @Override public void run() { - logger.info("Send notifies folder sharing is running..."); + logger.trace("Send notifies folder sharing is running..."); for (InfoContactModel infoContactModel : listContacts) { try{ //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification new share folder "+sharedFolder.getName()+" for user "+infoContactModel.getLogin()); + logger.trace("Sending notification new share folder "+sharedFolder.getName()+" for user "+infoContactModel.getLogin()); //DEBUG System.out.println("Sending notification new share folder "+sharedFolder.getName()+" for user "+infoContactModel.getLogin()); @@ -86,15 +86,15 @@ public class NotificationsProducer { } }catch (Exception e) { logger.error("An error occured in notifyFolderSharing ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies share folder is completed"); + logger.trace("notifies share folder is completed"); } }.start(); - */ + } @@ -106,17 +106,17 @@ public class NotificationsProducer { * @param sharedFolder */ public void notifyFolderRenamed(final List listSharedContact, final WorkspaceItem folderItem, final String itemOldName, final String itemNewName, final String idsharedFolder) { - /* + new Thread(){ @Override public void run() { - logger.info("Send notifies shared folder was renamed is running..."); + logger.trace("Send notifies shared folder was renamed is running..."); try { if(NotificationsUtil.checkIsRootFolderShared(folderItem.getId(), idsharedFolder)){ - logger.info("Notification isn't sent because the event is on root shared folder"); + logger.trace("Notification isn't sent because the event is on root shared folder"); return; } @@ -130,7 +130,7 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification share folder "+itemOldName+" was renamed as " + itemNewName+ "for user "+infoContactModel.getLogin()); + logger.trace("Sending notification share folder "+itemOldName+" was renamed as " + itemNewName+ "for user "+infoContactModel.getLogin()); //DEBUG System.out.println("Sending notification share folder "+itemOldName+" was renamed as " + itemNewName+ "for user "+infoContactModel.getLogin()); @@ -143,14 +143,15 @@ public class NotificationsProducer { } }catch (Exception e) { logger.error("An error occured in notifyFolderRenamed ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies share folder was renamed is completed"); + logger.trace("notifies share folder was renamed is completed"); } }.start(); - */ + + } @@ -159,41 +160,41 @@ public class NotificationsProducer { * @param listContacts * @param sharedFolder */ - public void notifyItemRenamed(final List listSharedContact, final String previousName, final WorkspaceItem item, final WorkspaceFolder sharedFolder) { -/* + public void notifyItemRenamed(final List listSharedContact, final String previousName, final WorkspaceItem item, final WorkspaceSharedFolder sharedFolder) { + new Thread(){ @Override public void run() { - logger.info("Send notifies shared item was updated is running..."); + logger.trace("Send notifies shared item was updated is running..."); for (InfoContactModel infoContactModel : listSharedContact) { try{ //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() + " updated item "+item.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() + " updated item "+item.getName()); //DEBUG System.out.println("Sending notification to user "+infoContactModel.getLogin() + " updated item "+item.getName()); // notificationsMng.notifyItemRenaming(infoContactModel.getLogin(), previousName, item, sharedFolder); - boolean notify = notificationsMng.notifyItemRenaming(infoContactModel.getLogin(), previousName, item); + boolean notify = notificationsMng.notifyItemRenaming(infoContactModel.getLogin(), previousName, item, sharedFolder); if(!notify) logger.error("An error occured when notify user: "+infoContactModel.getLogin()); } }catch (Exception e) { logger.error("An error occured in notifyItemUpdated ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies shared item was updated is completed"); + logger.trace("notifies shared item was updated is completed"); } }.start(); - */ + } @@ -205,7 +206,7 @@ public class NotificationsProducer { * @param sharedFolder - the shared folder */ public void notifyAddedUsersToSharing(final List listSharedContact, final List listSharingContact, final WorkspaceSharedFolder sharedFolder) { - /* + new Thread() { @Override public void run() { @@ -228,7 +229,7 @@ public class NotificationsProducer { try{ - logger.info("Sending notification to user "+contact.getLogin()+", added user "+ infoContactModel.getLogin() +" to share folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+contact.getLogin()+", added user "+ infoContactModel.getLogin() +" to share folder "+sharedFolder.getName()); //DEBUG // System.out.println("Sending notification added user "+ infoContactModel.getLogin() +" to share folder "+sharedFolder.getName() + " for user "+contact.getLogin()); @@ -240,7 +241,7 @@ public class NotificationsProducer { }catch (Exception e) { logger.error("An error occured in notifyFolderAddedUser ", e); - e.printStackTrace(); +// e.printStackTrace(); } } @@ -256,7 +257,7 @@ public class NotificationsProducer { try{ - logger.info("Sending notification to user "+contact.getLogin()+", added "+listLogins.size()+" users to share folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+contact.getLogin()+", added "+listLogins.size()+" users to share folder "+sharedFolder.getName()); //DEBUG // System.out.println("Sending notification added user "+ infoContactModel.getLogin() +" to share folder "+sharedFolder.getName() + " for user "+contact.getLogin()); @@ -268,7 +269,7 @@ public class NotificationsProducer { }catch (Exception e) { logger.error("An error occured in notifyFolderAddedUser ", e); - e.printStackTrace(); +// e.printStackTrace(); } } @@ -281,12 +282,12 @@ public class NotificationsProducer { }catch (Exception e) { logger.error("An error occured in notifyAddedUserToSharing ", e); - e.printStackTrace(); +// e.printStackTrace(); } } }.start(); - */ + } @@ -295,15 +296,15 @@ public class NotificationsProducer { * @param listContacts * @param unSharedFolder */ - public void notifyFolderUnSharing(final List listContacts, final WorkspaceFolder unSharedFolder) { -/* + public void notifyFolderUnSharing(final List listContacts, final WorkspaceSharedFolder unSharedFolder) { + new Thread() { @Override public void run() { // printContacts(listContacts); - logger.info("Send notifies folder un share is running..."); + logger.trace("Send notifies folder un share is running..."); for (InfoContactModel infoContactModel : listContacts) { try{ @@ -311,27 +312,26 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" un shared folder "+unSharedFolder.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" un shared folder "+unSharedFolder.getName()); //DEBUG - System.out.println("Sending notification to user "+infoContactModel.getLogin() +" un shared folder "+unSharedFolder.getName()); - - boolean notify = notificationsMng.notifyFolderRemovedUser(infoContactModel.getLogin(), unSharedFolder); +// System.out.println("Sending notification to user "+infoContactModel.getLogin() +" un shared folder "+unSharedFolder.getName()); + boolean notify = notificationsMng.notifyFolderRemovedUser(infoContactModel.getLogin(), (WorkspaceSharedFolder) unSharedFolder); if(!notify) logger.error("An error occured when notifies user: "+infoContactModel.getLogin()); } }catch (Exception e) { logger.error("An error occured in notifyFolderUnSharing ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies of un share notifications is completed"); + logger.trace("notifies of un share notifications is completed"); } }.start(); - */ + } @@ -341,14 +341,14 @@ public class NotificationsProducer { * @param listContacts * @param workspaceItem */ - public void notifyAddedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceFolder sharedFolder) { -/* + public void notifyAddedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) { + new Thread() { @Override public void run() { // printContacts(listContacts); - logger.info("Send notifies added item in sharedfolder is running..."); + logger.trace("Send notifies added item in sharedfolder is running..."); //DEBUG System.out.println("Send notifies added item in sharedfolder is running..."); @@ -359,7 +359,7 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" added item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" added item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); //DEBUG System.out.println("Sending notification to user "+infoContactModel.getLogin() +" added item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); @@ -372,24 +372,22 @@ public class NotificationsProducer { if(!notify){ logger.error("An error occured when notify user: "+infoContactModel.getLogin()); //DEBUG - System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); +// System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); } } }catch (Exception e) { logger.error("An error occured in notifyAddedItemToSharing ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies of added item in shared folder is completed"); + logger.trace("notifies of added item in shared folder is completed"); //DEBUG - System.out.println("notifies of added item in shared folder is completed"); +// System.out.println("notifies of added item in shared folder is completed"); } }.start(); - - */ } @@ -398,17 +396,17 @@ public class NotificationsProducer { * @param listContacts * @param workspaceItem */ - public void notifyUpdatedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceFolder sharedFolder) { -/* + public void notifyUpdatedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) { + new Thread() { @Override public void run() { // printContacts(listContacts); - logger.info("Send notifies updated item in shared folder is running..."); + logger.trace("Send notifies updated item in shared folder is running..."); //DEBUG - System.out.println("Send notifies updated item in shared folder is running..."); +// System.out.println("Send notifies updated item in shared folder is running..."); for (InfoContactModel infoContactModel : listContacts) { try{ @@ -416,10 +414,10 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" updated item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" updated item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); //DEBUG - System.out.println("Sending notification to user "+infoContactModel.getLogin() +" updated item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); +// System.out.println("Sending notification to user "+infoContactModel.getLogin() +" updated item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); //DEBUG // System.out.println("Send notify folder un share user "+infoContactModel.getLogin()); @@ -429,7 +427,7 @@ public class NotificationsProducer { if(!notify){ logger.error("An error updated when notify user: "+infoContactModel.getLogin()); //DEBUG - System.out.println("An error updated when notify user: "+infoContactModel.getLogin()); +// System.out.println("An error updated when notify user: "+infoContactModel.getLogin()); } } }catch (Exception e) { @@ -438,15 +436,13 @@ public class NotificationsProducer { } } - logger.info("notifies of updated item in shared folder is completed"); + logger.trace("notifies of updated item in shared folder is completed"); //DEBUG - System.out.println("notifies of updated item in shared folder is completed"); +// System.out.println("notifies of updated item in shared folder is completed"); } }.start(); - - */ } @@ -458,20 +454,20 @@ public class NotificationsProducer { * @param listContacts * @param sharedFolder */ - public void notifyMovedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceFolder sharedFolder) { + public void notifyMovedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) { - /* + new Thread() { @Override public void run() { - logger.info("Sending notification remove item in shared folder is running..."); + logger.trace("Sending notification remove item in shared folder is running..."); // printContacts(listContacts); try { if(NotificationsUtil.checkIsRootFolderShared(workspaceItem.getId(), sharedFolder.getId())){ - logger.info("Notification isn't sent because the event is on root shared folder"); + logger.trace("Notification isn't sent because the event is on root shared folder"); return; } @@ -480,9 +476,9 @@ public class NotificationsProducer { return; } - logger.info("Sending notification moved item in shared folder is running..."); + logger.trace("Sending notification moved item in shared folder is running..."); - System.out.println("Sending notification moved item in shared folder is running..."); +// System.out.println("Sending notification moved item in shared folder is running..."); for (InfoContactModel infoContactModel : listContacts) { try{ @@ -490,10 +486,10 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" moved item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" moved item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); //DEBUG - System.out.println("Sending notification to user "+infoContactModel.getLogin() +" moved item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); +// System.out.println("Sending notification to user "+infoContactModel.getLogin() +" moved item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); boolean notify = notificationsMng.notifyMovedItem(infoContactModel.getLogin(), workspaceItem, sharedFolder); @@ -501,7 +497,7 @@ public class NotificationsProducer { logger.error("An error occured when notify user: "+infoContactModel.getLogin()); //DEBUG - System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); +// System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); } } }catch (Exception e) { @@ -510,16 +506,16 @@ public class NotificationsProducer { } } - logger.info("notifies of moved item in shared folder is completed"); + logger.trace("notifies of moved item in shared folder is completed"); //DEBUG - System.out.println("notifies of moved item in shared folder is completed"); +// System.out.println("notifies of moved item in shared folder is completed"); } }.start(); -*/ + } @@ -528,28 +524,28 @@ public class NotificationsProducer { * @param listContacts * @param sharedFolder */ - public void notifyRemovedItemToSharing(final List listContacts, final String itemName, final WorkspaceFolder sharedFolder) { -/* + public void notifyRemovedItemToSharing(final List listContacts, final String itemName, final WorkspaceSharedFolder sharedFolder) { + new Thread() { @Override public void run() { - logger.info("Sending notification remove item in shared folder is running..."); + logger.trace("Sending notification remove item in shared folder is running..."); // printContacts(listContacts); if(itemName==null || itemName.isEmpty()){ - logger.info("Notification isn't sent - itemName is null or empty"); + logger.trace("Notification isn't sent - itemName is null or empty"); return; } if(sharedFolder==null){ - logger.info("Notification isn't sent - sharedFolder is null"); + logger.trace("Notification isn't sent - sharedFolder is null"); } - logger.info("Sending notification removed item in shared folder is running..."); + logger.trace("Sending notification removed item in shared folder is running..."); - System.out.println("Sending notification removed item in shared folder is running..."); +// System.out.println("Sending notification removed item in shared folder is running..."); for (InfoContactModel infoContactModel : listContacts) { try{ @@ -557,41 +553,81 @@ public class NotificationsProducer { //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(userId)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" removed item "+itemName+" in shared folder "+sharedFolder.getName()); + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" removed item "+itemName+" in shared folder "+sharedFolder.getName()); //DEBUG - System.out.println("Sending notification to user "+infoContactModel.getLogin() +" removed item "+itemName+" in shared folder "+sharedFolder.getName()); +// System.out.println("Sending notification to user "+infoContactModel.getLogin() +" removed item "+itemName+" in shared folder "+sharedFolder.getName()); - - boolean notify = notificationsMng.notifyRemovedItem(infoContactModel.getLogin(), itemName, sharedFolder); - if(!notify){ logger.error("An error occured when notify user: "+infoContactModel.getLogin()); //DEBUG - System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); +// System.out.println("An error occured when notify user: "+infoContactModel.getLogin()); } } }catch (Exception e) { logger.error("An error occurred in notifyRemovedItemToSharing ", e); - e.printStackTrace(); +// e.printStackTrace(); } } - logger.info("notifies of moved item in shared folder is completed"); + logger.trace("notifies of moved item in shared folder is completed"); //DEBUG - System.out.println("notifies of moved item in shared folder is completed"); +// System.out.println("notifies of moved item in shared folder is completed"); } + }.start(); + + } + + /** + * Runs a new thread to notify the contacts passed in input + * @param listContacts + * @param unSharedFolder + */ + public void notifySharedFolderDeleted(final List listContacts, final String folderNameDeleted) { + new Thread() { + @Override + public void run() { + +// printContacts(listContacts); + logger.trace("Send notifies shared folder deleted is running..."); + + for (InfoContactModel infoContactModel : listContacts) { + try{ + + //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER + if(infoContactModel.getLogin().compareTo(userId)!=0){ + + logger.trace("Sending notification to user "+infoContactModel.getLogin() +" deleted shared folder "+folderNameDeleted); + + //DEBUG + System.out.println("Sending notification to user "+infoContactModel.getLogin() +" deleted shared folder "+folderNameDeleted); + + //TODO +// boolean notify = notificationsMng. + +// if(!notify) +// logger.error("An error occured when notifies user: "+infoContactModel.getLogin()); + } + }catch (Exception e) { + logger.error("An error occured in notifySharedFolderDeleted ", e); +// e.printStackTrace(); + } + } + + logger.trace("notifies of deleted shared foder is completed"); + } }.start(); -*/ + } + //DEBUG private void printContacts(List listContacts){ @@ -625,4 +661,4 @@ public class NotificationsProducer { } -} +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java index 398c68d..a9c3ccf 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java @@ -8,16 +8,15 @@ import java.util.List; import javax.servlet.http.HttpSession; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.gcube.common.homelibrary.home.workspace.Workspace; -import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder; import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; import org.gcube.common.homelibrary.home.workspace.WorkspaceItemType; import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder; import org.gcube.portlets.widgets.workspacesharingwidget.server.GWTWorkspaceSharingBuilder; import org.gcube.portlets.widgets.workspacesharingwidget.server.util.WsUtil; import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it @@ -68,9 +67,9 @@ public class NotificationsUtil { //SWITCH BEETWEEN ADDED OR UPDATED if(!isOverwrite) - np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder); + np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceSharedFolder) destinationSharedFolder); else - np.notifyUpdatedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder); + np.notifyUpdatedItemToSharing(listContacts, sourceItem, (WorkspaceSharedFolder) destinationSharedFolder); logger.info("The notifies was sent correctly"); @@ -187,7 +186,10 @@ public class NotificationsUtil { NotificationsProducer np = new NotificationsProducer(WsUtil.getAslSession(httpSession)); - np.notifyRemovedItemToSharing(listContacts, oldItemName, (WorkspaceFolder) sourceSharedFolder); + if(sourceSharedFolder instanceof WorkspaceSharedFolder) + np.notifyRemovedItemToSharing(listContacts, oldItemName, (WorkspaceSharedFolder) sourceSharedFolder); + else + logger.info("Source shared folder "+sourceSharedFolder + " is not instanceof WorkspaceSharedFolder, skipping"); logger.info("The notifies was sent correctly"); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java index d62d728..0ec0806 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java @@ -21,6 +21,7 @@ import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNot import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portlets.widgets.workspacesharingwidget.server.GWTWorkspaceSharingBuilder; +import org.gcube.portlets.widgets.workspacesharingwidget.server.WorkspaceSharingServiceImpl; import org.gcube.portlets.widgets.workspacesharingwidget.server.notifications.NotificationsProducer; import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel; import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VO; @@ -41,9 +42,10 @@ public class WsUtil { public static final String WORKSPACEBUILDER_ATTRIBUTE = "WORKSPACE_SHARING_BUILDER_ATTRIBUTE"; public static final String NOTIFICATION_MANAGER = "NOTIFICATION_SHARING_MANAGER"; public static final String NOTIFICATION_PRODUCER = "NOTIFICATION_SHARING_PRODUCER"; - public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE__SHARING_SCOPE_UTIL"; + public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE_SHARING_SCOPE_UTIL"; public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl"; //USE THE SAME OF WORKSPACE + // public static final String TEST_SCOPE = "/gcube/devsec"; // public static final String TEST_USER = "pasquale.pagano";