Author: knguyen
Date: Mon Nov 5 12:34:46 2007
New Revision: 19043
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19043&repname=
=3Djahia
Log:
- refactored ContainerMetadataSorter by using DB Order query instead of in =
memory ordering.
- refactored ContainerMetadataSorter and ContainerFilterByDefinitions as Hi=
bernate Query.
- optimization of ContainerFiltersByCategories.
Modified:
trunk/core/src/java/org/jahia/data/containers/ContainerFilterBean.java
trunk/core/src/java/org/jahia/data/containers/ContainerFilterByCategori=
es.java
trunk/core/src/java/org/jahia/data/containers/ContainerFilterByContaine=
rDefinitions.java
trunk/core/src/java/org/jahia/data/containers/ContainerMetadataSorterBe=
an.java
trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java
trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava
trunk/core/src/java/org/jahia/services/containers/ContainerFactory.java
Modified: trunk/core/src/java/org/jahia/data/containers/ContainerFilterBean=
.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/data/containers/ContainerFilterBean.java&rev=3D19043&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/data/containers/ContainerFilterBean.java =
(original)
+++ trunk/core/src/java/org/jahia/data/containers/ContainerFilterBean.java =
Mon Nov 5 12:34:46 2007
@@ -1219,6 +1219,51 @@
=
//--------------------------------------------------------------------=
------
/**
+ * Returns an array of cntids that are workflow=3Dstaging and versioni=
d=3D-1 (deleted)
+ *
+ * @param ctnListID
+ * @return
+ * @throws JahiaException
+ */
+ static public HashSet getDeletedContainersSet(int ctnListID)
+ throws JahiaException
+ {
+ StringBuffer buff =3D new StringBuffer("SELECT DISTINCT id_jahia_c=
tn_entries FROM jahia_ctn_entries WHERE workflow_state>1 AND version_id=3D-=
1 ");
+ if ( ctnListID > 0 ){
+ buff.append(" AND listid_jahia_ctn_entries=3D?");
+ }
+
+ Connection dbConn =3D null;
+ PreparedStatement stmt =3D null;
+ ResultSet rs =3D null;
+
+ HashSet datas =3D new HashSet();
+
+ try
+ {
+ dbConn =3D org.jahia.services.database.ConnectionDispenser.get=
Connection();
+ stmt =3D dbConn.prepareStatement(buff.toString() );
+ if ( ctnListID>0 ){
+ stmt.setInt(1, ctnListID);
+ }
+ rs =3D stmt.executeQuery();
+
+ while (rs.next()) {
+ datas.add(new Integer(rs.getInt(1)));
+ }
+ }
+ catch (SQLException se)
+ {
+ logger.error("Error in getDeletedContainers() : ", se);
+ } finally {
+
+ closeStatement (stmt);
+ }
+ return datas;
+ }
+
+ //--------------------------------------------------------------------=
------
+ /**
* Returns an array of fields that are in staging.
*
* @param ctnListID
Modified: trunk/core/src/java/org/jahia/data/containers/ContainerFilterByCa=
tegories.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/data/containers/ContainerFilterByCategories.java&rev=3D19043&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/data/containers/ContainerFilterByCategori=
es.java (original)
+++ trunk/core/src/java/org/jahia/data/containers/ContainerFilterByCategori=
es.java Mon Nov 5 12:34:46 2007
@@ -109,18 +109,13 @@
throws JahiaException {
BitSet result =3D new BitSet();
try {
- List containers =3D getContainers(this.categories, -1, null); =
// all sites search
- int size =3D containers.size();
- for (int i =3D 0; i < size; i++) {
- ContentContainer contentContainer =3D
- (ContentContainer) containers.get(i);
- if (contentContainer.getParentContainerListID() =3D=3D ctn=
ListID) {
- result.set(contentContainer.getID());
- }
- }
+ result =3D getContainers(this.categories, -1, null, ctnListID=
, false);
} catch (Throwable t) {
logger.debug("Exception :", t);
}
+ if ( result =3D=3D null ){
+ result =3D new BitSet();
+ }
=
if (this.withAllContainersOfCompoundContainerList) {
int ctnListId =3D this.containerFilters.getCtnListID();
@@ -132,11 +127,13 @@
result.set(I.intValue());
}
}
+ /*
ContainerFilterByLoadRequest cfblr =3D
new ContainerFilterByLoadRequest(this.entryLoadRequest);
BitSet result2 =3D cfblr.doFilter(ctnListID);
-
result.and(result2);
+ */
+
return result;
=
}
@@ -205,17 +202,13 @@
throws JahiaException {
BitSet result =3D new BitSet();
try {
- List containers =3D getContainers(this.categories, siteId, con=
tainerDefinitionName);
- int size =3D containers.size();
- for (int i =3D 0; i < size; i++) {
- ContentContainer contentContainer =3D
- (ContentContainer) containers.get(i);
-
- result.set(contentContainer.getID());
- }
+ result =3D getContainers(this.categories, siteId, containerDef=
initionName, listId, true);
} catch (Throwable t) {
logger.debug("Exception :", t);
}
+ if ( result =3D=3D null ){
+ result =3D new BitSet();
+ }
=
if (this.withAllContainersOfCompoundContainerList) {
Vector ids =3D ServicesRegistry.getInstance().getJahiaContaine=
rsService()
@@ -226,10 +219,11 @@
result.set(I.intValue());
}
}
+ /*
ContainerFilterByLoadRequest cfblr =3D
new ContainerFilterByLoadRequest(this.entryLoadRequest);
BitSet result2 =3D cfblr.doFilterBySite(siteId, containerDefinitio=
nName, listId);
- result.and(result2);
+ result.and(result2);*/
return result;
}
=
@@ -254,12 +248,35 @@
return (getCategoriesSearchQuery() + "_" + loadRequest);
}
=
- private List getContainers(Set categories, int siteId, String containe=
rDefinitionName)
+ private BitSet getContainers(Set categories, int siteId, String contai=
nerDefinitionName, int ctnListId,
+ boolean siteFiltering)
throws JahiaException {
=
List val =3D new ArrayList();
Iterator iterator =3D categories.iterator();
Category category;
+ BitSet bits =3D null;
+ if ( siteFiltering ){
+ ArrayList defNames =3D new ArrayList();
+ if ( containerDefinitionName !=3D null && !"".equals(container=
DefinitionName.trim()) ){
+ defNames.add(containerDefinitionName);
+ }
+ ContainerFilterByContainerDefinitions filter =3D
+ new ContainerFilterByContainerDefinitions((String[])de=
fNames.toArray(new String[]{}),
+ this.entryLoadRequest);
+ if ( this.containerFilters.isSiteModeFiltering() &&
+ ( siteId>0 || defNames.size()>0)){
+ bits =3D filter.doFilterBySite(siteId,"",this.containerFil=
ters.getCtnListID());
+ } else if ( defNames.size()>0 ){
+ bits =3D filter.doFilterBySite(siteId,"",this.containerFil=
ters.getCtnListID());
+ }
+ } else {
+ ContainerFilterByContainerDefinitions filter =3D
+ new ContainerFilterByContainerDefinitions(new String[]=
{},
+ this.entryLoadRequest);
+ bits =3D filter.doFilter(ctnListId);
+ }
+ BitSet result =3D new BitSet();
while (iterator.hasNext()) {
category =3D (Category) iterator.next();
List allChildrenObjectKeys =3D category.getChildObjectKeys();
@@ -268,6 +285,11 @@
ObjectKey curObjectKey =3D (ObjectKey) allChildObjectKeysI=
ter.
next();
if (curObjectKey.getType().equals(ContentContainerKey.CONT=
AINER_TYPE)) {
+ if (bits!=3Dnull && !bits.get(curObjectKey.getIdInType=
())){
+ continue;
+ }
+ result.set(curObjectKey.getIdInType());
+ /*
try {
ContentContainer contentContainer =3D
(ContentContainer) ContentContainer.getIns=
tance(curObjectKey);
@@ -290,11 +312,11 @@
}
} catch (Throwable t) {
logger.debug("Error loading contentContainer " + c=
urObjectKey.toString());
+ }*/
}
}
}
- }
- return val;
+ return result;
}
=
private String getCategoriesSearchQuery() {
Modified: trunk/core/src/java/org/jahia/data/containers/ContainerFilterByCo=
ntainerDefinitions.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/data/containers/ContainerFilterByContainerDefinitions.java&rev=3D1=
9043&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/data/containers/ContainerFilterByContaine=
rDefinitions.java (original)
+++ trunk/core/src/java/org/jahia/data/containers/ContainerFilterByContaine=
rDefinitions.java Mon Nov 5 12:34:46 2007
@@ -23,18 +23,21 @@
=
package org.jahia.data.containers;
=
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.BitSet;
-
import org.jahia.exceptions.JahiaException;
+import org.jahia.hibernate.manager.JahiaContainerManager;
+import org.jahia.hibernate.manager.SpringContextSingleton;
+import org.jahia.hibernate.model.JahiaCtnEntryPK;
+import org.jahia.services.fields.ContentField;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.utils.JahiaTools;
+import org.springframework.context.ApplicationContext;
+
import java.io.Serializable;
-import org.jahia.services.fields.ContentField;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.*;
=
=
/**
@@ -350,6 +353,91 @@
String containerDefinitionName, int listId)
throws JahiaException
{
+ Map parameters =3D new HashMap();
+ StringBuffer buff =3D new StringBuffer("SELECT c.comp_id FROM Jahi=
aContainer c WHERE ");
+ if (siteId > 0) {
+ buff.append(" c.siteId=3D :siteId");
+ parameters.put("siteId",new Integer(siteId));
+ buff.append(" AND ");
+ }
+ if (this.containerDefinitionNames.length>0){
+ buff.append(" ( ");
+ for (int d =3D 0; d < this.containerDefinitionNames.length; d+=
+) {
+ if (this.containerDefinitionNames[d] !=3D null) {
+ buff.append(" c.ctndef.name =3D :ctnDefName" + d);
+ parameters.put("ctnDefName"+d,this.containerDefinition=
Names[d]);
+ if (d<this.containerDefinitionNames.length-1){
+ buff.append(" OR ");
+ }
+ }
+ }
+ buff.append(" ) AND ");
+ }
+ if ( entryLoadRequest.isCurrent()){
+ buff.append("c.comp_id.workflowState");
+ buff.append("=3D");
+ buff.append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE);
+ } else if ( entryLoadRequest.isStaging() ) {
+ buff.append(" c.comp_id.workflowState");
+ buff.append(">");
+ buff.append(EntryLoadRequest.VERSIONED_WORKFLOW_STATE);
+ } else {
+ buff.append("c.comp_id.versionId");
+ buff.append("=3D");
+ buff.append(entryLoadRequest.getVersionID());
+ }
+
+ BitSet bits =3D new BitSet();
+
+ ApplicationContext context =3D SpringContextSingleton.getInstance(=
).getContext();
+ JahiaContainerManager containerMgr =3D (JahiaContainerManager) con=
text.getBean(JahiaContainerManager.class.getName());
+ List results =3D containerMgr.executeQuery(buff.toString(),paramet=
ers);
+ if ( results !=3D null && !results.isEmpty() ){
+ JahiaCtnEntryPK compId =3D null;
+ Iterator it =3D results.iterator();
+ Set stagedEntries =3D new HashSet();
+ while (it.hasNext()){
+ compId =3D (JahiaCtnEntryPK)it.next();
+ if (compId.getWorkflowState().intValue()>EntryLoadRequest.=
ACTIVE_WORKFLOW_STATE){
+ stagedEntries.add(compId.getId());
+ }
+ }
+ it =3D results.iterator();
+ while (it.hasNext()){
+ compId =3D (JahiaCtnEntryPK)it.next();
+ if ( compId.getWorkflowState().intValue() =3D=3D EntryLoad=
Request.ACTIVE_WORKFLOW_STATE
+ && stagedEntries.contains(compId.getId()) ){
+ continue;
+ } else if ( compId.getWorkflowState().intValue() > EntryLo=
adRequest.ACTIVE_WORKFLOW_STATE
+ && compId.getVersionId().intValue() =3D=3D -1){
+ continue;
+ }
+ bits.set(compId.getId().intValue());
+ }
+ }
+ return bits;
+ }
+
+ //--------------------------------------------------------------------=
------
+ /**
+ *
+ * The expected result is a bit set of matching container ids for a gi=
ven siteId.
+ * if siteId =3D -1 , return result from all sites
+ *
+ * The containerDefinitionName is ignored here, it is only kept due t=
o the implemented
+ * [EMAIL PROTECTED] ContainerFilterInterface} Interface. The internal
containerD=
efinitionNames array is
+ * used instead and is initialized by
+ * [EMAIL PROTECTED] #ContainerFilterByContainerDefinitions (String[]
containerDe=
finitionNames,EntryLoadRequest entryLoadRequest)}
+ *
+ * @param containerDefinitionName, IGNORED
+ * @param siteId
+ * @return BitSet bits, the expected result as a bit set of matching c=
tn ids,each bit position set to true correspond to matching ctn ids.
+ * @throws JahiaException
+ */
+ private BitSet doFilteringBySiteOld (int siteId,
+ String containerDefinitionName, int listId)
+ throws JahiaException
+ {
String fieldFilterQuery =3D this.getSelectBySiteID(siteId, contain=
erDefinitionName,true);
if (fieldFilterQuery =3D=3D null && !fieldFilterQuery.trim().equal=
s("")) {
return null;
Modified: trunk/core/src/java/org/jahia/data/containers/ContainerMetadataSo=
rterBean.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/data/containers/ContainerMetadataSorterBean.java&rev=3D19043&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/data/containers/ContainerMetadataSorterBe=
an.java (original)
+++ trunk/core/src/java/org/jahia/data/containers/ContainerMetadataSorterBe=
an.java Mon Nov 5 12:34:46 2007
@@ -22,27 +22,38 @@
=
package org.jahia.data.containers;
=
-import java.util.BitSet;
-import java.util.Collections;
-import java.util.Vector;
-import java.util.Locale;
-import java.text.Collator;
-
-import org.jahia.content.JahiaObject;
+import org.apache.regexp.RE;
+import org.apache.regexp.RESyntaxException;
+import org.jahia.bin.Jahia;
+import org.jahia.content.ContentDefinition;
+import org.jahia.data.fields.ExpressionMarker;
+import org.jahia.data.fields.JahiaDateField;
import org.jahia.data.fields.JahiaField;
import org.jahia.data.fields.LoadFlags;
import org.jahia.exceptions.JahiaException;
+import org.jahia.exceptions.JahiaPageNotFoundException;
+import org.jahia.hibernate.dao.JahiaContainerDAO;
+import org.jahia.hibernate.manager.JahiaContainerManager;
+import org.jahia.hibernate.manager.SpringContextSingleton;
import org.jahia.params.ProcessingContext;
import org.jahia.params.SoapParamBean;
import org.jahia.registries.ServicesRegistry;
+import org.jahia.resourcebundle.ResourceBundleMarker;
import org.jahia.services.containers.ContentContainer;
import org.jahia.services.fields.ContentField;
+import org.jahia.services.fields.ContentFieldTypes;
+import org.jahia.services.pages.ContentPage;
import org.jahia.services.sites.JahiaSite;
import org.jahia.services.usermanager.JahiaUser;
import org.jahia.services.version.EntryLoadRequest;
-import org.jahia.resourcebundle.*;
-import org.jahia.data.fields.*;
-import org.jahia.content.ContentDefinition;
+import org.jahia.utils.JahiaTools;
+import org.springframework.context.ApplicationContext;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.*;
=
/**
* Sort containers on metadata.
@@ -315,136 +326,376 @@
=
//--------------------------------------------------------------------=
------
/**
+ *
+ * @param BitSet bits, any bit position sset to true must correspond =
to a ctn id to include in the result.
+ * if you want all ctn ids in the
result, gieve a null BitSet.
+ * @return Vector, vector of sorted ctn ids.
+ */
+ protected Vector doStringSort(BitSet bits) throws JahiaException
+ {
+ ApplicationContext context =3D SpringContextSingleton.getInstance(=
).getContext();
+ JahiaContainerManager containerMgr =3D (JahiaContainerManager) con=
text.getBean(JahiaContainerManager.class.getName());
+ List ctnIds =3D containerMgr.getSortedContainerIds(new Integer(thi=
s.ctnListID),new Integer(this.siteId),
+ new Boolean(siteLevel),containerDefinitionName, fieldName,=
this.entryLoadRequest,false,false,
+ this.ASC_Ordering);
+ Vector v =3D new Vector();
+ if ( ctnIds !=3D null && !ctnIds.isEmpty() ){
+ Iterator it =3D ctnIds.iterator();
+ Integer workflowState =3D null;
+ Long versionId =3D null;
+ Integer ctnId =3D null;
+ Object[] row =3D null;
+ List orderedIds =3D new ArrayList();
+ Set stagedEntries =3D new HashSet();
+ while ( it.hasNext() ){
+ row =3D (Object[])it.next();
+ workflowState =3D (Integer)row[1];
+ versionId =3D (Long)row[2];
+ ctnId =3D (Integer)row[3];
+ if ( workflowState.intValue() > EntryLoadRequest.ACTIVE_WO=
RKFLOW_STATE ){
+ workflowState =3D new Integer(EntryLoadRequest.STAGING=
_WORKFLOW_STATE);
+ }
+ if (bits !=3D null && !bits.get(ctnId.intValue())){
+ continue;
+ }
+ if ( workflowState.intValue() > EntryLoadRequest.ACTIVE_WO=
RKFLOW_STATE ){
+ stagedEntries.add(ctnId);
+ }
+ orderedIds.add(new TmpData(ctnId,workflowState,versionId));
+ }
+ it =3D orderedIds.iterator();
+ TmpData data =3D null;
+ int wfs =3D 0;
+ while (it.hasNext()){
+ data =3D (TmpData)it.next();
+ wfs =3D data.getWorkflowState().intValue();
+ if ( wfs =3D=3D EntryLoadRequest.ACTIVE_WORKFLOW_STATE && =
stagedEntries.contains(data.getCtnId()) ) {
+ continue;
+ } else if ( wfs > EntryLoadRequest.ACTIVE_WORKFLOW_STATE &=
& data.getVersionId().intValue() =3D=3D -1 ){
+ continue;
+ }
+ v.add(data.getCtnId());
+ }
+ }
+ return v;
+ }
+
+ private class TmpData {
+ private Integer ctnId;
+ private Integer workflowState;
+ private Long versionId;
+
+ public TmpData(Integer ctnId, Integer workflowState, Long version=
Id) {
+ this.ctnId =3D ctnId;
+ this.workflowState =3D workflowState;
+ this.versionId =3D versionId;
+ }
+
+ public Integer getCtnId() {
+ return ctnId;
+ }
+
+ public void setCtnId(Integer ctnId) {
+ this.ctnId =3D ctnId;
+ }
+
+ public Integer getWorkflowState() {
+ return workflowState;
+ }
+
+ public void setWorkflowState(Integer workflowState) {
+ this.workflowState =3D workflowState;
+ }
+
+ public Long getVersionId() {
+ return versionId;
+ }
+
+ public void setVersionId(Long versionId) {
+ this.versionId =3D versionId;
+ }
+ }
+
+ //--------------------------------------------------------------------=
------
+ /**
* Load an hashtable of pair/value (ctnID,fieldValue) for a given ctnl=
ist and a given fieldName.
*
+ *
* @param int ctnListID, the container list id
* @param String fieldName, the fieldName
* @return Vector.
*/
- protected Vector getFieldValues(int ctnListID, String fieldName,
- boolean convertValueAsLong, BitSet bit=
s)
+ protected Vector getFieldValues(int ctnListID, String fieldName, boole=
an convertValueAsLong, BitSet bits)
throws JahiaException
{
- Locale locale =3D this.getEntryLoadRequest().getFirstLocale(true);
- Vector datas =3D new Vector();
- SoapParamBean jParams =3D new SoapParamBean(site,user);
- Vector containerIds =3D new Vector();
- if ( !this.siteLevel ){
- containerIds =3D ServicesRegistry.getInstance().getJahiaContai=
nersService()
- .getctnidsInList(ctnListID, this.getEntryLoadRequest());
- } else {
- if ( siteId > 0 ){
- containerIds =3D ServicesRegistry.getInstance().
- getJahiaContainersService().getCtnIds(siteI=
d);
-
- } else {
- containerIds =3D ServicesRegistry.getInstance().
- getJahiaContainersService().getCtnIds();
+
+ Set deletedCtns =3D ContainerFilterBean.getDeletedContainersSet(ct=
nListID);
+ Set stagingFields =3D getStagingFields(ctnListID,siteId,containerD=
efinitionName,fieldName,this.entryLoadRequest);
+
+ StringBuffer buff =3D new StringBuffer("SELECT DISTINCT b.id_jahia=
_obj,b.id_jahia_fields_data,b.value_jahia_fields_data,b.workflow_state,b.la=
nguage_code,b.type_jahia_fields_data FROM jahia_ctn_entries a, jahia_fields=
_data b, jahia_fields_def c ");
+ if (this.containerDefinitionName !=3D null &&
+ !"".equals(this.containerDefinitionName.trim()) ) {
+ buff.append(", jahia_ctn_def d ");
+ }
+ buff.append(" WHERE ");
+
+ if ( !this.siteLevel && this.ctnListID>0 ){
+ buff.append(" a.listid_jahia_ctn_entries=3D");
+ buff.append(ctnListID);
+ buff.append(" AND ");
+ }
+ if (this.siteId > 0) {
+ buff.append(" a.jahiaid_jahia_ctn_entries=3D");
+ buff.append(this.siteId);
+ buff.append(" AND b.jahiaid_jahia_fields_data=3D");
+ buff.append(this.siteId);
+ buff.append(" AND ");
}
+ if (this.containerDefinitionName !=3D null &&
+ !"".equals(this.containerDefinitionName.trim()) ) {
+ buff.append(" a.ctndefid_jahia_ctn_entries=3Dd.id_jahia_ctn_de=
f ");
+ buff.append(" AND d.name_jahia_ctn_def=3D'");
+ buff.append(JahiaTools.quote(this.containerDefinitionName));
+ buff.append("' AND ");
}
- int size =3D containerIds.size();
- int id =3D 0;
- ContentContainer contentContainer =3D null;
- ContentField contentField =3D null;
- JahiaField jahiaField =3D null;
- String fieldValue =3D null;
- Object obj =3D null;
- ContentDefinition contentDefinition =3D null;
- boolean checkMetadata =3D false;
- for ( int i=3D0 ; i<size; i++ ){
- id =3D ((Integer)containerIds.get(i)).intValue();
- if ( bits !=3D null && !bits.get(id) ){
- continue;
+
+ buff.append(" ( a.id_jahia_ctn_entries =3D b.id_jahia_obj AND b.ty=
pe_jahia_obj=3D'ContentContainer' AND b.fielddefid_jahia_fields_data =3D c.=
id_jahia_fields_def AND c.name_jahia_fields_def=3D'");
+ buff.append(JahiaTools.quote(fieldName));
+ buff.append("' ) AND (");
+ buff.append(ContainerFilterBean.buildMultilangAndWorlflowQuery(thi=
s.entryLoadRequest,true));
+ buff.append(") ORDER BY ");
+ buff.append(ContainerFilterBean.FIELD_ID);
+ buff.append(",");
+ buff.append(ContainerFilterBean.FIELD_WORKFLOW_STATE);
+
+ Connection dbConn;
+ Statement stmt =3D null;
+ ResultSet rs;
+
+ Locale locale =3D this.getEntryLoadRequest().getFirstLocale(true);
+ if ( locale =3D=3D null ){
+ locale =3D Locale.ENGLISH;
}
- contentContainer =3D ContentContainer.getContainer(id);
+
+ Vector datas =3D new Vector();
+ HashMap maps =3D new HashMap();
+ try
+ {
+ dbConn =3D org.jahia.services.database.ConnectionDispenser.get=
Connection();
+ stmt =3D dbConn.createStatement();
+ rs =3D stmt.executeQuery( buff.toString() );
+ while (rs.next())
+ {
+ int ctnID =3D rs.getInt(1);
+ int fieldID =3D rs.getInt(2);
+ String fieldValue =3D rs.getString(3);
+ int workflowState =3D rs.getInt(4);
+ String languageCode =3D rs.getString(5);
+ int type =3D rs.getInt(6);
+ if(type =3D=3D ContentFieldTypes.PAGE) {
+ try {
+ fieldValue =3D ContentPage.getPage(Integer.parseIn=
t(fieldValue)).getTitle(entryLoadRequest);
+ } catch (JahiaPageNotFoundException e) {
fieldValue =3D "";
- checkMetadata =3D false;
- if ( contentContainer !=3D null ){
+ }
+ } else if (type =3D=3D ContentFieldTypes.FILE) {
+ String[] arrays =3D fieldValue.split("/");
+ fieldValue =3D arrays[arrays.length-1];
+ } else if (type =3D=3D ContentFieldTypes.BIGTEXT) {
+ fieldValue =3D ContentField.getField(fieldID).getValue=
(Jahia.getThreadParamBean(), entryLoadRequest);
+ if (fieldValue !=3D null) {
+ fieldValue =3D JahiaTools.html2text(fieldValue);
try {
- contentDefinition =3D ContentDefinition.
- getContentDefinitionInstance(
- contentContainer
- .getDefinitionKey(this.getEntryLoadRequest()));
+ fieldValue =3D (new RE("<(.*?)>")).subst(field=
Value, "");
+ } catch (RESyntaxException re) {
+ logger.error(re.toString(), re);
} catch ( Throwable t ){
- logger.debug(t);
+ logger.error(t.toString(), t);
}
- if ( contentDefinition !=3D null ){
- if (this.siteId > 0) {
- if (this.siteId =3D=3D contentContainer.getSiteID()
- && (this.containerDefinitionName =3D=3D null ||
- this.containerDefinitionName.equals(
- contentDefinition.getName()))) {
- checkMetadata =3D true;
- }
- } else {
- if (this.containerDefinitionName =3D=3D null ||
- this.containerDefinitionName.equals(
- contentDefinition.getName())) {
- checkMetadata =3D true;
- }
- }
- }
- if (checkMetadata) {
- //MC: because ContainerMetadataSorterBean extends Cont=
ainerSorterBean, it only supports filtering on
- //one field, as opposed to ContainerSorterByContainerD=
efinition. So we only retrieve the first field:
- contentField =3D contentContainer.getMetadata(this.get=
SortingFieldNames()[0]);
- if (contentField !=3D null) {
- jahiaField =3D ServicesRegistry.getInstance().
- getJahiaFieldService()
- .loadField(contentField.getID(), Load=
Flags.ALL, jParams,
- this.getEntryLoadRequest()=
);
- if (jahiaField !=3D null) {
- if ( jahiaField instanceof JahiaDateField ){
- fieldValue =3D (String)jahiaField.getObjec=
t();
- } else {
- fieldValue =3D jahiaField.getRawValue();
}
}
+
+ if (fieldValue!=3Dnull && (bits =3D=3D null || bits.get(ct=
nID)) ){
+ if ( this.entryLoadRequest.isCurrent()
+ || !deletedCtns.contains(new Integer(ctnID))){
+ if ( workflowState > EntryLoadRequest.ACTIVE_WORKF=
LOW_STATE ){
+ workflowState =3D EntryLoadRequest.STAGING_WOR=
KFLOW_STATE;
}
=
- if (jParams !=3D null) {
+ if (Jahia.getThreadParamBean() !=3D null) {
// expression marker
- ExpressionMarker exprMarker =3D ExpressionMarker.
- parseMarkerValue(fieldValue,
- jParams);
+ ExpressionMarker exprMarker =3D ExpressionMark=
er.parseMarkerValue(fieldValue, Jahia.getThreadParamBean());
if (exprMarker !=3D null) {
try {
String value =3D exprMarker.getValue();
if (value !=3D null && !"".equals(value)) {
fieldValue =3D value;
}
- } catch (Throwable t) {
- logger.debug(
- "Problem while evaluating expression "=
+
- exprMarker.getExpr(), t);
+ }
+ catch (Throwable t) {
+ logger.debug("Problem while evaluating=
expression " + exprMarker.getExpr(), t);
}
}
}
=
// resbundle marker
- ResourceBundleMarker resMarker =3D ResourceBundleMarke=
r.
- parseMarkerValue(fieldValue);
+ ResourceBundleMarker resMarker =3D ResourceBundleM=
arker.parseMarkerValue(fieldValue);
if (resMarker !=3D null) {
try {
String value =3D resMarker.getValue(locale);
if (value !=3D null && !"".equals(value)) {
fieldValue =3D value;
}
- } catch (Throwable t) {
+ }
+ catch (Throwable t) {
+ logger.debug("Problem while evaluating res=
ource " + fieldValue, t);
+ }
}
+
+ TempField aField =3D new TempField(fieldID,ctnID,0=
,workflowState,languageCode,fieldValue);
+ String key =3D fieldID + "_" + workflowState + "_"=
+ languageCode;
+ maps.put(key,aField);
}
+ }
+ }
+ }
+ catch (SQLException se)
+ {
+ String errorMsg =3D "Error in getFieldValues : " + se.getMessa=
ge();
+ logger.error( errorMsg, se);
+ } finally {
+
+ closeStatement (stmt);
+ }
=
+ HashSet addedIds =3D new HashSet();
+ Iterator iterator =3D maps.values().iterator();
+ String valueToSort;
+ while ( iterator.hasNext() ){
+ TempField aField =3D (TempField)iterator.next();
+ if ( !addedIds.contains(new Integer(aField.id)) ){
+ String key =3D aField.id + "_" + aField.workflowState + "_=
" +
+ locale.toString();
+ if (!aField.languageCode.equals(ContentField.SHARED_LANGUA=
GE)
+ && maps.containsKey(key) &&
+ !aField.languageCode.equals(locale.toString())) {
+ continue;
+ } else if (!aField.languageCode.equals(ContentField.SHARED=
_LANGUAGE) && !maps.containsKey(key)) {
+ if (aField.workflowState>=3D2 && maps.containsKey(aFie=
ld.id + "_1_" +locale.toString())) {
+ continue;
+ }
+ // this field doesn't exist in the given language, so =
sort it as "" value
+ aField.value =3D "";
+ }
+ Object obj;
+ valueToSort =3D aField.value;
+ if ( this.fieldValueProvider !=3D null ){
+ valueToSort =3D this.fieldValueProvider.getFieldValue(=
aField.id, Jahia.getThreadParamBean(),
+ this.getEntryLoadRequest(), aField.value);
+ if ( valueToSort =3D=3D null ){
+ valueToSort =3D "";
+ }
+ }
if (convertValueAsLong) {
- obj =3D new DataBean(contentContainer.getID(),
- fieldValue);
+ obj =3D new DataBean(aField.ctnID, valueToSort);
} else {
- obj =3D new StrDataBean(contentContainer.getID(), =
fieldValue);
+ obj =3D new StrDataBean(aField.ctnID, valueToSort);
}
- if (obj !=3D null) {
+ if (this.entryLoadRequest.isCurrent()) {
datas.add(obj);
+ addedIds.add(new Integer(aField.id));
+ } else if (this.entryLoadRequest.isStaging()
+ &&
+ aField.workflowState >
+ EntryLoadRequest.ACTIVE_WORKFLOW_STATE) {
+ datas.add(obj);
+ addedIds.add(new Integer(aField.id));
+ } else if (aField.workflowState =3D=3D
+ EntryLoadRequest.ACTIVE_WORKFLOW_STATE
+ && !stagingFields.contains(new Integer(aField.i=
d))) {
+ datas.add(obj);
+ addedIds.add(new Integer(aField.id));
+ }
+ }
+ }
+
+ return datas;
+ }
+
+ //--------------------------------------------------------------------=
------
+ /**
+ * Returns an array of fields that are in staging.
+ *
+ * @param ctnListID
+ * @param siteId
+ * @param containerDefinitionName
+ * @param fieldName
+ * @param loadRequest
+ * @return
+ * @throws JahiaException
+ */
+ protected Set getStagingFields(int ctnListID, int siteId,
+ String containerDefinitionName, S=
tring fieldName,
+ EntryLoadRequest loadRequest)
+ throws JahiaException
+ {
+
+ StringBuffer buff =3D new StringBuffer("SELECT DISTINCT b.id_jahia=
_fields_data FROM jahia_ctn_entries a, jahia_fields_data b, jahia_fields_de=
f c ");
+ if (containerDefinitionName !=3D null &&
+ !"".equals(containerDefinitionName.trim()) ) {
+ buff.append(", jahia_ctn_def d ");
+ }
+ buff.append(" WHERE ");
+
+ if ( !this.siteLevel && ctnListID>0 ){
+ buff.append(" a.listid_jahia_ctn_entries=3D");
+ buff.append(ctnListID);
+ buff.append(" AND ");
+ }
+ if (this.siteId > 0) {
+ buff.append(" a.jahiaid_jahia_ctn_entries=3D");
+ buff.append(this.siteId);
+ buff.append(" AND b.jahiaid_jahia_fields_data=3D");
+ buff.append(this.siteId);
+ buff.append(" AND ");
}
+ if (containerDefinitionName !=3D null &&
+ !"".equals(containerDefinitionName.trim()) ) {
+ buff.append(" a.ctndefid_jahia_ctn_entries=3Dd.id_jahia_ctn_de=
f ");
+ buff.append(" AND d.name_jahia_ctn_def=3D'");
+ buff.append(JahiaTools.quote(containerDefinitionName));
+ buff.append("' AND ");
+ }
+
+ buff.append(" ( a.id_jahia_ctn_entries =3D b.id_jahia_obj AND b.ty=
pe_jahia_obj=3D'ContentContainer' AND b.fielddefid_jahia_fields_data =3D c.=
id_jahia_fields_def AND c.name_jahia_fields_def=3D'");
+ buff.append(JahiaTools.quote(fieldName));
+ buff.append("' ) AND b.workflow_state>1 AND (");
+ buff.append(ContainerFilterBean.buildMultilangAndWorlflowQuery(ent=
ryLoadRequest));
+ buff.append(") ");
+
+ Connection dbConn;
+ Statement stmt =3D null;
+ ResultSet rs;
+
+ HashSet datas =3D new HashSet();
+
+ try
+ {
+ dbConn =3D org.jahia.services.database.ConnectionDispenser.get=
Connection();
+ stmt =3D dbConn.createStatement();
+ rs =3D stmt.executeQuery( buff.toString() );
+
+ while (rs.next()) {
+ datas.add(new Integer(rs.getInt(1)));
}
}
+ catch (SQLException se)
+ {
+ String errorMsg =3D "Error in getStagingFields() : " + se.getM=
essage();
+ logger.error(errorMsg, se);
+ } finally {
+
+ closeStatement (stmt);
}
return datas;
}
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=3D19043&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 Mon =
Nov 5 12:34:46 2007
@@ -26,15 +26,13 @@
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
+import org.hibernate.Query;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Property;
-import org.jahia.bin.Jahia;
import org.jahia.content.ContentContainerKey;
-import org.jahia.hibernate.model.JahiaContainer;
-import org.jahia.hibernate.model.JahiaContainerProperty;
-import org.jahia.hibernate.model.JahiaContainerPropertyPK;
-import org.jahia.hibernate.model.JahiaCtnEntryPK;
+import org.jahia.hibernate.model.*;
+import org.jahia.services.fields.ContentField;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.utils.JahiaTools;
import org.springframework.orm.ObjectRetrievalFailureException;
@@ -1076,6 +1074,154 @@
"where p.comp_id.name=3D? and p.value=3D?", n=
ew Object[]{name, value});
}
=
+ public List getSortedContainerIds(Integer ctListId, Integer siteId, Bo=
olean siteLevel,
+ String containerDefinitionName, Stri=
ng fieldName,
+ EntryLoadRequest loadRequest, boolea=
n ignoreLang, boolean stagingOnly,
+ boolean ascendingOrder) {
+
+ StringBuffer buff =3D new StringBuffer(1024);
+ HashMap parameters =3D new HashMap();
+ parameters.put("fieldName",fieldName);
+ parameters.put("contentType",ContentContainerKey.CONTAINER_TYPE);
+ buff.append(" SELECT f.comp_id.id, f.comp_id.workflowState, f.comp=
_id.versionId, f.metadataOwnerId FROM JahiaFieldsData f ");
+ boolean addSiteParam =3D false;
+ boolean addContainerDefinitionNameParam =3D false;
+ boolean addContainerListIdParam =3D false;
+ if ( siteLevel !=3D null && siteLevel.booleanValue() ){
+ if (siteId !=3D null && siteId.intValue()>0 ){
+ parameters.put("siteId",siteId);
+ addSiteParam =3D true;
+ }
+ } else if ( (siteLevel=3D=3Dnull || !siteLevel.booleanValue()) ){
+ if ( containerDefinitionName !=3D null && !"".equals(container=
DefinitionName.trim()) ){
+ buff.append(", JahiaContainer c ");
+ parameters.put("containerDefinitionName",containerDefiniti=
onName);
+ addContainerDefinitionNameParam =3D true;
+ } else if (ctListId !=3D null && ctListId.intValue()>0) {
+ buff.append(", JahiaContainer c ");
+ parameters.put("ctListId",ctListId);
+ addContainerListIdParam =3D true;
+ }
+ }
+ buff.append(" WHERE f.fieldDefinition.name=3D :fieldName AND f.met=
adataOwnerType=3D :contentType ");
+ if ( addSiteParam ){
+ buff.append(" AND f.siteId=3D :siteId ");
+ }
+ if ( addContainerDefinitionNameParam ){
+ buff.append(" AND c.ctndef.name=3D :containerDefinitionName ");
+ }
+ if ( addContainerListIdParam ){
+ buff.append(" AND c.listid=3D :ctListId ");
+ }
+ if (addContainerDefinitionNameParam||addContainerListIdParam){
+ buff.append(" AND c.comp_id.id=3Df.metadataOwnerId ");
+ }
+ appendMultilangAndWorlflowParams(buff, parameters, loadRequest, ig=
noreLang, stagingOnly);
+ buff.append(" ORDER BY f.value ");
+ if ( !ascendingOrder ){
+ buff.append(" DESC ");
+ }
+ Query query =3D this.getSession().createQuery(buff.toString());
+ Iterator it =3D parameters.keySet().iterator();
+ while ( it.hasNext() ){
+ String name =3D (String)it.next();
+ Object parameter =3D parameters.get(name);
+ query.setParameter(name,parameter);
+ }
+ //query.setMaxResults(10000);
+ return query.list();
+
+ }
+
+ /**
+ *
+ * @param query
+ * @param params
+ * @param entryLoadRequest
+ * @param ignoreLang
+ * @param stagingOnly
+ */
+ private void appendMultilangAndWorlflowParams( StringBuffer query,
+ List params,
+ EntryLoadRequest entry=
LoadRequest,
+ boolean ignoreLang,
+ boolean stagingOnly ){
+
+ if ( entryLoadRequest.isCurrent()){
+ query.append(" AND f.comp_id.workflowState =3D ");
+ query.append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE);
+ } else if ( entryLoadRequest.isStaging() ) {
+ query.append(" AND f.comp_id.workflowState > ");
+ if ( stagingOnly ){
+ query.append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE);
+ } else {
+ query.append(EntryLoadRequest.VERSIONED_WORKFLOW_STATE);
+ }
+ } else {
+ query.append(" AND f.comp_id.versionId =3D ");
+ query.append(entryLoadRequest.getVersionID());
+ }
+ if ( !ignoreLang ) {
+ String languageCode =3D entryLoadRequest.getFirstLocale(true).
+ toString();
+ query.append(" AND (");
+ query.append("f.comp_id.languageCode =3D ? OR f.comp_id.langua=
geCode=3D ? ");
+ params.add(languageCode);
+ params.add(ContentField.SHARED_LANGUAGE);
+ query.append(" ) ");
+ }
+ }
+
+ /**
+ *
+ * @param query
+ * @param params
+ * @param entryLoadRequest
+ * @param ignoreLang
+ * @param stagingOnly
+ */
+ private void appendMultilangAndWorlflowParams( StringBuffer query,
+ HashMap params,
+ EntryLoadRequest entry=
LoadRequest,
+ boolean ignoreLang,
+ boolean stagingOnly ){
+
+ if ( entryLoadRequest.isCurrent()){
+ query.append(" AND f.comp_id.workflowState =3D ");
+ query.append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE);
+ } else if ( entryLoadRequest.isStaging() ) {
+ query.append(" AND f.comp_id.workflowState > ");
+ if ( stagingOnly ){
+ query.append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE);
+ } else {
+ query.append(EntryLoadRequest.VERSIONED_WORKFLOW_STATE);
+ }
+ } else {
+ query.append(" AND f.comp_id.versionId =3D ");
+ query.append(entryLoadRequest.getVersionID());
+ }
+ if ( !ignoreLang ) {
+ String languageCode =3D entryLoadRequest.getFirstLocale(true).
+ toString();
+ query.append(" AND (");
+ query.append("f.comp_id.languageCode =3D :languageCode OR f.co=
mp_id.languageCode=3D :sharedLanguageCode ");
+ params.put("languageCode",languageCode);
+ params.put("sharedLanguageCode",ContentField.SHARED_LANGUAGE);
+ query.append(" ) ");
+ }
+ }
+
+ public List executeQuery(String queryString, Map parameters){
+ Query query =3D this.getSession().createQuery(queryString);
+ Iterator it =3D parameters.keySet().iterator();
+ while ( it.hasNext() ){
+ String name =3D (String)it.next();
+ Object parameter =3D parameters.get(name);
+ query.setParameter(name,parameter);
+ }
+ return query.list();
+ }
+
=
}
=
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=3D19043&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 Mon Nov 5 12:34:46 2007
@@ -21,6 +21,8 @@
=
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.Query;
+import org.jahia.bin.Jahia;
import org.jahia.content.ContentContainerKey;
import org.jahia.content.ContentObject;
import org.jahia.content.CrossReferenceManager;
@@ -29,6 +31,7 @@
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.hibernate.dao.*;
import org.jahia.hibernate.model.JahiaCtnEntryPK;
+import org.jahia.params.ProcessingContext;
import org.jahia.services.cache.Cache;
import org.jahia.services.cache.CacheService;
import org.jahia.services.cache.GroupCacheKey;
@@ -38,8 +41,6 @@
import org.jahia.services.version.EntryStateable;
import org.jahia.services.version.JahiaSaveVersion;
import org.jahia.spring.advice.CacheAdvice;
-import org.jahia.bin.Jahia;
-import org.jahia.params.ProcessingContext;
import org.springframework.orm.ObjectRetrievalFailureException;
=
import java.util.*;
@@ -1200,5 +1201,26 @@
return dao.findContainerIdByPropertyNameAndValue(name, value);
}
=
+ public List getSortedContainerIds(Integer ctListId, Integer siteId, Bo=
olean siteLevel,
+ String containerDefinitionName, Stri=
ng fieldName,
+ EntryLoadRequest loadRequest, boolea=
n ignoreLang, boolean stagingOnly,
+ boolean ascendingOrder) {
+
+ return dao.getSortedContainerIds(ctListId, siteId, siteLevel,
+ containerDefinitionName, fieldName,
+ loadRequest, ignoreLang, stagingOnly,
+ ascendingOrder);
+ }
+
+ /**
+ *
+ * @param queryString
+ * @param paramaters
+ * @return
+ */
+ public List executeQuery(String queryString, Map parameters){
+ return dao.executeQuery(queryString,parameters);
+ }
+
}
=
Modified: trunk/core/src/java/org/jahia/services/containers/ContainerFactor=
y.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/containers/ContainerFactory.java&rev=3D19043&repname=3Dja=
hia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=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/ContainerFactory.java=
(original)
+++ trunk/core/src/java/org/jahia/services/containers/ContainerFactory.java=
Mon Nov 5 12:34:46 2007
@@ -806,7 +806,7 @@
}
if (!v.contains(ctnID)) v.add(ctnID);
=
- if ( i > endPos + 100 ){
+ if ( v.size() > endPos + cListPagination.getWi=
ndowSize() ){
break;
}
if (acl.getPermission(currentUser, JahiaBaseAC=
L.WRITE_RIGHTS)) {
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list