* @param _folderName the name of the folder to create\r
*/\r
private void createFolder() {\r
- PostCommand ep = new PostCommand(folder.getUri()+"?new="+URL.encode(folderName.getText()),"", 201){\r
+ PostCommand ep = new PostCommand(folder.getUri() + "?new=" +\r
+ URL.encodeComponent(folderName.getText()), "", 201) {\r
\r
@Override\r
public void onComplete() {\r
- GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+ GSS.get().getFolders().updateFolder((DnDTreeItem) GSS.get().getFolders().getCurrent());\r
}\r
\r
@Override\r
if(t instanceof RestException){\r
int statusCode = ((RestException)t).getHttpStatusCode();\r
if(statusCode == 405)\r
- GSS.get().displayError("You don't have the necessary permissions or a folder with same name already exists");\r
+ GSS.get().displayError("You don't have the necessary" +\r
+ " permissions or a folder with same name " +\r
+ "already exists");\r
else if(statusCode == 404)\r
GSS.get().displayError("Resource not found");\r
else\r
- GSS.get().displayError("Unable to create folder:"+((RestException)t).getHttpStatusText());\r
+ GSS.get().displayError("Unable to create folder:" +\r
+ ((RestException)t).getHttpStatusText());\r
}\r
else\r
- GSS.get().displayError("System error creating folder:"+t.getMessage());\r
+ GSS.get().displayError("System error creating folder:" +\r
+ t.getMessage());\r
}\r
};\r
DeferredCommand.addCommand(ep);\r
return user;
}
- /* (non-Javadoc)
- * @see gr.ebs.gss.server.ejb.ExternalAPI#getFolderPermissions(java.lang.Long, java.lang.Long)
- */
@Override
public Set<PermissionDTO> getFolderPermissions(Long userId, Long folderId) throws ObjectNotFoundException, InsufficientPermissionsException {
if (userId == null)
* @throws InsufficientPermissionsException
*/
private void setFolderPermissions(User user, Folder folder, Set<PermissionDTO> permissions) throws ObjectNotFoundException, InsufficientPermissionsException {
- // Delete previous entries
- for (Permission perm: folder.getPermissions())
- dao.delete(perm);
- folder.getPermissions().clear();
- for (PermissionDTO dto : permissions) {
- if (dto.getUser()!=null && dto.getUser().getId().equals(folder.getOwner().getId()) && (!dto.hasRead() || !dto.hasWrite() || !dto.hasModifyACL()))
- throw new InsufficientPermissionsException("Can't remove permissions from owner");
- // Don't include 'empty' permission
- if (!dto.getRead() && !dto.getWrite() && !dto.getModifyACL()) continue;
- folder.addPermission(getPermission(dto));
- }
- dao.update(folder);
- for (FileHeader file : folder.getFiles()) {
- setFilePermissions(file, permissions);
- Date now = new Date();
- file.getAuditInfo().setModificationDate(now);
- file.getAuditInfo().setModifiedBy(user);
+ if (permissions != null && !permissions.isEmpty()) {
+ User owner = folder.getOwner();
+ PermissionDTO ownerPerm = null;
+ for (PermissionDTO dto : permissions)
+ if (dto.getUser() != null && dto.getUser().getId().equals(owner.getId())) {
+ ownerPerm = dto;
+ break;
+ }
+ if (ownerPerm == null || !ownerPerm.hasRead() || !ownerPerm.hasWrite() || !ownerPerm.hasModifyACL())
+ throw new InsufficientPermissionsException("Can't remove permissions from owner");
+ // Delete previous entries
+ for (Permission perm: folder.getPermissions())
+ dao.delete(perm);
+ folder.getPermissions().clear();
+ for (PermissionDTO dto : permissions) {
+ // Skip 'empty' permission entries.
+ if (!dto.getRead() && !dto.getWrite() && !dto.getModifyACL()) continue;
+ folder.addPermission(getPermission(dto));
+ }
+ dao.update(folder);
+ for (FileHeader file : folder.getFiles()) {
+ setFilePermissions(file, permissions);
+ Date now = new Date();
+ file.getAuditInfo().setModificationDate(now);
+ file.getAuditInfo().setModifiedBy(user);
+ }
+ for (Folder sub : folder.getSubfolders())
+ setFolderPermissions(user, sub, permissions);
}
- for (Folder sub : folder.getSubfolders())
- setFolderPermissions(user, sub, permissions);
}
private Permission getPermission(PermissionDTO dto) throws ObjectNotFoundException {