Update of 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository
In directory james.mmbase.org:/tmp/cvs-serv12229

Modified Files:
      Tag: b1_6
        RepositoryUtil.java 
Log Message:
CMSC-1313  Assets: Sorting problems in list views.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository
See also: http://www.mmbase.org/jira/browse/CMSC-1313


Index: RepositoryUtil.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/RepositoryUtil.java,v
retrieving revision 1.36.2.2
retrieving revision 1.36.2.3
diff -u -b -r1.36.2.2 -r1.36.2.3
--- RepositoryUtil.java 5 Mar 2009 08:00:54 -0000       1.36.2.2
+++ RepositoryUtil.java 9 Mar 2009 09:10:07 -0000       1.36.2.3
@@ -36,6 +36,7 @@
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.FieldValueDateConstraint;
+import org.mmbase.storage.search.SearchQuery;
 import org.mmbase.storage.search.StepField;
 import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
 import org.mmbase.storage.search.implementation.BasicFieldValueDateConstraint;
@@ -810,24 +811,41 @@
 
    public static NodeList getLinkedElements(Node channel, List<String> 
contenttypes, String orderby, String direction,
          boolean useLifecycle, int offset, int maxNumber, int year, int month, 
int day) {
-      NodeQuery query = createLinkedContentQuery(channel, contenttypes, 
orderby, direction, useLifecycle, null, offset,
+      NodeList elements = getLinkedElements(channel, contenttypes, orderby, 
direction, useLifecycle, null, offset,
             maxNumber, year, month, day);
-      return query.getNodeManager().getList(query);
+      return elements;
    }
 
    public static NodeList getLinkedElements(Node channel, List<String> 
contenttypes, String orderby, String direction,
          boolean useLifecycle, String archive, int offset, int maxNumber, int 
year, int month, int day) {
-      NodeQuery query = createLinkedContentQuery(channel, contenttypes, 
orderby, direction, useLifecycle, archive,
-            offset, maxNumber, year, month, day);
-      return query.getNodeManager().getList(query);
+      NodeList elements = getLinkedElements(channel, contenttypes, orderby, 
direction, useLifecycle, archive, offset,
+            maxNumber, year, month, day, null);
+      return elements;
    }
 
    public static NodeList getLinkedElements(Node channel, List<String> 
contenttypes, String orderby, String direction,
          boolean useLifecycle, String archive, int offset, int maxNumber, int 
year, int month, int day,
          HashMap<String, Object> extraParameters) {
-      NodeQuery query = createLinkedContentQuery(channel, contenttypes, 
orderby, direction, useLifecycle, archive,
+      NodeQuery query;
+      NodeList elements;
+      // CMSC-1313 Sorting on TYPE should not sort of the otype value but the 
title of the type
+      if(orderby != null && "otype".equals(orderby)){
+         query = createLinkedContentQuery(channel, contenttypes, orderby, 
direction, useLifecycle, archive,
+               SearchQuery.DEFAULT_OFFSET, SearchQuery.DEFAULT_MAX_NUMBER, 
year, month, day, extraParameters);
+         elements = query.getNodeManager().getList(query);
+         boolean reverse = false;
+         if ("DOWN".equalsIgnoreCase(direction)) {
+            reverse = true;
+         }
+         Collections.sort(elements, new 
NodeGUITypeComparator(query.getCloud().getLocale(), reverse));
+         int toIndex = elements.size()<(offset+maxNumber)? elements.size(): 
(offset+maxNumber);
+         elements = elements.subNodeList(offset, toIndex);
+      }else {
+         query = createLinkedContentQuery(channel, contenttypes, orderby, 
direction, useLifecycle, archive,
             offset, maxNumber, year, month, day, extraParameters);
-      return query.getNodeManager().getList(query);
+         elements = query.getNodeManager().getList(query);
+      }
+      return elements;
    }
 
    public static NodeQuery createLinkedContentQuery(Node channel, List<String> 
contenttypes, String orderby,
@@ -915,24 +933,41 @@
 
    public static NodeList getCreatedAssets(Node channel, List<String> 
assettypes, String orderby, String direction,
          boolean useLifecycle, int offset, int maxNumber, int year, int month, 
int day) {
-      NodeQuery query = createCreatedAssetQuery(channel, assettypes, orderby, 
direction, useLifecycle, null, offset,
+      NodeList elements = getCreatedAssets(channel, assettypes, orderby, 
direction, useLifecycle, null, offset,
             maxNumber, year, month, day);
-      return query.getNodeManager().getList(query);
+      return elements;
    }
 
    public static NodeList getCreatedAssets(Node channel, List<String> 
assettypes, String orderby, String direction,
          boolean useLifecycle, String archive, int offset, int maxNumber, int 
year, int month, int day) {
-      NodeQuery query = createCreatedAssetQuery(channel, assettypes, orderby, 
direction, useLifecycle, archive, offset,
-            maxNumber, year, month, day);
-      return query.getNodeManager().getList(query);
+      NodeList elements = getCreatedAssets(channel, assettypes, orderby, 
direction, useLifecycle, archive, offset,
+            maxNumber, year, month, day, null);
+      return elements;
    }
 
    public static NodeList getCreatedAssets(Node channel, List<String> 
assettypes, String orderby, String direction,
          boolean useLifecycle, String archive, int offset, int maxNumber, int 
year, int month, int day,
          HashMap<String, Object> extraParameters) {
-      NodeQuery query = createCreatedAssetQuery(channel, assettypes, orderby, 
direction, useLifecycle, archive, offset,
-            maxNumber, year, month, day, extraParameters);
-      return query.getNodeManager().getList(query);
+      NodeQuery query;
+      NodeList elements;
+      // CMSC-1313 Sorting on TYPE should not sort of the otype value but the 
title of the type
+      if(orderby != null && "otype".equals(orderby)){
+         query = createCreatedAssetQuery(channel, assettypes, orderby, 
direction, useLifecycle, archive,
+               SearchQuery.DEFAULT_OFFSET, SearchQuery.DEFAULT_MAX_NUMBER, 
year, month, day, extraParameters);
+         elements = query.getNodeManager().getList(query);
+         boolean reverse = false;
+         if ("DOWN".equalsIgnoreCase(direction)) {
+            reverse = true;
+         }
+         Collections.sort(elements, new 
NodeGUITypeComparator(query.getCloud().getLocale(), reverse));
+         int toIndex = elements.size()<(offset+maxNumber)? elements.size(): 
(offset+maxNumber);
+         elements = elements.subNodeList(offset, toIndex);
+      }else {
+         query = createCreatedAssetQuery(channel, assettypes, orderby, 
direction, useLifecycle, archive,
+            offset, maxNumber, year, month, day, extraParameters);
+         elements = query.getNodeManager().getList(query);
+      }
+      return elements;
    }
 
    public static NodeQuery createCreatedAssetQuery(Node channel, List<String> 
assettypes, String orderby,
@@ -1637,4 +1672,5 @@
          addAssetToChannel(destChild,newChannel);
       }
    }
+   
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to