Author: tdraier
Date: Wed Aug 29 19:49:44 2007
New Revision: 18306

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18306&repname=
=3Djahia
Log:
script for acl optimization after refactoring ( converted from jsp script f=
rom DOCU-7 )

Added:
    branches/JAHIA-5-0-SP-BRANCH/core/src/webapp/WEB-INF/etc/patches/aclpat=
ch_17886.groovy

Added: branches/JAHIA-5-0-SP-BRANCH/core/src/webapp/WEB-INF/etc/patches/acl=
patch_17886.groovy
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-SP-BRANCH/core/src/webapp/WEB-INF/etc/patches/aclpatch_17886.groovy&re=
v=3D18306&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/webapp/WEB-INF/etc/patches/aclpat=
ch_17886.groovy (added)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/webapp/WEB-INF/etc/patches/aclpat=
ch_17886.groovy Wed Aug 29 19:49:44 2007
@@ -0,0 +1,114 @@
+import org.jahia.registries.ServicesRegistry
+import org.jahia.services.sites.JahiaSite
+import org.jahia.services.pages.ContentPage
+import org.jahia.content.ContentObject
+import org.jahia.services.acl.JahiaBaseACL
+import org.jahia.hibernate.model.JahiaAcl
+import org.jahia.hibernate.manager.JahiaSiteLanguageListManager
+import org.jahia.hibernate.manager.SpringContextSingleton
+import org.jahia.hibernate.manager.JahiaAclManager
+import org.jahia.services.workflow.WorkflowService
+import org.jahia.content.ContentObjectKey
+import org.jahia.services.acl.JahiaACLManagerService
+import org.jahia.services.version.EntryLoadRequest
+import org.jahia.services.fields.ContentField
+import org.jahia.services.containers.ContentContainerList
+
+    Set toDelete =3D new HashSet();
+
+    JahiaACLManagerService service =3D ServicesRegistry.getInstance().getJ=
ahiaACLManagerService();
+
+    private void parseObject (ContentObject object, JahiaBaseACL currentAc=
l) throws Exception {
+        JahiaAcl currentObjectAcl =3D object.getACL().getACL();
+
+        print(object.getObjectKey().toString() + " , aclid =3D "+currentOb=
jectAcl.getAclID());
+        print(" - " + WorkflowService.getInstance().getStagingLanguages((C=
ontentObjectKey) object.getObjectKey(), object.getSiteID()));
+        if (currentObjectAcl.getAclID() !=3D currentAcl.getID()) {
+            if (!currentObjectAcl.getEntries().isEmpty()) {
+                JahiaBaseACL parentAcl =3D currentAcl;
+                currentAcl =3D object.getACL();
+                currentAcl.getACL().setHasEntries(new Integer(1));
+                currentAcl.setParentID(parentAcl.getID());
+                print(" has entries, set parentacl to "+parentAcl.getID());
+            } else if (object.getPickedObject() !=3D null && (
+                    object.getParent(null).getPickedObject() =3D=3D null ||
+                    (!object.getPickedObject().getACL().getACL().getEntrie=
s().isEmpty() && !object.getPickedObject().isAclSameAsParent()))) {
+
+                JahiaBaseACL parentAcl =3D currentAcl;
+                currentAcl =3D object.getACL();
+                currentAcl.getACL().setHasEntries(new Integer(0));
+                currentAcl.setParentID(parentAcl.getID());
+
+                print(" is a picker, keep it" + object.getParent(null).get=
PickedObject() + "/ "+object.getPickedObject().getACL().getACL().getEntries=
());
+            } else {
+                print(" is empty, set to "+currentAcl.getID());
+                int old =3D object.getACL().getID();
+                toDelete.add(new Integer(old));
+                object.setAclID(currentAcl.getID());
+                if (!(object instanceof ContentField)) {
+                    List mds =3D object.getMetadatas();
+                    Iterator iterator =3D mds.iterator();
+                    while (iterator.hasNext()) {
+                        ContentField md =3D (ContentField) iterator.next();
+                        md.setAclID(currentAcl.getID());
+                    }
+                }
+                if (object instanceof ContentContainerList) {
+                    Map properties =3D ((ContentContainerList)object).getP=
roperties();
+                    Iterator iterator =3D properties.keySet().iterator();
+                    while(iterator.hasNext()) {
+                        String key =3D (String) iterator.next();
+                        if (key.startsWith("view_field_acl_")) {
+                            int acl =3D Integer.parseInt((String) properti=
es.get(key));
+                            if (acl =3D=3D old) {
+                                object.setProperty(key, Integer.toString(c=
urrentAcl.getID()));
+                            } else {
+                                JahiaBaseACL.getACL(acl, null).setParentID=
(currentAcl.getID());
+                            }
+                        }
+                    }
+
+                }
+            }
+        }
+
+        println();
+
+        List objects =3D object.getChilds(null, null);
+        Iterator iterator =3D objects.iterator();
+        while(iterator.hasNext()) {
+            ContentObject child =3D (ContentObject) iterator.next();
+            parseObject(child, currentAcl);
+        }
+
+    }
+
+    private void parseObjectForPickers(ContentObject object) throws Except=
ion {
+        JahiaAcl currentObjectAcl =3D object.getACL().getACL();
+
+        if (!object.isAclSameAsParent()) {
+            ContentObject picked =3D object.getPickedObject();
+
+            if (picked !=3D null) {
+                print(object.getObjectKey().toString() + " , aclid =3D "+c=
urrentObjectAcl.getAclID());
+                print(" is a picker, update acl link to "+picked.getAclID(=
));
+                currentObjectAcl.setPickedAclId(new Integer(picked.getAclI=
D()));
+                service.updateCache(currentObjectAcl);
+                println();
+            }
+        }
+        List objects =3D object.getChilds(null, null);
+        Iterator iterator =3D objects.iterator();
+        while(iterator.hasNext()) {
+            ContentObject child =3D (ContentObject) iterator.next();
+            parseObjectForPickers(child);
+        }
+    }
+
+    Enumeration en =3D ServicesRegistry.getInstance().getJahiaSitesService=
().getSites();
+    while (en.hasMoreElements()) {
+        JahiaSite jahiaSite =3D (JahiaSite) en.nextElement()
+        ContentPage homePage =3D jahiaSite.getHomeContentPage()
+        parseObject(homePage, homePage.getACL())
+        parseObjectForPickers(homePage)
+    }

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

Reply via email to