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) {
|
if (folderItem instanceof SharedFolder) {
|
||||||
logger.debug("Folder type: SharedFolder");
|
logger.debug("Folder type: SharedFolder");
|
||||||
SharedFolder sharedFolder = (SharedFolder) folderItem;
|
SharedFolder sharedFolder = (SharedFolder) folderItem;
|
||||||
Set<String> logins = new HashSet<>(listLogin);
|
|
||||||
String currentUser = getMyLogin();
|
String currentUser = getMyLogin();
|
||||||
|
|
||||||
logger.debug("Current User: " + currentUser);
|
logger.debug("Current User: " + currentUser);
|
||||||
if (logins.contains(currentUser)) {
|
|
||||||
logins.remove(currentUser);
|
Set<String> alreadySharedUsers = null;
|
||||||
}
|
|
||||||
Metadata usersMetadata = sharedFolder.getUsers();
|
Metadata usersMetadata = sharedFolder.getUsers();
|
||||||
if (usersMetadata != null) {
|
if (usersMetadata != null) {
|
||||||
Map<String, Object> usersMap = usersMetadata.getMap();
|
Map<String, Object> usersMap = usersMetadata.getMap();
|
||||||
if (usersMap != null) {
|
if (usersMap != null) {
|
||||||
Set<String> alreadySharedUsers = usersMap.keySet();
|
alreadySharedUsers = usersMap.keySet();
|
||||||
logger.debug("Already shared logins: " + alreadySharedUsers);
|
logger.debug("Already shared logins: " + alreadySharedUsers);
|
||||||
if (alreadySharedUsers.contains(currentUser)) {
|
if (alreadySharedUsers.contains(currentUser)) {
|
||||||
alreadySharedUsers.remove(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);
|
logger.debug("Share logins: " + logins);
|
||||||
folderContainer.share(logins, getAccessType(acl));
|
folderContainer = folderContainer.share(logins, getAccessType(acl));
|
||||||
logger.debug("Shared done");
|
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;
|
created = true;
|
||||||
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
||||||
np.notifyFolderSharing(listContacts, folderItem);
|
np.notifyFolderSharing(listContacts, folderContainer.get());
|
||||||
} else {
|
} else {
|
||||||
logger.debug("The folder is already shared");
|
logger.debug("The folder is already shared");
|
||||||
throw new Exception("The folder selected 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");
|
logger.debug("Folder is not shared");
|
||||||
Set<String> logins = new HashSet<>(listLogin);
|
Set<String> logins = new HashSet<>(listLogin);
|
||||||
logger.debug("Share logins: " + logins);
|
logger.debug("Share logins: " + logins);
|
||||||
folderContainer.share(logins, getAccessType(acl));
|
folderContainer=folderContainer.share(logins, getAccessType(acl));
|
||||||
logger.debug("Shared done");
|
logger.debug("Shared done");
|
||||||
created = true;
|
created = true;
|
||||||
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
|
||||||
np.notifyFolderSharing(listContacts, folderItem);
|
np.notifyFolderSharing(listContacts, folderContainer.get());
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue