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