knguyen     2005/11/15 17:11:08 CET

  Modified files:
    core/src/java/org/jahia/data/containers 
                                            ContainerSorterBean.java 
                                            
ContainerSorterByContainerDefinition.java 
    core/src/webapp/WEB-INF/var/shared_templates 
                                                 corporate_portal_templates.jar 
  Added files:
    core/src/java/org/jahia/data/containers 
                                            
ContainerSorterFieldValueProvider.java 
    
core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl 
                                                                                
  FileNameProvider.java 
                                                                                
  FileSizeProvider.java 
  Log:
  - extending Container Sorter in order to be able to sort by filename, file 
size, ...
  
  Revision  Changes      Path
  1.15      +21 -2       
jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java.diff?r1=1.14&r2=1.15&f=h
  1.14      +21 -2       
jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java.diff?r1=1.13&r2=1.14&f=h
  1.1       +30 -0       
jahia/core/src/java/org/jahia/data/containers/ContainerSorterFieldValueProvider.java
 (new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterFieldValueProvider.java?rev=1.1&content-type=text/plain
  1.1       +62 -0       
jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileNameProvider.java
 (new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileNameProvider.java?rev=1.1&content-type=text/plain
  1.1       +49 -0       
jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileSizeProvider.java
 (new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileSizeProvider.java?rev=1.1&content-type=text/plain
  1.77      +1423 -1470  
jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar.diff?r1=1.76&r2=1.77&f=h
  
  
  
  Index: ContainerSorterFieldValueProvider.java
  ====================================================================
  package org.jahia.data.containers;
  
  import org.jahia.services.version.EntryLoadRequest;
  import org.jahia.params.ProcessingContext;
  
  import java.io.Serializable;
  
  /**
   * Created by IntelliJ IDEA.
   * User: hollis
   * Date: 15 nov. 2005
   * Time: 13:36:54
   * To change this template use File | Settings | File Templates.
   */
  public interface ContainerSorterFieldValueProvider extends Serializable {
  
      /**
       *
       * @param fieldId
       * @param params
       * @param loadRequest
       * @param defaultValue
       * @return
       */
      public String getFieldValue(int fieldId,
                                  ProcessingContext params,
                                  EntryLoadRequest loadRequest,
                                  String defaultValue);
  
  }
  
  
  
  Index: ContainerSorterBean.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ContainerSorterBean.java  23 Sep 2005 11:22:32 -0000      1.14
  +++ ContainerSorterBean.java  15 Nov 2005 16:11:04 -0000      1.15
  @@ -86,6 +86,8 @@
   
       protected EntryLoadRequest entryLoadRequest = EntryLoadRequest.CURRENT;
   
  +    protected ContainerSorterFieldValueProvider fieldValueProvider;
  +
       protected ContainerSorterBean(){}
   
       
//--------------------------------------------------------------------------
  @@ -468,6 +470,14 @@
           this.updated = false;
       }
   
  +    public ContainerSorterFieldValueProvider getFieldValueProvider() {
  +        return fieldValueProvider;
  +    }
  +
  +    public void setFieldValueProvider(ContainerSorterFieldValueProvider 
fieldValueProvider) {
  +        this.fieldValueProvider = fieldValueProvider;
  +    }
  +
       
//--------------------------------------------------------------------------
       /**
        * Load an hashtable of pair/value (ctnID,fieldValue) for a given 
ctnlist and a given fieldName.
  @@ -577,6 +587,7 @@
           Vector addedIds = new Vector();
           int size = maps.size();
           Iterator iterator = maps.values().iterator();
  +        String valueToSort = null;
           while ( iterator.hasNext() ){
               TempField aField = (TempField)iterator.next();
               if ( !addedIds.contains(new Integer(aField.id)) ){
  @@ -591,10 +602,18 @@
                       aField.value = "";
                   }
                   Object obj = null;
  +                valueToSort = aField.value;
  +                if ( this.fieldValueProvider != null ){
  +                    valueToSort = 
this.fieldValueProvider.getFieldValue(aField.id, Jahia.getThreadParamBean(),
  +                            this.getEntryLoadRequest(), aField.value);
  +                    if ( valueToSort == null ){
  +                        valueToSort = "";
  +                    }
  +                }
                   if (convertValueAsLong) {
  -                    obj = new DataBean(aField.ctnID,aField.value);
  +                    obj = new DataBean(aField.ctnID, valueToSort);
                   } else {
  -                    obj = new StrDataBean(aField.ctnID, aField.value, 
collator);
  +                    obj = new StrDataBean(aField.ctnID, valueToSort, 
collator);
                   }
                   if (this.entryLoadRequest.isCurrent()) {
                       datas.add(obj);
  
  
  
  Index: ContainerSorterByContainerDefinition.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ContainerSorterByContainerDefinition.java 23 Sep 2005 11:22:32 -0000      
1.13
  +++ ContainerSorterByContainerDefinition.java 15 Nov 2005 16:11:04 -0000      
1.14
  @@ -86,6 +86,8 @@
       //** sorted ctnids **/
       protected Vector result;
   
  +    protected ContainerSorterFieldValueProvider fieldValueProvider;
  +
       protected EntryLoadRequest entryLoadRequest = EntryLoadRequest.CURRENT;
   
       
//--------------------------------------------------------------------------
  @@ -435,6 +437,14 @@
           this.updated = false;
       }
   
  +    public ContainerSorterFieldValueProvider getFieldValueProvider() {
  +        return fieldValueProvider;
  +    }
  +
  +    public void setFieldValueProvider(ContainerSorterFieldValueProvider 
fieldValueProvider) {
  +        this.fieldValueProvider = fieldValueProvider;
  +    }
  +
       
//--------------------------------------------------------------------------
       /**
        * Load an hashtable of pair/value (ctnID,fieldValue) .
  @@ -593,6 +603,7 @@
           Vector addedIds = new Vector();
           int size = maps.size();
           Iterator iterator = maps.values().iterator();
  +        String valueToSort = null;
           while ( iterator.hasNext() ){
               TempField aField = (TempField)iterator.next();
               if ( !addedIds.contains(new Integer(aField.id)) ){
  @@ -607,10 +618,18 @@
                       aField.value = "";
                   }
                   Object obj = null;
  +                valueToSort = aField.value;
  +                if ( this.fieldValueProvider != null ){
  +                    valueToSort = 
this.fieldValueProvider.getFieldValue(aField.id, Jahia.getThreadParamBean(),
  +                            this.getEntryLoadRequest(), aField.value);
  +                    if ( valueToSort == null ){
  +                        valueToSort = "";
  +                    }
  +                }
                   if (this.numberSort) {
  -                    obj = new DataBean(aField.ctnID,aField.value);
  +                    obj = new DataBean(aField.ctnID, valueToSort);
                   } else {
  -                    obj = new StrDataBean(aField.ctnID, aField.value, 
collator);
  +                    obj = new StrDataBean(aField.ctnID, valueToSort, 
collator);
                   }
                   if (this.entryLoadRequest.isCurrent()) {
                       datas.add(obj);
  
  
  
  Index: FileNameProvider.java
  ====================================================================
  package org.jahia.data.containers.containersorterfieldvalueproviderimpl;
  
  import org.jahia.services.version.EntryLoadRequest;
  import org.jahia.params.ProcessingContext;
  import org.jahia.data.containers.ContainerSorterFieldValueProvider;
  import org.jahia.data.fields.JahiaFileFieldWrapper;
  import org.jahia.data.fields.LoadFlags;
  import org.jahia.data.files.JahiaFileField;
  import org.jahia.registries.ServicesRegistry;
  import org.jahia.bin.Jahia;
  
  /**
   * Created by IntelliJ IDEA.
   * User: hollis
   * Date: 15 nov. 2005
   * Time: 13:36:54
   * To change this template use File | Settings | File Templates.
   */
  public class FileNameProvider implements ContainerSorterFieldValueProvider {
  
      private boolean withFullPath;
  
      /**
       * Returns the file name of a file within a JahiaFieldFieldWrapper
       *
       * @param fieldId
       * @param params
       * @param loadRequest
       * @param defaultValue
       * @return
       */
      public String getFieldValue(int fieldId,
                                  ProcessingContext params,
                                  EntryLoadRequest loadRequest,
                                  String defaultValue) {
          String value;
          // use the file name as field value
          try {
              JahiaFileFieldWrapper jahiaField = (JahiaFileFieldWrapper) 
ServicesRegistry.getInstance()
                      .getJahiaFieldService()
                      .loadField(fieldId, LoadFlags.ALL, 
Jahia.getThreadParamBean());
              JahiaFileField fileField = (JahiaFileField)jahiaField.getObject();
              value = fileField.getRealName();
              if ( !withFullPath && value != null && value.indexOf("/") != -1 ) 
{
                  value = 
value.substring(value.lastIndexOf("/")+1,value.length());
              }
          } catch ( Throwable t ){
              // could not retrieve the file name
              value = "";
          }
          return value;
      }
  
      public boolean isWithFullPath() {
          return withFullPath;
      }
  
      public void setWithFullPath(boolean withFullPath) {
          this.withFullPath = withFullPath;
      }
  
  }
  
  
  
  Index: FileSizeProvider.java
  ====================================================================
  package org.jahia.data.containers.containersorterfieldvalueproviderimpl;
  
  import org.jahia.services.version.EntryLoadRequest;
  import org.jahia.params.ProcessingContext;
  import org.jahia.data.containers.ContainerSorterFieldValueProvider;
  import org.jahia.data.fields.JahiaFileFieldWrapper;
  import org.jahia.data.fields.LoadFlags;
  import org.jahia.data.files.JahiaFileField;
  import org.jahia.registries.ServicesRegistry;
  import org.jahia.bin.Jahia;
  
  /**
   * Created by IntelliJ IDEA.
   * User: hollis
   * Date: 15 nov. 2005
   * Time: 13:36:54
   * To change this template use File | Settings | File Templates.
   */
  public class FileSizeProvider implements ContainerSorterFieldValueProvider {
  
      /**
       * Returns the file size of a file within a JahiaFieldFieldWrapper
       *
       * @param fieldId
       * @param params
       * @param loadRequest
       * @param defaultValue
       * @return
       */
      public String getFieldValue(int fieldId,
                                  ProcessingContext params,
                                  EntryLoadRequest loadRequest,
                                  String defaultValue) {
          String value;
          // use the file size as field value
          try {
              JahiaFileFieldWrapper jahiaField = (JahiaFileFieldWrapper) 
ServicesRegistry.getInstance()
                      .getJahiaFieldService()
                      .loadField(fieldId, LoadFlags.ALL, 
Jahia.getThreadParamBean());
              JahiaFileField fileField = (JahiaFileField)jahiaField.getObject();
              value = String.valueOf(fileField.getSize());
          } catch ( Throwable t ){
              // could not retrieve the file size
              value = "0";
          }
          return value;
      }
  
  }
  
  
  
  Index: corporate_portal_templates.jar
  ===================================================================
        <<Binary file>>
  

Reply via email to