Automated merge with https://gss.googlecode.com/hg/
authorNatasa Kapravelou <akapravelou@gmail.com>
Tue, 1 Jun 2010 11:58:53 +0000 (14:58 +0300)
committerNatasa Kapravelou <akapravelou@gmail.com>
Tue, 1 Jun 2010 11:58:53 +0000 (14:58 +0300)
src/gr/ebs/gss/client/FolderPropertiesDialog.java
src/gr/ebs/gss/server/ejb/ExternalAPIBean.java

index 4dc7ca7..ed1504e 100644 (file)
@@ -258,11 +258,12 @@ public class FolderPropertiesDialog extends DialogBox {
         * @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
@@ -271,14 +272,18 @@ public class FolderPropertiesDialog extends DialogBox {
                                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
index 27ef0bc..0efd391 100644 (file)
@@ -1463,9 +1463,6 @@ public class ExternalAPIBean implements ExternalAPI, ExternalAPIRemote {
                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)
@@ -1500,26 +1497,35 @@ public class ExternalAPIBean implements ExternalAPI, ExternalAPIRemote {
         * @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 {