Fixed Get Info for shared Folder

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@179398 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2019-05-13 15:07:35 +00:00
parent 67314d7859
commit 0531be2c31
1 changed files with 61 additions and 9 deletions

View File

@ -972,16 +972,68 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
if (folderItem instanceof SharedFolder) {
logger.debug("Folder type: SharedFolder");
SharedFolder sharedFolder = (SharedFolder) folderItem;
folderContainer.unshare(sharedFolder.getUsers().getMap().keySet());
unshared = true;
ArrayList<InfoContactModel> listContacts = new ArrayList<>();
for (String key : sharedFolder.getUsers().getMap().keySet()) {
InfoContactModel contact = new InfoContactModel(key, key, key, false);
listContacts.add(contact);
}
NotificationsProducer np = getNotificationProducer(this.getThreadLocalRequest());
np.notifyFolderUnSharing(listContacts, folderItem);
List<ACL> listACL = folderContainer.getAcls();
logger.debug("List of ACL: " + listACL);
String currentUser = getMyLogin();
logger.debug("Current User: " + currentUser);
if (listACL != null) {
ACL userACL = null;
for (ACL acl : listACL) {
if (currentUser.compareTo(acl.getPricipal()) == 0) {
userACL = acl;
break;
}
}
if (userACL != null) {
List<AccessType> listOfAccessType = userACL.getAccessTypes();
if (listOfAccessType != null && !listOfAccessType.isEmpty()) {
boolean isAdmin = false;
for (AccessType accessType : listOfAccessType) {
if (accessType.compareTo(AccessType.ADMINISTRATOR) == 0) {
isAdmin = true;
break;
}
}
Set<String> users;
if (isAdmin) {
users = sharedFolder.getUsers().getMap().keySet();
folderContainer.unshare(users);
logger.info("Unshared folded for users: " + users);
ArrayList<InfoContactModel> listContacts = new ArrayList<>();
for (String key : users) {
InfoContactModel contact = new InfoContactModel(key, key, key, false);
listContacts.add(contact);
}
NotificationsProducer np = getNotificationProducer(
this.getThreadLocalRequest());
np.notifyFolderUnSharing(listContacts, folderItem);
} else {
users = new HashSet<String>();
users.add(currentUser);
folderContainer.unshare(users);
logger.info("Unshared folded for users: " + users);
}
unshared = true;
} else {
String msg = "Invalid AccessType permission on this folder for the user.";
logger.error(msg);
throw new Exception(msg);
}
} else {
String msg = "Invalid permission on this folder for the user.";
logger.error(msg);
throw new Exception(msg);
}
} else {
String msg = "Invalid ACL list for this forlder: null.";
logger.error(msg);
throw new Exception(msg);
}
} else {
String msg = "The folder requested is not a root shared folder."
+ "To unshare this folder you have to unshare the root shared folder!";