You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by rf...@apache.org on 2010/02/11 00:09:54 UTC

svn commit: r908734 - in /lenya/branches/BRANCH_2_1_X/src/modules-core: administration/usecases/siteOverview.jx sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java

Author: rfrovarp
Date: Wed Feb 10 23:09:46 2010
New Revision: 908734

URL: http://svn.apache.org/viewvc?rev=908734&view=rev
Log:
Finally finish bug 44564. Will now sort file size numerically

Modified:
    lenya/branches/BRANCH_2_1_X/src/modules-core/administration/usecases/siteOverview.jx
    lenya/branches/BRANCH_2_1_X/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java

Modified: lenya/branches/BRANCH_2_1_X/src/modules-core/administration/usecases/siteOverview.jx
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_1_X/src/modules-core/administration/usecases/siteOverview.jx?rev=908734&r1=908733&r2=908734&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_1_X/src/modules-core/administration/usecases/siteOverview.jx (original)
+++ lenya/branches/BRANCH_2_1_X/src/modules-core/administration/usecases/siteOverview.jx Wed Feb 10 23:09:46 2010
@@ -33,6 +33,14 @@
         <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
         <input type="hidden" name="sort" value="${key}"/>
         <input type="hidden" name="order" value="${order}"/>
+        <jx:choose>
+          <jx:when test="${usecase.getParameter('numericTypes').contains(key)}">
+            <input type="hidden" name="type" value="numeric"/>
+          </jx:when>
+          <jx:otherwise>
+            <input type="hidden" name="type" value="alpha"/>
+          </jx:otherwise>
+        </jx:choose>
         <jx:forEach var="filter" items="${usecase.getParameter('filters')}">
           <input type="hidden" name="${filter}" value="${usecase.getParameter(filter)}"/>
         </jx:forEach>
@@ -136,4 +144,4 @@
       
     </div>
   </page:body>
-</page:page>
\ No newline at end of file
+</page:page>

Modified: lenya/branches/BRANCH_2_1_X/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_1_X/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java?rev=908734&r1=908733&r2=908734&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_1_X/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java (original)
+++ lenya/branches/BRANCH_2_1_X/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java Wed Feb 10 23:09:46 2010
@@ -90,6 +90,12 @@
 
     protected static final String DESC = "desc";
     protected static final String ASC = "asc";
+    
+    protected static final String TYPE = "type";
+    protected static final String ALPHA = "alpha";
+    protected static final String NUMERIC = "numeric";
+    protected static final String[] NUMERIC_KEYS = { KEY_CONTENT_LENGTH };
+    protected static final String PARAMETER_NUMERIC_TYPES = "numericTypes";
 
     protected void prepareView() throws Exception {
         super.prepareView();
@@ -107,10 +113,13 @@
             
             List filteredDocuments = filter(entries);
             sort(filteredDocuments);
+            
             setParameter(DOCUMENTS, filteredDocuments);
 
             setParameter(PARAMETER_KEYS, Arrays.asList(KEYS));
 
+            setParameter(PARAMETER_NUMERIC_TYPES, Arrays.asList(NUMERIC_KEYS));
+            
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -186,8 +195,9 @@
     protected void sort(List documents) {
         String sort = getParameterAsString(SORT);
         String order = getParameterAsString(ORDER, ASC);
+        String type = getParameterAsString(TYPE,ALPHA);
         if (sort != null) {
-            Comparator comparator = new EntryComparator(sort, order);
+            Comparator comparator = new EntryComparator(sort, order,type);
             Collections.sort(documents, comparator);
         }
     }
@@ -258,14 +268,26 @@
 
         private String key;
         private String order;
+        private String type;
 
         /**
          * @param key The key to compare.
          * @param order The order string ({@link SiteOverview#ASC} or {@link SiteOverview#DESC}).
          */
         public EntryComparator(String key, String order) {
-            this.key = key;
-            this.order = order;
+            this(key, order, ALPHA);
+        }
+        
+        /**
+         * @param key The key to compare.
+         * @param order The order string ({@link SiteOverview#ASC} or {@link SiteOverview#DESC}).
+         * @param type The type ({@link SiteOverview#ALPHA} or {@link SiteOverview#NUMERIC}).
+         */
+        public EntryComparator(String key, String order, String type)
+        {
+          this.key = key;
+          this.order = order;
+          this.type = type;
         }
 
         /**
@@ -274,17 +296,25 @@
         public int compare(Object arg0, Object arg1) {
             Entry e1 = (Entry) arg0;
             Entry e2 = (Entry) arg1;
-
-            String value1 = e1.getValue(this.key);
-            String value2 = e2.getValue(this.key);
-            if (this.order.equals(DESC))
-                return value2.compareTo(value1);
-            else
-                return value1.compareTo(value2);
+            
+            if(type.equals(NUMERIC)) {
+                Double value1 = e1.getDouble(this.key);
+                Double value2 = e2.getDouble(this.key);
+                if (this.order.equals(DESC))
+                    return value2.compareTo(value1);
+                else
+                    return value1.compareTo(value2);
+            } else {
+                String value1 = e1.getValue(this.key);
+                String value2 = e2.getValue(this.key);
+                if (this.order.equals(DESC))
+                    return value2.compareTo(value1);
+                else
+                    return value1.compareTo(value2);
+            }
         }
 
     }
-
     /**
      * Stores document-related information.
      */
@@ -313,6 +343,10 @@
         public String getValue(String key) {
             return (String) this.values.get(key);
         }
+        
+        public Double getDouble(String key) {
+          return Double.valueOf(getValue(key));
+        }
 
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org