knguyen 2005/04/26 15:30:48 CEST
Modified files: (Branch: JAHIA-4-1-BRANCH)
src/java/org/jahia/data/containers
ContainerFilterByCategories.java
ContainerSorterBean.java
ContainerSorterByContainerDefinition.java
Log:
- container filter by category filter by container definition name too
- sorterbean use Collator for string comparison
Revision Changes Path
1.6.2.1.2.1 +18 -3
jahia/src/java/org/jahia/data/containers/ContainerFilterByCategories.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/data/containers/ContainerFilterByCategories.java.diff?r1=1.6.2.1&r2=1.6.2.1.2.1&f=h
1.14.4.7.2.1 +38 -6
jahia/src/java/org/jahia/data/containers/ContainerSorterBean.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/data/containers/ContainerSorterBean.java.diff?r1=1.14.4.7&r2=1.14.4.7.2.1&f=h
1.4.4.7.2.1 +37 -27
jahia/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java.diff?r1=1.4.4.7&r2=1.4.4.7.2.1&f=h
Index: ContainerFilterByCategories.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/data/containers/Attic/ContainerFilterByCategories.java,v
retrieving revision 1.6.2.1
retrieving revision 1.6.2.1.2.1
diff -u -r1.6.2.1 -r1.6.2.1.2.1
--- ContainerFilterByCategories.java 12 Aug 2004 12:51:33 -0000 1.6.2.1
+++ ContainerFilterByCategories.java 26 Apr 2005 13:30:47 -0000
1.6.2.1.2.1
@@ -27,6 +27,7 @@
import java.util.Vector;
import org.jahia.content.ObjectKey;
+import org.jahia.content.ContentDefinition;
import org.jahia.exceptions.JahiaException;
import org.jahia.registries.ServicesRegistry;
import org.jahia.services.categories.Category;
@@ -229,7 +230,7 @@
for ( int i=0 ; i<size; i++ ){
ContentContainer contentContainer =
(ContentContainer)containers.get(i);
- // @todo : filter out here
+
result.set(contentContainer.getID());
}
}catch ( Throwable t ){
@@ -247,7 +248,7 @@
}
ContainerFilterByLoadRequest cfblr =
new ContainerFilterByLoadRequest(this.entryLoadRequest);
- BitSet result2 = cfblr.doFilterBySite(-1,null,-1);
+ BitSet result2 =
cfblr.doFilterBySite(siteId,containerDefinitionName,listId);
result.and(result2);
return result;
}
@@ -293,7 +294,21 @@
ContentContainer contentContainer =
(ContentContainer)ContentContainer.getInstance(curObjectKey);
if ( contentContainer != null ){
- val.add(contentContainer);
+ if ( containerDefinitionName != null ) {
+ try {
+ ContentDefinition definition =
ContentDefinition
+
.getInstance(contentContainer.getDefinitionKey(null));
+ if ( definition != null &&
+
containerDefinitionName.equalsIgnoreCase(definition.getName()) ){
+ val.add(contentContainer);
+ }
+ } catch ( Throwable t) {
+ logger.debug("Error retrieving container
definition for container "
+ + contentContainer.getID(),t);
+ }
+ } else {
+ val.add(contentContainer);
+ }
}
} catch (Throwable t){
logger.debug("Error loading contentContainer " +
curObjectKey.toString());
Index: ContainerSorterBean.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/data/containers/Attic/ContainerSorterBean.java,v
retrieving revision 1.14.4.7
retrieving revision 1.14.4.7.2.1
diff -u -r1.14.4.7 -r1.14.4.7.2.1
--- ContainerSorterBean.java 1 Sep 2004 16:34:27 -0000 1.14.4.7
+++ ContainerSorterBean.java 26 Apr 2005 13:30:47 -0000 1.14.4.7.2.1
@@ -43,6 +43,8 @@
import org.jahia.utils.JahiaConsole;
import org.jahia.utils.JahiaTools;
import java.io.Serializable;
+import java.text.Collator;
+
import org.jahia.services.fields.ContentField;
import org.jahia.bin.Jahia;
import org.jahia.data.fields.*;
@@ -157,6 +159,7 @@
* @param String containerListName, the container list name.
* @param ParamBean, the param bean.
* @param String the field name, the field on which to sort.
+ * @deprecated
*/
public ContainerSorterBean(String containerListName, ParamBean params,
String fieldName)
throws JahiaException
@@ -214,6 +217,7 @@
* @param ParamBean, the param bean.
* @param String the field name, the field on which to sort.
* @param boolean , force field values to be converted to long
representation before sorting ( if true ).
+ * @deprecated
*/
public ContainerSorterBean(String containerListName, ParamBean params,
String fieldName, boolean numberSort)
throws JahiaException
@@ -505,6 +509,8 @@
locale = Locale.ENGLISH;
}
+ Collator collator = this.getCollator();
+
Vector datas = new Vector();
HashMap maps = new HashMap();
try
@@ -603,7 +609,7 @@
}
}
else {
- obj = new StrDataBean(aField.ctnID, aField.value);
+ obj = new StrDataBean(aField.ctnID, aField.value,
collator);
}
if (this.entryLoadRequest.isCurrent()) {
datas.add(obj);
@@ -643,10 +649,12 @@
Vector datas =
this.getFieldValues(this.ctnListID,this.fieldName,this.isNumberOrdering(),bits);
+ Collator collator = this.getCollator();
+
// sort the datas
if ( datas.size()>1 ){
// a dummy dataBean
- StrDataBean dummyDataBean = new StrDataBean(ASC_Ordering);
+ StrDataBean dummyDataBean = new
StrDataBean(ASC_Ordering,collator);
Collections.sort(datas,dummyDataBean);
}
// retrieve sorted ids
@@ -748,16 +756,23 @@
int ctnID = 0;
String value = "";
boolean ASC_Ordering = true;
+ Collator collator = null;
- public StrDataBean (int ctnID, String value)
+ public StrDataBean (int ctnID, String value, Collator collator)
{
this.ctnID = ctnID;
this.value = value;
+ this.collator = collator;
+
+ if ( this.collator == null ){
+ this.collator = Collator.getInstance();
+ }
}
- public StrDataBean (boolean ASC_Ordering)
+ public StrDataBean (boolean ASC_Ordering, Collator collator)
{
this.ASC_Ordering = ASC_Ordering;
+ this.collator = collator;
}
public int compare(Object obj1, Object obj2) throws
ClassCastException {
@@ -765,9 +780,9 @@
StrDataBean dataBean1 = (StrDataBean)obj1;
StrDataBean dataBean2 = (StrDataBean)obj2;
if ( this.ASC_Ordering ){
- return
dataBean1.value.compareToIgnoreCase(dataBean2.value.toLowerCase());
+ return collator.compare(dataBean1.value,dataBean2.value);
} else {
- return
dataBean2.value.compareToIgnoreCase(dataBean1.value.toLowerCase());
+ return collator.compare(dataBean2.value,dataBean1.value);
}
}
}
@@ -837,6 +852,23 @@
return datas;
}
+ /**
+ * Return the collator instantiated with the first locale from the
internal EntryLoadRequest.
+ * If the entryLoadRequest is null, the localtor is instantiated with
the default locale of the system
+ * @return
+ */
+ private Collator getCollator(){
+ Collator collator = Collator.getInstance();
+ if ( this.getEntryLoadRequest() != null ){
+ Locale locale = null;
+ locale = this.getEntryLoadRequest().getFirstLocale(true);
+ if ( locale != null ){
+ collator = Collator.getInstance(locale);
+ }
+ }
+ return collator;
+ }
+
public String toString() {
StringBuffer buf = new StringBuffer();
if (result != null) {
Index: ContainerSorterByContainerDefinition.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/data/containers/Attic/ContainerSorterByContainerDefinition.java,v
retrieving revision 1.4.4.7
retrieving revision 1.4.4.7.2.1
diff -u -r1.4.4.7 -r1.4.4.7.2.1
--- ContainerSorterByContainerDefinition.java 30 Sep 2004 14:18:25 -0000
1.4.4.7
+++ ContainerSorterByContainerDefinition.java 26 Apr 2005 13:30:47 -0000
1.4.4.7.2.1
@@ -43,6 +43,8 @@
import org.jahia.utils.JahiaConsole;
import org.jahia.utils.JahiaTools;
import java.io.Serializable;
+import java.text.Collator;
+
import org.jahia.services.fields.ContentField;
import org.jahia.bin.Jahia;
import org.jahia.data.fields.*;
@@ -360,6 +362,7 @@
if ( locale == null ){
locale = Locale.ENGLISH;
}
+ Collator collator = this.getCollator();
Vector datas = new Vector();
HashMap maps = new HashMap();
@@ -459,7 +462,7 @@
}
}
else {
- obj = new StrDataBean(aField.ctnID, aField.value);
+ obj = new StrDataBean(aField.ctnID, aField.value,
collator);
}
if (this.entryLoadRequest.isCurrent()) {
datas.add(obj);
@@ -499,10 +502,12 @@
Vector datas = this.getFieldValues(bits);
+ Collator collator = this.getCollator();
+
// sort the datas
if ( datas.size()>1 ){
// a dummy dataBean
- StrDataBean dummyDataBean = new StrDataBean(ASC_Ordering);
+ StrDataBean dummyDataBean = new StrDataBean(ASC_Ordering,
collator);
Collections.sort(datas,dummyDataBean);
}
// retrieve sorted ids
@@ -598,50 +603,38 @@
}
}
-
//--------------------------------------------------------------------------
protected class StrDataBean implements Comparator
{
int ctnID = 0;
String value = "";
boolean ASC_Ordering = true;
+ Collator collator = null;
- public StrDataBean (int ctnID, String value)
+ public StrDataBean (int ctnID, String value, Collator collator)
{
this.ctnID = ctnID;
this.value = value;
+ this.collator = collator;
+
+ if ( this.collator == null ){
+ this.collator = Collator.getInstance();
+ }
}
- public StrDataBean (boolean ASC_Ordering)
+ public StrDataBean (boolean ASC_Ordering, Collator collator)
{
this.ASC_Ordering = ASC_Ordering;
+ this.collator = collator;
}
public int compare(Object obj1, Object obj2) throws
ClassCastException {
- StrDataBean dataBean1 = (StrDataBean)obj1;
- StrDataBean dataBean2 = (StrDataBean)obj2;
- String valueBean1 = "";
- if ( dataBean1 != null ){
- valueBean1 = dataBean1.value;
- }
-
- String valueBean2 = "";
-
- if ( dataBean2 != null ){
- valueBean2 = dataBean2.value;
- }
-
- if ( valueBean1 == null ){
- valueBean1 = "";
- }
- if ( valueBean2 == null ){
- valueBean2 = "";
- }
-
+ ContainerSorterBean.StrDataBean dataBean1 =
(ContainerSorterBean.StrDataBean)obj1;
+ ContainerSorterBean.StrDataBean dataBean2 =
(ContainerSorterBean.StrDataBean)obj2;
if ( this.ASC_Ordering ){
- return
valueBean1.compareToIgnoreCase(valueBean2.toLowerCase());
+ return collator.compare(dataBean1.value,dataBean2.value);
} else {
- return
valueBean2.compareToIgnoreCase(valueBean1.toLowerCase());
+ return collator.compare(dataBean2.value,dataBean1.value);
}
}
}
@@ -721,4 +714,21 @@
return datas;
}
+ /**
+ * Return the collator instantiated with the first locale from the
internal EntryLoadRequest.
+ * If the entryLoadRequest is null, the localtor is instantiated with
the default locale of the system
+ * @return
+ */
+ private Collator getCollator(){
+ Collator collator = Collator.getInstance();
+ if ( this.getEntryLoadRequest() != null ){
+ Locale locale = null;
+ locale = this.getEntryLoadRequest().getFirstLocale(true);
+ if ( locale != null ){
+ collator = Collator.getInstance(locale);
+ }
+ }
+ return collator;
+ }
+
}