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