From cfd0fd6436d870432062fdc2578c510deb43f773 Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Wed, 30 Apr 2014 16:08:40 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 68116: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (4.3/Cloud) 67126: Merged DEV to V4.2-BUG-FIX (4.2.3) 66872 : MNT-10169 : Sort order by name is not always correct when the file name has alphanumeric characters - Overwrite RuleBasedCollator rules to consider space-character. Fix related test git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@68404 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../getchildren/GetChildrenCannedQuery.java | 31 +++++++++++++++- .../filefolder/FileFolderServiceImplTest.java | 37 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java index 030f2a5a09..e5bdfcad94 100644 --- a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java +++ b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java @@ -20,6 +20,8 @@ package org.alfresco.repo.node.getchildren; import java.io.Serializable; import java.text.Collator; +import java.text.ParseException; +import java.text.RuleBasedCollator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -371,7 +373,8 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions> sortProps) { this.sortProps = sortProps; - this.collator = Collator.getInstance(I18NUtil.getContentLocale()); + // try to overrider collator comparison rules + this.collator = updateCollatorRules(Collator.getInstance(I18NUtil.getContentLocale())); } public int compare(FilterSortNode n1, FilterSortNode n2) @@ -449,6 +452,32 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions inclusiveAspects, Set exclusiveAspects) { if (inclusiveAspects == null && exclusiveAspects == null) diff --git a/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java b/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java index 9d26529b3b..f025cc9840 100644 --- a/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java @@ -1507,6 +1507,43 @@ public class FileFolderServiceImplTest extends TestCase checkPages(nodeRef1, pageSize, totalItems, true, 4); } + public void testListNotIgnoreSpaces() + { + String [] foldersToTest = new String[] { + "A B", + "AA", + "AC" + }; + + NodeRef testFolder = fileFolderService.create(workingRootNodeRef, "" + System.currentTimeMillis(), ContentModel.TYPE_FOLDER).getNodeRef(); + + // create provided nodes + for (String folder : foldersToTest) + { + fileFolderService.create(testFolder, folder, ContentModel.TYPE_FOLDER).getNodeRef(); + } + + PagingRequest pagingRequest = new PagingRequest(100, null); + // ensure sort by property name + List> sortProps = new ArrayList>(1); + sortProps.add(new Pair(ContentModel.PROP_NAME, true)); + // list nodes + PagingResults pagingResults = fileFolderService.list(testFolder, true, true, null, null, sortProps, pagingRequest); + List files = pagingResults.getPage(); + + assertEquals(files.size(), foldersToTest.length); + + for (int index = 0; index < files.size(); index++) + { + // ensure node order is expected + String folderName = files.get(index).getName(); + String excpectedFolderName = foldersToTest[index]; + assertEquals(folderName, excpectedFolderName); + } + + System.out.println(files); + } + private void checkPages(NodeRef parentRef, int pageSize, int totalItems, boolean hideCheckedOut, int checkedOutChildIdx) { Set ignoreQNameTypes = null;