ref 13226:StorageHub - Update workspace-sharing-widget to SH
https://support.d4science.org/issues/13226 Fixed share folder with multiple users git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@179201 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
9904999212
commit
a869b7aa14
|
@ -447,37 +447,43 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
if (folderItem instanceof SharedFolder) {
|
||||
logger.debug("Folder type: SharedFolder");
|
||||
SharedFolder sharedFolder = (SharedFolder) folderItem;
|
||||
Set<String> logins = new HashSet<>(listLogin);
|
||||
String currentUser = getMyLogin();
|
||||
|
||||
logger.debug("Current User: " + currentUser);
|
||||
if (logins.contains(currentUser)) {
|
||||
logins.remove(currentUser);
|
||||
}
|
||||
|
||||
Set<String> alreadySharedUsers = null;
|
||||
Metadata usersMetadata = sharedFolder.getUsers();
|
||||
if (usersMetadata != null) {
|
||||
Map<String, Object> usersMap = usersMetadata.getMap();
|
||||
if (usersMap != null) {
|
||||
Set<String> alreadySharedUsers = usersMap.keySet();
|
||||
alreadySharedUsers = usersMap.keySet();
|
||||
logger.debug("Already shared logins: " + alreadySharedUsers);
|
||||
if (alreadySharedUsers.contains(currentUser)) {
|
||||
alreadySharedUsers.remove(currentUser);
|
||||
}
|
||||
logger.debug("Unshare the logins: " + alreadySharedUsers);
|
||||
if (!alreadySharedUsers.isEmpty()) {
|
||||
folderContainer.unshare(alreadySharedUsers);
|
||||
logger.debug("Unshare done");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> logins = new HashSet<>(listLogin);
|
||||
if (logins.contains(currentUser)) {
|
||||
logins.remove(currentUser);
|
||||
}
|
||||
|
||||
logger.debug("Share logins: " + logins);
|
||||
folderContainer.share(logins, getAccessType(acl));
|
||||
folderContainer = folderContainer.share(logins, getAccessType(acl));
|
||||
logger.debug("Shared done");
|
||||
|
||||
if (alreadySharedUsers != null && !alreadySharedUsers.isEmpty()) {
|
||||
alreadySharedUsers.removeAll(logins);
|
||||
if (!alreadySharedUsers.isEmpty()) {
|
||||
logger.debug("Unshare the logins: " + alreadySharedUsers);
|
||||
folderContainer = folderContainer.unshare(alreadySharedUsers);
|
||||
logger.debug("Unshare done");
|
||||
}
|
||||
}
|
||||
|
||||
created = true;
|
||||
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
||||
np.notifyFolderSharing(listContacts, folderItem);
|
||||
np.notifyFolderSharing(listContacts, folderContainer.get());
|
||||
} else {
|
||||
logger.debug("The folder is already shared");
|
||||
throw new Exception("The folder selected is already shared!");
|
||||
|
@ -486,11 +492,11 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
logger.debug("Folder is not shared");
|
||||
Set<String> logins = new HashSet<>(listLogin);
|
||||
logger.debug("Share logins: " + logins);
|
||||
folderContainer.share(logins, getAccessType(acl));
|
||||
folderContainer=folderContainer.share(logins, getAccessType(acl));
|
||||
logger.debug("Shared done");
|
||||
created = true;
|
||||
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
||||
np.notifyFolderSharing(listContacts, folderItem);
|
||||
np.notifyFolderSharing(listContacts, folderContainer.get());
|
||||
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue