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;
  +    }
  +
   }
  

Reply via email to