From 61a68effa54c49a6d88c88dcff8a7b9d08fe5914 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Mon, 27 Jun 2011 09:07:06 +0000 Subject: [PATCH] ALF-7168 (RINF 09) - FileFolderService list - minor: return PagingResults (follow CQ results pattern) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28600 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../opencmis/AlfrescoCmisService.java | 4 +- .../org/alfresco/repo/jscript/ScriptNode.java | 4 +- .../filefolder/FileFolderServiceImpl.java | 48 +++++++++--- .../filefolder/FileFolderServiceImplTest.java | 4 +- .../filefolder/PagingFileInfoResultsImpl.java | 76 ------------------- .../service/cmr/model/FileFolderService.java | 6 +- .../cmr/model/PagingFileInfoResults.java | 31 -------- 7 files changed, 47 insertions(+), 126 deletions(-) delete mode 100644 source/java/org/alfresco/repo/model/filefolder/PagingFileInfoResultsImpl.java delete mode 100644 source/java/org/alfresco/service/cmr/model/PagingFileInfoResults.java diff --git a/source/java/org/alfresco/opencmis/AlfrescoCmisService.java b/source/java/org/alfresco/opencmis/AlfrescoCmisService.java index 128a6ed3f6..bebdb05121 100644 --- a/source/java/org/alfresco/opencmis/AlfrescoCmisService.java +++ b/source/java/org/alfresco/opencmis/AlfrescoCmisService.java @@ -45,6 +45,7 @@ import org.alfresco.opencmis.dictionary.FolderTypeDefintionWrapper; import org.alfresco.opencmis.dictionary.PropertyDefintionWrapper; import org.alfresco.opencmis.dictionary.TypeDefinitionWrapper; import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; import org.alfresco.repo.content.encoding.ContentCharsetFinder; import org.alfresco.repo.node.getchildren.GetChildrenCannedQuery; import org.alfresco.repo.node.integrity.IntegrityException; @@ -60,7 +61,6 @@ import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.model.FileExistsException; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; -import org.alfresco.service.cmr.model.PagingFileInfoResults; import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentWriter; @@ -591,7 +591,7 @@ public class AlfrescoCmisService extends AbstractCmisService PagingRequest pageRequest = new PagingRequest(skipCount.intValue(), maxItems.intValue(), null); pageRequest.setRequestTotalCountMax(skipCount.intValue() + 1000); // TODO make this optional/configurable - affects whether numItems may be returned - PagingFileInfoResults pageOfNodeInfos = connector.getFileFolderService().list(folderNodeRef, true, true, null, sortProps, pageRequest); + PagingResults pageOfNodeInfos = connector.getFileFolderService().list(folderNodeRef, true, true, null, sortProps, pageRequest); List childrenList = pageOfNodeInfos.getPage(); if (max > 0) diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index 0eaec140f4..75c301340c 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -42,6 +42,7 @@ import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; import org.alfresco.repo.action.executer.TransformActionExecuter; import org.alfresco.repo.content.transform.magick.ImageTransformationOptions; import org.alfresco.repo.search.QueryParameterDefImpl; @@ -63,7 +64,6 @@ import org.alfresco.service.cmr.lock.LockStatus; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; -import org.alfresco.service.cmr.model.PagingFileInfoResults; import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; @@ -641,7 +641,7 @@ public class ScriptNode implements Serializable, Scopeable, NamespacePrefixResol PagingRequest pageRequest = new PagingRequest(skipOffset, maxItems, queryExecutionId); pageRequest.setRequestTotalCountMax(requestTotalCountMax); - PagingFileInfoResults pageOfNodeInfos = this.fileFolderService.list(this.nodeRef, files, folders, ignoreTypeQNames, sortProps, pageRequest); + PagingResults pageOfNodeInfos = this.fileFolderService.list(this.nodeRef, files, folders, ignoreTypeQNames, sortProps, pageRequest); List nodeInfos = pageOfNodeInfos.getPage(); diff --git a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java index 35eeb901ca..33fbae2a51 100644 --- a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java +++ b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java @@ -28,15 +28,16 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.ResourceBundle.Control; import java.util.Set; import java.util.Stack; +import java.util.ResourceBundle.Control; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.query.CannedQueryFactory; import org.alfresco.query.CannedQueryResults; import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; import org.alfresco.repo.node.getchildren.GetChildrenCannedQuery; import org.alfresco.repo.node.getchildren.GetChildrenCannedQueryFactory; import org.alfresco.repo.search.QueryParameterDefImpl; @@ -49,7 +50,6 @@ import org.alfresco.service.cmr.model.FileFolderServiceType; import org.alfresco.service.cmr.model.FileFolderUtil; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; -import org.alfresco.service.cmr.model.PagingFileInfoResults; import org.alfresco.service.cmr.model.SubFolderFilter; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; @@ -65,7 +65,6 @@ import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.search.QueryParameterDefinition; import org.alfresco.service.cmr.search.SearchService; -import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.GUID; @@ -351,7 +350,7 @@ public class FileFolderServiceImpl implements FileFolderService /* (non-Javadoc) * @see org.alfresco.service.cmr.model.FileFolderService#list(org.alfresco.service.cmr.repository.NodeRef, boolean, boolean, java.util.Set, org.alfresco.service.cmr.model.PagingSortRequest) */ - public PagingFileInfoResults list(NodeRef contextNodeRef, boolean files, boolean folders, Set ignoreQNameTypes, List> sortProps, PagingRequest pagingRequest) + public PagingResults list(NodeRef contextNodeRef, boolean files, boolean folders, Set ignoreQNameTypes, List> sortProps, PagingRequest pagingRequest) { ParameterCheck.mandatory("contextNodeRef", contextNodeRef); ParameterCheck.mandatory("pagingRequest", pagingRequest); @@ -359,7 +358,7 @@ public class FileFolderServiceImpl implements FileFolderService Set searchTypeQNames = buildTypes(files, folders, ignoreQNameTypes); // execute query - CannedQueryResults results = listImpl(contextNodeRef, searchTypeQNames, sortProps, pagingRequest); + final CannedQueryResults results = listImpl(contextNodeRef, searchTypeQNames, sortProps, pagingRequest); List nodeRefs = null; if (results.getPageCount() > 0) @@ -372,21 +371,50 @@ public class FileFolderServiceImpl implements FileFolderService } // set total count - Pair totalCount = null; + final Pair totalCount; if (pagingRequest.getRequestTotalCountMax() > 0) { totalCount = results.getTotalResultCount(); } + else + { + totalCount = null; + } - boolean hasMoreItems = results.hasMoreItems(); - - List nodeInfos = new ArrayList(nodeRefs.size()); + final List nodeInfos = new ArrayList(nodeRefs.size()); for (NodeRef nodeRef : nodeRefs) { nodeInfos.add(toFileInfo(nodeRef, true)); } - return new PagingFileInfoResultsImpl(nodeInfos, hasMoreItems, totalCount, results.getQueryExecutionId(), true); + return new PagingResults() + { + @Override + public String getQueryExecutionId() + { + return results.getQueryExecutionId(); + } + @Override + public List getPage() + { + return nodeInfos; + } + @Override + public boolean hasMoreItems() + { + return results.hasMoreItems(); + } + @Override + public Pair getTotalResultCount() + { + return totalCount; + } + @Override + public boolean permissionsApplied() + { + return results.permissionsApplied(); + } + }; } private CannedQueryResults listImpl(NodeRef contextNodeRef, boolean files, boolean folders) diff --git a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java index 9ac88ebc21..93c3face00 100644 --- a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java +++ b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java @@ -36,6 +36,7 @@ import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.model.ForumModel; import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.dictionary.DictionaryDAO; import org.alfresco.repo.dictionary.M2Model; @@ -51,7 +52,6 @@ import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileFolderServiceType; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; -import org.alfresco.service.cmr.model.PagingFileInfoResults; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; @@ -218,7 +218,7 @@ public class FileFolderServiceImplTest extends TestCase // sanity checks only (see also GetChildrenCannedQueryTest) PagingRequest pagingRequest = new PagingRequest(100, null); - PagingFileInfoResults pagingResults = fileFolderService.list(workingRootNodeRef, true, true, null, null, pagingRequest); + PagingResults pagingResults = fileFolderService.list(workingRootNodeRef, true, true, null, null, pagingRequest); assertNotNull(pagingResults); assertFalse(pagingResults.hasMoreItems()); diff --git a/source/java/org/alfresco/repo/model/filefolder/PagingFileInfoResultsImpl.java b/source/java/org/alfresco/repo/model/filefolder/PagingFileInfoResultsImpl.java deleted file mode 100644 index a8ca305500..0000000000 --- a/source/java/org/alfresco/repo/model/filefolder/PagingFileInfoResultsImpl.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2005-2011 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.model.filefolder; - -import java.util.List; - -import org.alfresco.query.PermissionedResults; -import org.alfresco.service.cmr.model.FileInfo; -import org.alfresco.service.cmr.model.PagingFileInfoResults; -import org.alfresco.util.Pair; - -/** - * Page of FileInfo results - * - * @author janv - * @since 4.0 - */ -/* package */ class PagingFileInfoResultsImpl implements PagingFileInfoResults, PermissionedResults -{ - private List nodeInfos; - - private boolean hasMoreItems; - private Pair totalResultCount; - private String queryExecutionId; - private boolean permissionsApplied; - - public PagingFileInfoResultsImpl(List nodeInfos, boolean hasMoreItems, Pair totalResultCount, String queryExecutionId, boolean permissionsApplied) - { - this.nodeInfos = nodeInfos; - this.hasMoreItems = hasMoreItems; - this.totalResultCount = totalResultCount; - this.queryExecutionId = queryExecutionId; - this.permissionsApplied = permissionsApplied; - } - - public List getPage() - { - return nodeInfos; - } - - public boolean hasMoreItems() - { - return hasMoreItems; - } - - public Pair getTotalResultCount() - { - return totalResultCount; - } - - public String getQueryExecutionId() - { - return queryExecutionId; - } - - public boolean permissionsApplied() - { - return permissionsApplied; - } -} diff --git a/source/java/org/alfresco/service/cmr/model/FileFolderService.java b/source/java/org/alfresco/service/cmr/model/FileFolderService.java index eaa70cf126..a828b20609 100644 --- a/source/java/org/alfresco/service/cmr/model/FileFolderService.java +++ b/source/java/org/alfresco/service/cmr/model/FileFolderService.java @@ -22,14 +22,13 @@ import java.util.List; import java.util.Set; import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; import org.alfresco.service.Auditable; -import org.alfresco.service.PublicService; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.util.Pair; - import org.springframework.extensions.surf.util.I18NUtil; /** @@ -62,7 +61,8 @@ public interface FileFolderService * @author janv * @since 4.0 */ - public PagingFileInfoResults list(NodeRef contextNodeRef, + @Auditable(parameters = {"contextNodeRef", "files", "folders", "ignoreTypeQNames", "sortProps", "pagingRequest"}) + public PagingResults list(NodeRef contextNodeRef, boolean files, boolean folders, Set ignoreTypeQNames, diff --git a/source/java/org/alfresco/service/cmr/model/PagingFileInfoResults.java b/source/java/org/alfresco/service/cmr/model/PagingFileInfoResults.java deleted file mode 100644 index fdcade8f01..0000000000 --- a/source/java/org/alfresco/service/cmr/model/PagingFileInfoResults.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2005-2011 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.service.cmr.model; - -import org.alfresco.query.PagingResults; - -/** - * Response for page of FileInfo results - * - * @author janv - * @since 4.0 - */ -public interface PagingFileInfoResults extends PagingResults -{ -}