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