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

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
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));
+        }
 
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.