Use a List rather than a Set for the sorting parameters, so order is preserved

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@30180 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Nick Burch
2011-09-02 11:45:40 +00:00
parent 61b88b74cc
commit 248f8b47af

View File

@@ -25,7 +25,6 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -161,14 +160,23 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions<NodeR
final List<Pair<QName, SortOrder>> sortPairs = (List)sortDetails.getSortPairs(); final List<Pair<QName, SortOrder>> sortPairs = (List)sortDetails.getSortPairs();
// Set sort / filter params // Set sort / filter params
Set<QName> sortFilterProps = new HashSet<QName>(filterProps.size() + sortPairs.size()); // Note - need to keep the sort properties in their requested order
for (FilterProp filter : filterProps) List<QName> sortFilterProps = new ArrayList<QName>(filterProps.size() + sortPairs.size());
{
sortFilterProps.add(filter.getPropName());
}
for (Pair<QName, SortOrder> sort : sortPairs) for (Pair<QName, SortOrder> sort : sortPairs)
{ {
sortFilterProps.add(sort.getFirst()); QName sortQName = sort.getFirst();
if(! sortFilterProps.contains(sortQName))
{
sortFilterProps.add(sortQName);
}
}
for (FilterProp filter : filterProps)
{
QName filterQName = filter.getPropName();
if(! sortFilterProps.contains(filterQName))
{
sortFilterProps.add(filterQName);
}
} }
int filterSortPropCnt = sortFilterProps.size(); int filterSortPropCnt = sortFilterProps.size();
@@ -279,7 +287,7 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions<NodeR
} }
// Set filter/sort props (between 0 and 3) // Set filter/sort props (between 0 and 3)
private int setFilterSortParams(Set<QName> filterSortProps, FilterSortNodeEntity params) private int setFilterSortParams(List<QName> filterSortProps, FilterSortNodeEntity params)
{ {
int cnt = 0; int cnt = 0;