Author: bpapez
Date: Thu Nov 29 09:03:17 2007
New Revision: 19313

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19313&repname=
=3Djahia
Log:
JAHIA-2652 - optimize checkWriteAccess for checking rights on all subobjects

Modified:
    trunk/core/src/java/org/jahia/content/ContentObject.java
    trunk/core/src/java/org/jahia/engines/rights/ManageRights.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaAclDAO.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerListDAO.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaPagesDAO.java
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerListManag=
er.java
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java
    trunk/core/src/java/org/jahia/services/containers/JahiaContainersBaseSe=
rvice.java
    trunk/core/src/java/org/jahia/services/containers/JahiaContainersServic=
e.java
    trunk/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.java
    trunk/core/src/java/org/jahia/services/fields/JahiaFieldService.java

Modified: trunk/core/src/java/org/jahia/content/ContentObject.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/content/ContentObject.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/content/ContentObject.java (original)
+++ trunk/core/src/java/org/jahia/content/ContentObject.java Thu Nov 29 09:=
03:17 2007
@@ -29,10 +29,12 @@
 import org.jahia.params.ProcessingContext;
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.services.acl.JahiaBaseACL;
+import org.jahia.services.containers.JahiaContainersService;
 import org.jahia.services.fields.ContentField;
 import org.jahia.services.fields.ContentFieldTools;
 import org.jahia.services.pages.ContentPage;
 import org.jahia.services.pages.JahiaPage;
+import org.jahia.services.pages.JahiaPageContentRights;
 import org.jahia.services.pages.JahiaPageService;
 import org.jahia.services.sites.JahiaSite;
 import org.jahia.services.sites.SiteLanguageSettings;
@@ -775,34 +777,152 @@
      * @return Return true if the user has the specified access to the spe=
cified
      * object, or false in any other case.
      */
-    public boolean checkAccess(JahiaUser user, int permission, boolean che=
ckChilds, boolean forceChildRights) {
-        boolean result =3D false;
+    public boolean checkAccess(JahiaUser user, int permission,
+            boolean checkChilds, boolean forceChildRights) {
+        boolean allowed =3D true;
+        boolean allPositive =3D true;
         try {
             JahiaBaseACL acl =3D getACL();
-            result =3D acl.getPermission (user, permission);
-            if (result && forceChildRights) {
-                result =3D checkAllChildPermissionsPositive(user, permissi=
on, acl.getID());            =

+            allowed =3D acl.getPermission(user, permission);
+            if (allowed && forceChildRights) {
+                Map deniedAclTree =3D new HashMap();
+                allPositive =3D checkAllChildPermissionsPositive(user,
+                        permission, acl.getID(), deniedAclTree);
+                if (!allPositive) {
+                    Set allAclIDs =3D new HashSet();
+                    allAclIDs.add(acl.getACL().getId());
+                    Set deniedAclIDs =3D new HashSet();
+                    getAllAclIdsFromMap(deniedAclTree, allAclIDs, deniedAc=
lIDs);
+
+                    Map children =3D convertPageListToMap(ServicesRegistry
+                            .getInstance().getJahiaPageService()
+                            .getPageIDsWithAclIDs(allAclIDs));
+                    JahiaPageContentRights pageRights =3D (JahiaPageConten=
tRights) children
+                            .get(new Integer(getPageID()));
+                    if (deniedAclIDs.contains(pageRights.getAclID())) {
+                        allowed =3D false;
+                    } else {
+                        allowed =3D isNegativeAclInPageTree(children, page=
Rights,
+                                deniedAclIDs);
+                        if (allowed) {
+                            allowed =3D isNegativeAclInListsOrContainersOr=
Fields(children, pageRights, deniedAclIDs);
+                        }
+                    }
+                }
             }
         } catch (JahiaException ex) {
             logger.debug("Cannot load ACL ID " + getAclID(), ex);
         }
-        return result;
+        return allowed;
     }
-
+    =

+    private boolean isNegativeAclInPageTree(Map children,
+            JahiaPageContentRights currentPage, Set deniedAclIDs) {
+        boolean allowed =3D true;
+        for (Iterator it =3D currentPage.getChildrenPages().iterator(); it=
.hasNext()
+                && allowed;) {
+            Integer pageID =3D (Integer) it.next();
+            JahiaPageContentRights pageRights =3D (JahiaPageContentRights)=
 children
+                    .get(pageID);
+            if (deniedAclIDs.contains(pageRights.getAclID())) {
+                allowed =3D false;
+            } else {
+                allowed =3D isNegativeAclInPageTree(children, pageRights,
+                        deniedAclIDs);
+            }
+        }
+        return allowed;
+    }
+    =

+    private boolean isNegativeAclInListsOrContainersOrFields(Map children,
+            JahiaPageContentRights currentPage, Set deniedAclIDs) {
+        Set pageIDs =3D getAllPageIdsFromTree(children, currentPage,
+                new HashSet());
+        JahiaContainersService containerService =3D ServicesRegistry
+                .getInstance().getJahiaContainersService();
+        boolean allowed =3D containerService
+                .getContainerListIDsOnPagesHavingAcls(pageIDs, deniedAclID=
s)
+                .isEmpty();
+        if (allowed) {
+            allowed =3D containerService
+                    .getContainerIDsOnPagesHavingAcls(pageIDs, deniedAclID=
s)
+                    .isEmpty();
+        }
+        if (allowed) {
+            allowed =3D ServicesRegistry.getInstance().getJahiaFieldServic=
e()
+                    .getFieldIDsOnPagesHavingAcls(pageIDs, deniedAclIDs)
+                    .isEmpty();
+        }
+        return allowed;
+    }    =

+    =

+    private Set getAllPageIdsFromTree(Map children,
+            JahiaPageContentRights currentPage, Set pageIDs){
+        pageIDs.add(currentPage.getPageID());
+        =

+        for (Iterator it =3D currentPage.getChildrenPages().iterator(); it=
.hasNext();) {
+            Integer pageId =3D (Integer) it.next();
+            JahiaPageContentRights pageRights =3D (JahiaPageContentRights)=
children.get(pageId);
+            getAllPageIdsFromTree(children, pageRights, pageIDs);
+        }        =

+        return pageIDs;
+    }
+    =

+    private Map convertPageListToMap(List pages) {
+        Map pageMap =3D new HashMap(pages.size());
+        for (Iterator it =3D pages.iterator(); it.hasNext();) {
+            JahiaPageContentRights pageRights =3D (JahiaPageContentRights)=
 it
+                    .next();
+            pageMap.put(pageRights.getPageID(), pageRights);
+        }
+        for (Iterator it =3D pages.iterator(); it.hasNext();) {
+            JahiaPageContentRights pageRights =3D (JahiaPageContentRights)=
 it
+                    .next();
+            JahiaPageContentRights parentPageRights =3D (JahiaPageContentR=
ights) pageMap
+                    .get(pageRights.getParentPageID());
+            if (parentPageRights !=3D null) {
+                parentPageRights.getChildrenPages().add(pageRights.getPage=
ID());
+            }
+        }
+        return pageMap;
+    }
+
+    private void getAllAclIdsFromMap(Map deniedAclTree, Set allAclIds,
+            Set deniedAclIds) {
+
+        allAclIds.addAll(deniedAclTree.keySet());
+        for (Iterator it =3D deniedAclTree.entrySet().iterator(); it.hasNe=
xt();) {
+            Map.Entry entry =3D (Map.Entry) it.next();
+            if (entry.getValue() =3D=3D null) {
+                deniedAclIds.add(entry.getKey());
+            } else {
+                getAllAclIdsFromMap((Map) entry.getValue(), allAclIds,
+                        deniedAclIds);
+            }
+        }
+    }
+    =

     private boolean checkAllChildPermissionsPositive(JahiaUser user,
-            int permission, int parentAclId) {
-        boolean result =3D true;
-        List childs =3D ServicesRegistry.getInstance()
+            int permission, int parentAclId, Map deniedAclTree) {
+       boolean allowed =3D true;
+        List children =3D ServicesRegistry.getInstance()
                 .getJahiaACLManagerService().getChildAcls(parentAclId);
-        for (Iterator it =3D childs.iterator(); it.hasNext() && result;) {
+        for (Iterator it =3D children.iterator(); it.hasNext();) {
             JahiaAcl childAcl =3D (JahiaAcl) it.next();
-            result =3D childAcl.getPermission(user, permission);
-            if (result) {
-                result =3D checkAllChildPermissionsPositive(user, permissi=
on,
-                        childAcl.getAclID());
+            boolean childAllowed =3D childAcl.getPermission(user, permissi=
on);
+            Map deniedChildrenAclTree =3D null;
+            if (childAllowed) {
+               deniedChildrenAclTree =3D new HashMap();
+               childAllowed =3D checkAllChildPermissionsPositive(user, permi=
ssion,
+                        childAcl.getAclID(), deniedChildrenAclTree);
+            }
+            if (!childAllowed) {
+               allowed =3D false;
+               deniedAclTree.put(childAcl.getId(), deniedChildrenAclTree);
             }
         }
-        return result;
+        =

+        return allowed;
     }
     /**
      * This method is used to determine if all the active entries of this

Modified: trunk/core/src/java/org/jahia/engines/rights/ManageRights.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/rights/ManageRights.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/engines/rights/ManageRights.java (origina=
l)
+++ trunk/core/src/java/org/jahia/engines/rights/ManageRights.java Thu Nov =
29 09:03:17 2007
@@ -50,6 +50,7 @@
 import org.jahia.services.lock.LockPrerequisitesResult;
 import org.jahia.services.pages.ContentPage;
 import org.jahia.services.pages.JahiaPage;
+import org.jahia.services.pages.JahiaPageContentRights;
 import org.jahia.services.pages.JahiaPageService;
 import org.jahia.services.usermanager.*;
 import org.jahia.services.version.EntryLoadRequest;
@@ -1085,35 +1086,32 @@
                         }
                     }
                 }
-                List childAclList =3D ServicesRegistry.getInstance()
-                        .getJahiaACLManagerService().getChildAcls(acl.getI=
D());
-                Set aclIDs =3D new HashSet(childAclList.size());
-                aclIDs.add(new Integer(acl.getID()));
-                for (Iterator it =3D childAclList.iterator(); it.hasNext()=
;) {
-                    JahiaAcl childAcl =3D (JahiaAcl) it.next();
-                    if (childAcl.getInheritance().intValue() =3D=3D 1) {
-                        aclIDs.add(childAcl.getId());
+               =

+                List childs =3D pageService
+                        .getPageIDsWithAclIDs(getAllInheritedChildAclIDs(a=
cl
+                                .getID(), new HashSet()));
+                for (Iterator it =3D childs.iterator(); it.hasNext();) {
+                    JahiaPageContentRights childPage =3D (JahiaPageContent=
Rights) it
+                            .next();
+                    pageService.invalidatePageCache(childPage.getPageID()
+                            .intValue());
+                    // only invalidate esi cache entries of sub-pages if i=
nheritance is changed
+                    // if (aclInheritanceAltered && esiCacheActivated) {
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("ACL ["
+                                        + acl
+                                        + "] was altered so triggering inv=
alidation of subpage :"
+                                        + childPage.getPageID());
                     }
-                }
-                =

-                List childs =3D pageService.getPageIDsWithAclIDs(aclIDs);
-                for (Iterator it =3D childs.iterator(); it.hasNext();) {  =
              =

-                    Integer childPageId =3D (Integer) it.next();
-                    pageService.invalidatePageCache(childPageId.intValue()=
);
-                    //only invalidate esi cache entries of sub-pages if in=
heritance is changed
-//                    if (aclInheritanceAltered && esiCacheActivated) {
-                        if (logger.isDebugEnabled()) logger.debug("ACL [" +
-                                                                  acl +
-                                                                  "] was a=
ltered so triggering invalidation of subpage :" +
-                                                                  childPag=
eId);
-                        esiPagesToInvalidate.add(childPageId);
-//                    }
+                    esiPagesToInvalidate.add(childPage.getPageID());
+                    // }
                 }
                 if (esiCacheActivated) {
-                    if (logger.isDebugEnabled()) logger.debug("ACL [" +
-                                                              acl +
-                                                              "] was alter=
ed so triggering invalidation of root page :" +
-                                                              pageID);
+                    if (logger.isDebugEnabled())
+                        logger.debug("ACL ["
+                                        + acl
+                                        + "] was altered so triggering inv=
alidation of root page :"
+                                        + pageID);
                     esiPagesToInvalidate.add(new Integer(pageID));
                 }
                 pageService.invalidatePageCache(pageID);
@@ -1163,4 +1161,17 @@
         }
     }
 =

+       private Set getAllInheritedChildAclIDs(int aclID, Set aclIDs) {
+               List childAclList =3D ServicesRegistry.getInstance()
+                               
.getJahiaACLManagerService().getChildAcls(aclID);
+               aclIDs.add(new Integer(aclID));
+               for (Iterator it =3D childAclList.iterator(); it.hasNext();) {
+                       JahiaAcl childAcl =3D (JahiaAcl) it.next();
+                       if (childAcl.getInheritance().intValue() =3D=3D 1) {
+                               aclIDs =3D 
getAllInheritedChildAclIDs(childAcl.getAclID(), aclIDs);
+                       }
+               }
+               return aclIDs;
+       }
+    =

 }

Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaAclDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaAclDAO.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/dao/JahiaAclDAO.java (original)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaAclDAO.java Thu Nov 29=
 09:03:17 2007
@@ -58,8 +58,7 @@
         template.setCacheQueries(true);
         template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
         return findByCriteria(template, DetachedCriteria.forClass(
-                JahiaAcl.class).add(Restrictions.eq("parentId", parentId))
-                .setFetchMode("entries", FetchMode.JOIN));
+                JahiaAcl.class).add(Restrictions.eq("parentId", parentId))=
);
     }    =

 =

     public JahiaAcl findAclById(Integer id) {

Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaContainerDAO.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java (ori=
ginal)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java Thu =
Nov 29 09:03:17 2007
@@ -1239,6 +1239,16 @@
         return query.list();
     }
 =

+    public List getContainerIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        Query query =3D this.getSession().createQuery(
+                "select distinct c.comp_id.id from JahiaContainer c where =
c.pageid in (:pageIDs) and c.jahiaAclId in (:aclIDs) and c.comp_id.workflow=
State >=3D 1 and c.comp_id.versionId !=3D -1");
+
+        query.setParameterList("pageIDs", pageIDs);
+        query.setParameterList("aclIDs", aclIDs);        =

+        List retList =3D query.list();
+
+        return retList;
+    }    =

 =

 }
 =


Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerListDAO=
.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaContainerListDAO.java&rev=3D19313&repname=3Djah=
ia
=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
--- trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerListDAO.java =
(original)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerListDAO.java =
Thu Nov 29 09:03:17 2007
@@ -23,6 +23,7 @@
 import org.apache.commons.collections.FastHashMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.hibernate.Query;
 import org.jahia.content.ContentContainerListKey;
 import org.jahia.hibernate.model.JahiaContainerList;
 import org.jahia.hibernate.model.JahiaContainerListProperty;
@@ -847,6 +848,16 @@
         }
         return null;
     }
+   =

+    public List getContainerListIDsOnPagesHavingAcls(Set pageIDs, Set aclI=
Ds) {
+        Query query =3D this.getSession().createQuery(
+                "select distinct l.comp_id.id from JahiaContainerList l, J=
ahiaContainerListProperty p where p.comp_id.containerListId=3Dl.comp_id.id =
and l.pageid in (:pageIDs) and (l.jahiaAclId in (:aclIDs) or ((p.comp_id.na=
me like 'view_field_acl_%') and (p.value in (:aclIDs)))) and l.comp_id.work=
flowState >=3D 1 and l.comp_id.versionId !=3D -1");
+
+        query.setParameterList("pageIDs", pageIDs);
+        query.setParameterList("aclIDs", aclIDs);        =

+        List retList =3D query.list();
 =

+        return retList;
+    }    =

 }
 =


Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.ja=
va
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaFieldsDataDAO.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java (or=
iginal)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java Thu=
 Nov 29 09:03:17 2007
@@ -31,6 +31,7 @@
 import org.springframework.dao.DataAccessException;
 import org.springframework.orm.ObjectRetrievalFailureException;
 import org.springframework.orm.hibernate3.HibernateTemplate;
+import org.hibernate.Query;
 import org.hibernate.SQLQuery;
 import org.hibernate.Hibernate;
 =

@@ -1211,5 +1212,16 @@
         return null;
     }
 =

+    public List getFieldIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        Query query =3D this.getSession().createQuery(
+                "select distinct f.comp_id.id from JahiaFieldsData f where=
 f.pageId in (:pageIDs) and f.jahiaAclId in (:aclIDs) and f.comp_id.workflo=
wState >=3D 1 and f.comp_id.versionId !=3D -1");
+
+        query.setParameterList("pageIDs", pageIDs);
+        query.setParameterList("aclIDs", aclIDs);        =

+        List retList =3D query.list();
+
+        return retList;
+    }      =

+    =

 }
 =


Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaPagesDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaPagesDAO.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/dao/JahiaPagesDAO.java (origina=
l)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaPagesDAO.java Thu Nov =
29 09:03:17 2007
@@ -35,6 +35,7 @@
 import org.jahia.hibernate.model.JahiaPagesProp;
 import org.jahia.hibernate.model.JahiaPagesPropPK;
 import org.jahia.services.pages.ContentPage;
+import org.jahia.services.pages.JahiaPageContentRights;
 import org.jahia.services.pages.PageProperty;
 import org.jahia.services.version.EntryLoadRequest;
 import org.springframework.orm.hibernate3.HibernateTemplate;
@@ -168,14 +169,23 @@
     }
 =

     private List fillPagesId(List list) {
-        List retVal;
-        retVal =3D new FastArrayList(list.size());
-        for (int i =3D 0; i < list.size(); i++) {
-            Object[] objects =3D (Object[]) list.get(i);
+        List retVal =3D new FastArrayList(list.size());
+        for (Iterator it =3D list.iterator(); it.hasNext(); ) {
+            Object[] objects =3D (Object[]) it.next();
             retVal.add(objects[0]);
         }
         return retVal;
     }
+    =

+    private List fillPageRightObjects(List list) {
+        List retVal =3D new FastArrayList(list.size());
+        for (Iterator it =3D list.iterator(); it.hasNext(); ) {
+            Object[] objects =3D (Object[]) it.next();
+            retVal.add(new JahiaPageContentRights((Integer) objects[0],
+                                       (Integer) objects[1], (Integer) 
objects[2]));
+        }
+        return retVal;
+    }    =

 =

     public List getActivePageIDsPointingOnPage(Integer pageId) {
         final HibernateTemplate template =3D getHibernateTemplate();
@@ -309,10 +319,11 @@
     =

     public List getPageIDsWithAclIDs(Set aclIDs) {
         Query query =3D this.getSession().createQuery(
-              "select distinct pd.comp_id.id from JahiaPagesData pd "
-              + "where pd.jahiaAclId in (:aclIDs) and (pd.pageType=3D0 or =
pd.pageType=3D1)");
+              "select distinct pd.comp_id.id, pd.parentID, pd.jahiaAclId f=
rom JahiaPagesData pd "
+              + "where pd.jahiaAclId in (:aclIDs) and (pd.pageType=3D0 or =
pd.pageType=3D1) and " =

+              + "pd.comp_id.workflowState > " + EntryLoadRequest.VERSIONED=
_WORKFLOW_STATE);
         query.setParameterList("aclIDs", aclIDs);
-        return query.list();
+        return fillPageRightObjects(query.list());
     }    =

 =

     public List getPageIdsInSite(Integer siteId) {

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerLis=
tManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaContainerListManager.java&rev=3D19313&repna=
me=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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerListManag=
er.java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerListManag=
er.java Thu Nov 29 09:03:17 2007
@@ -757,4 +757,7 @@
         return new int[]{-1,-1};
     }
     =

+    public List getContainerListIDsOnPagesHavingAcls(Set pageIDs, Set aclI=
Ds) {
+        return dao.getContainerListIDsOnPagesHavingAcls(pageIDs, aclIDs);
+    }        =

 }

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerMan=
ager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaContainerManager.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava Thu Nov 29 09:03:17 2007
@@ -1225,5 +1225,9 @@
         return dao.executeQuery(queryString,parameters);
     }
 =

+    public List getContainerIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        return dao.getContainerIDsOnPagesHavingAcls(pageIDs, aclIDs);
+    }
+    =

 }
 =


Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataMa=
nager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaFieldsDataManager.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java Thu Nov 29 09:03:17 2007
@@ -1124,6 +1124,10 @@
         return new int[] {-1,-1};
 =

     }
+    =

+    public List getFieldIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        return dao.getFieldIDsOnPagesHavingAcls(pageIDs, aclIDs);
+    }    =

 =

 }
 =


Modified: trunk/core/src/java/org/jahia/services/containers/JahiaContainers=
BaseService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/containers/JahiaContainersBaseService.java&rev=3D19313&re=
pname=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
--- trunk/core/src/java/org/jahia/services/containers/JahiaContainersBaseSe=
rvice.java (original)
+++ trunk/core/src/java/org/jahia/services/containers/JahiaContainersBaseSe=
rvice.java Thu Nov 29 09:03:17 2007
@@ -2717,4 +2717,12 @@
         return r;
     }
 =

+    public List getContainerIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        return containerManager.getContainerIDsOnPagesHavingAcls(pageIDs, =
aclIDs);
+    }
+
+    public List getContainerListIDsOnPagesHavingAcls(Set pageIDs, Set aclI=
Ds) {
+        return containerListManager.getContainerListIDsOnPagesHavingAcls(p=
ageIDs, aclIDs);
+    }
+
 } // end JahiaContainersBaseService

Modified: trunk/core/src/java/org/jahia/services/containers/JahiaContainers=
Service.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/containers/JahiaContainersService.java&rev=3D19313&repnam=
e=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
--- trunk/core/src/java/org/jahia/services/containers/JahiaContainersServic=
e.java (original)
+++ trunk/core/src/java/org/jahia/services/containers/JahiaContainersServic=
e.java Thu Nov 29 09:03:17 2007
@@ -1198,4 +1198,31 @@
 =

     public abstract List findContainersByPropertyNameAndValue(String name,=
 String value) throws JahiaException;
 =

+    /**
+     * Gets all container list ids on a set of pages, which are having one=
 of the given ACL-ids
+     * =

+     * @param pageIDs
+     *                the page ids
+     * @param aclIDs
+     *                the ACL ids
+     * =

+     * @return a List of containerlist IDs
+     */
+    public abstract List getContainerListIDsOnPagesHavingAcls(Set pageIDs,
+            Set aclIDs);
+    =

+    /**
+     * Gets all container ids on a set of pages, which are having one of t=
he given ACL-ids
+     * =

+     * @param pageIDs
+     *                the page ids
+     * @param aclIDs
+     *                the ACL ids
+     * =

+     * @return a List of container IDs
+     */
+    public abstract List getContainerIDsOnPagesHavingAcls(Set pageIDs,
+            Set aclIDs);
+        =

+    =

 } // end JahiaContainersService

Modified: trunk/core/src/java/org/jahia/services/fields/JahiaFieldBaseServi=
ce.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/fields/JahiaFieldBaseService.java&rev=3D19313&repname=3Dj=
ahia
=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
--- trunk/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.jav=
a (original)
+++ trunk/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.jav=
a Thu Nov 29 09:03:17 2007
@@ -1728,4 +1728,8 @@
     public int[] getSubPageIdAndType(int id, EntryLoadRequest req) {
         return dataManager.getSubPageId(id, req);
     }
+
+    public List getFieldIDsOnPagesHavingAcls(Set pageIDs, Set aclIDs) {
+        return dataManager.getFieldIDsOnPagesHavingAcls(pageIDs, aclIDs);
+    }
 }
\ No newline at end of file

Modified: trunk/core/src/java/org/jahia/services/fields/JahiaFieldService.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/fields/JahiaFieldService.java&rev=3D19313&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
--- trunk/core/src/java/org/jahia/services/fields/JahiaFieldService.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/fields/JahiaFieldService.java Th=
u Nov 29 09:03:17 2007
@@ -603,4 +603,16 @@
 =

     public abstract int[] getSubPageIdAndType(int id, EntryLoadRequest req=
);
 =

+    /**
+     * Gets all field ids on a set of pages, which are having one of the g=
iven ACL-ids
+     * =

+     * @param pageIDs
+     *                the page ids
+     * @param aclIDs
+     *                the ACL ids
+     * =

+     * @return a List of field IDs
+     */
+    public abstract List getFieldIDsOnPagesHavingAcls(Set pageIDs,
+            Set aclIDs);    =

 } // end JahiaFieldServices

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

Reply via email to