Author: bpapez
Date: Wed Jun  6 17:54:06 2007
New Revision: 17500

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17500&repname=
=3Djahia
Log:
[JAHIA-1612] * get rid of magic numbers and use constants or methods instead

Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/file=
manager/DAVFilemanager_Engine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_Engine.j=
ava&rev=3D17500&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java Wed Jun  6 17:54:06 2007
@@ -31,6 +31,7 @@
 import org.jahia.engines.EngineToolBox;
 import org.jahia.engines.JahiaEngine;
 import org.jahia.engines.addcontainer.AddContainer_Engine;
+import org.jahia.engines.rights.ManageRights;
 import org.jahia.engines.shared.Category_Field;
 import org.jahia.engines.updatecontainer.UpdateContainer_Engine;
 import org.jahia.engines.users.SelectUG_Engine;
@@ -41,6 +42,7 @@
 import org.jahia.params.ProcessingContext;
 import org.jahia.params.SessionState;
 import org.jahia.registries.ServicesRegistry;
+import org.jahia.services.acl.JahiaAbstractACL;
 import org.jahia.services.acl.JahiaBaseACL;
 import org.jahia.services.categories.Category;
 import org.jahia.services.usermanager.*;
@@ -55,6 +57,7 @@
 import org.jahia.utils.zip.ZipOutputStream;
 =

 import java.io.*;
+import java.security.Principal;
 import java.text.Collator;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -1394,6 +1397,10 @@
         if (dav =3D=3D null) {
             return false;
         }
+        =

+        engineMap.put("hasNegativePermissions", Boolean.TRUE);
+        engineMap.put("actionNames", JahiaAbstractACL.getActionNames());
+                =

         final Map readPerms =3D dav.getPermissions(DAVFileAccess.READ);
         final Map writePerms =3D dav.getPermissions(DAVFileAccess.WRITE);
         final Map adminPerms =3D dav.getPermissions(DAVFileAccess.MANAGE);
@@ -1408,9 +1415,12 @@
             String s =3D (String) iterator.next();
 =

             int permissions =3D 0;
-            permissions |=3D getPermissionsAsInt(s, 1, readPerms);
-            permissions |=3D getPermissionsAsInt(s, 2, writePerms);
-            permissions |=3D getPermissionsAsInt(s, 4, adminPerms);
+            permissions |=3D getPermissionsAsInt(
+                    s, JahiaBaseACL.READ_RIGHTS, readPerms);
+            permissions |=3D getPermissionsAsInt(
+                    s, JahiaBaseACL.WRITE_RIGHTS, writePerms);
+            permissions |=3D getPermissionsAsInt(
+                    s, JahiaBaseACL.ADMIN_RIGHTS, adminPerms);
 =

             if (s.equals("nobody") || s.equals("all")) {
                 s =3D "+/groups/" + JahiaGroupManagerService.GUEST_GROUPNA=
ME + "/members";
@@ -1700,30 +1710,38 @@
         }
 =

         for (int i =3D 0; i < submitedACLEntries.length; i++) {
-            if ("00000000".equals(submitedACLEntries[i].substring(0, 8))) {
+            String aclEntry =3D submitedACLEntries[i];
+            if ("00000000".equals(aclEntry.substring(0, 8))) {
                 continue; // Don't do anything if no changes to the ACL en=
try.
             }
             // What kind of object has to be saved : user or group ?
 //            Object usr_grp;
 //            String usr_grpName;
+            Principal usr_grp;                        =

             String subject;
-            logger.debug("Submited ACL entry : " + submitedACLEntries[i]);
-            if (submitedACLEntries[i].charAt(userNameWidth.intValue() + 12=
) =3D=3D 'u') {
-                JahiaUser usr_grp =3D ServicesRegistry.getInstance().getJa=
hiaUserManagerService().
-                        lookupUser(
-                                submitedACLEntries[i].substring(userNameWi=
dth.intValue() + 13));
+            logger.debug("Submited ACL entry : " + aclEntry);
+            ManageRights mRights =3D ManageRights.getInstance();          =
  =

+            int keyIndex =3D mRights.getVKey(userNameWidth);            =

+            switch (aclEntry.charAt(keyIndex - 1)) {
+            case 'u':            =

+                usr_grp =3D ServicesRegistry.getInstance().getJahiaUserMan=
agerService().
+                    lookupUser(
+                        aclEntry.substring (keyIndex));
 //                usr_grpName =3D ((JahiaUser)usr_grp).getUsername();
-                String username =3D usr_grp.getUsername();
+                String username =3D ((JahiaUser)usr_grp).getUsername();
 //                if (JahiaUserManagerService.GUEST_USERNAME.equals(userna=
me)) {
 //                    subject =3D "guest";
 //                } else {
                 subject =3D "/users/" + username;
 //                }
-            } else {
-                JahiaGroup usr_grp =3D ServicesRegistry.getInstance().getJ=
ahiaGroupManagerService().
-                        lookupGroup(submitedACLEntries[i].substring(userNa=
meWidth.intValue() + 13));
+                break;
+            case 'g':
+                usr_grp =3D ServicesRegistry.getInstance()
+                        .getJahiaGroupManagerService().
+                        lookupGroup(
+                                aclEntry.substring (keyIndex));
 //                usr_grpName =3D ((JahiaGroup)usr_grp).getGroupname();
-                String groupname =3D usr_grp.getGroupname();
+                String groupname =3D ((JahiaGroup)usr_grp).getGroupname();
 //                if (JahiaGroupManagerService.GUEST_GROUPNAME.equals(grou=
pname)) {
 //                    subject =3D "nobody";
 //                } else if (JahiaGroupManagerService.ADMINISTRATORS_GROUP=
NAME.equals(groupname)) {
@@ -1733,13 +1751,19 @@
 //                } else {
                 subject =3D "+/groups/" + groupname + "/members";
 //                }
+                break;
+            default:
+                logger.error("Unknown principal type");
+                return null;                =

             }
             // Decode the select box value parameters
-            String permissions =3D submitedACLEntries[i].substring(8, 11);
+            int vDefInherit =3D mRights.getVDefaultInherit();            =

+            String permissions =3D aclEntry.substring(ManageRights.V_DEFAU=
LT_PERMISSION,
+                    vDefInherit);
 =

             final boolean cannotRead =3D permissions.charAt(JahiaBaseACL.R=
EAD_RIGHTS) =3D=3D '-';
 =

-            if (cannotRead && submitedACLEntries[i].charAt(2) !=3D '1') {
+            if (cannotRead && aclEntry.charAt(ManageRights.V_REM_ACL_ENTRY=
) !=3D '1') {
                 final List usages =3D jahiaWebdavBaseService.findUsages(da=
v.getPath(), jParams, false);
                 if (usages !=3D null && usages.size() > 0) {
                     // Since we are cutting READ rights on the dav file, w=
e need to check its usages and check
@@ -1750,7 +1774,7 @@
                 }
             }
 =

-            if (submitedACLEntries[i].charAt(0) =3D=3D '1') {
+            if (aclEntry.charAt(ManageRights.V_ADDED_ACL) =3D=3D '1') {
                 logger.debug("Added ACL entry for user : " + subject);
                 boolean res =3D dav.changePermissions(subject, permissions=
);
                 if (!res) {
@@ -1758,7 +1782,7 @@
                     tmp.add(dav.getPath());
                     return tmp;
                 }
-            } else if (submitedACLEntries[i].charAt(11) =3D=3D '%') {
+            } else if (aclEntry.charAt(vDefInherit) =3D=3D '%') {
                 logger.debug("Cut inheritance for user : " + subject);
 =

                 boolean res =3D dav.changePermissions(subject, permissions=
);
@@ -1767,7 +1791,7 @@
                     tmp.add(dav.getPath());
                     return tmp;
                 }
-            } else if (submitedACLEntries[i].charAt(2) =3D=3D '1') {
+            } else if (aclEntry.charAt(ManageRights.V_REM_ACL_ENTRY) =3D=
=3D '1') {
                 logger.debug("Remove ACL for user : " + subject);
                 boolean res =3D dav.revokePermissions(subject);
                 if (!res) {
@@ -1776,7 +1800,7 @@
                     return tmp;
                 }
                 continue;
-            } else if (submitedACLEntries[i].charAt(3) =3D=3D '1') {
+            } else if (aclEntry.charAt(ManageRights.V_RIGHT_CHANGE) =3D=3D=
 '1') {
                 logger.debug("Permissions have changed to " + permissions =
+ " for user : " + subject);
                 boolean res =3D dav.changePermissions(subject, permissions=
);
                 if (!res) {
@@ -1785,7 +1809,7 @@
                     return tmp;
                 }
             }
-            if (submitedACLEntries[i].charAt(1) =3D=3D '1') {
+            if (aclEntry.charAt(ManageRights.V_RESET_CHILD_PERMISSION) =3D=
=3D '1') {
                 /** todo Reset child permissions. */
             }
         }
@@ -1840,22 +1864,17 @@
         return result;
     }
 =

-    private int getPermissionsAsInt(final String subject, final int c, fin=
al Map perms) {
+    private int getPermissionsAsInt(String subject, int c, Map perms) {
         if (perms.containsKey(subject)) {
+            c =3D 1 << c;
             int state =3D ((Integer) perms.get(subject)).intValue();
-            if ((state & DAVFileAccess.GRANTED) =3D=3D DAVFileAccess.GRANT=
ED) {
-                if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED) {
-                    return c + 8;
-                } else {
+            if ((state & DAVFileAccess.GRANTED) =3D=3D DAVFileAccess.GRANT=
ED)
+                if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED)
+                    return c + JahiaBaseACL.RIGHTS_INHERITANCE_FLAG;
+                else
                     return c;
-                }
-            } else {
-                if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED) {
-                    return 8;
-                } else {
-                    return 0;
-                }
-            }
+            else if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAcces=
s.INHERITED)
+                return JahiaBaseACL.RIGHTS_INHERITANCE_FLAG;
         }
         return 0;
     }

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to