ALF-7168 (RINF 09) - FileFolderService list

- minor: return PagingResults<FileInfo> (follow CQ results pattern)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28600 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2011-06-27 09:07:06 +00:00
parent f8f82b6fbb
commit 61a68effa5
7 changed files with 47 additions and 126 deletions

View File

@@ -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<QName> ignoreQNameTypes, List<Pair<QName, Boolean>> sortProps, PagingRequest pagingRequest)
public PagingResults<FileInfo> list(NodeRef contextNodeRef, boolean files, boolean folders, Set<QName> ignoreQNameTypes, List<Pair<QName, Boolean>> sortProps, PagingRequest pagingRequest)
{
ParameterCheck.mandatory("contextNodeRef", contextNodeRef);
ParameterCheck.mandatory("pagingRequest", pagingRequest);
@@ -359,7 +358,7 @@ public class FileFolderServiceImpl implements FileFolderService
Set<QName> searchTypeQNames = buildTypes(files, folders, ignoreQNameTypes);
// execute query
CannedQueryResults<NodeRef> results = listImpl(contextNodeRef, searchTypeQNames, sortProps, pagingRequest);
final CannedQueryResults<NodeRef> results = listImpl(contextNodeRef, searchTypeQNames, sortProps, pagingRequest);
List<NodeRef> nodeRefs = null;
if (results.getPageCount() > 0)
@@ -372,21 +371,50 @@ public class FileFolderServiceImpl implements FileFolderService
}
// set total count
Pair<Integer, Integer> totalCount = null;
final Pair<Integer, Integer> totalCount;
if (pagingRequest.getRequestTotalCountMax() > 0)
{
totalCount = results.getTotalResultCount();
}
else
{
totalCount = null;
}
boolean hasMoreItems = results.hasMoreItems();
List<FileInfo> nodeInfos = new ArrayList<FileInfo>(nodeRefs.size());
final List<FileInfo> nodeInfos = new ArrayList<FileInfo>(nodeRefs.size());
for (NodeRef nodeRef : nodeRefs)
{
nodeInfos.add(toFileInfo(nodeRef, true));
}
return new PagingFileInfoResultsImpl(nodeInfos, hasMoreItems, totalCount, results.getQueryExecutionId(), true);
return new PagingResults<FileInfo>()
{
@Override
public String getQueryExecutionId()
{
return results.getQueryExecutionId();
}
@Override
public List<FileInfo> getPage()
{
return nodeInfos;
}
@Override
public boolean hasMoreItems()
{
return results.hasMoreItems();
}
@Override
public Pair<Integer, Integer> getTotalResultCount()
{
return totalCount;
}
@Override
public boolean permissionsApplied()
{
return results.permissionsApplied();
}
};
}
private CannedQueryResults<NodeRef> listImpl(NodeRef contextNodeRef, boolean files, boolean folders)

View File

@@ -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<FileInfo> pagingResults = fileFolderService.list(workingRootNodeRef, true, true, null, null, pagingRequest);
assertNotNull(pagingResults);
assertFalse(pagingResults.hasMoreItems());

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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<FileInfo> nodeInfos;
private boolean hasMoreItems;
private Pair<Integer, Integer> totalResultCount;
private String queryExecutionId;
private boolean permissionsApplied;
public PagingFileInfoResultsImpl(List<FileInfo> nodeInfos, boolean hasMoreItems, Pair<Integer, Integer> totalResultCount, String queryExecutionId, boolean permissionsApplied)
{
this.nodeInfos = nodeInfos;
this.hasMoreItems = hasMoreItems;
this.totalResultCount = totalResultCount;
this.queryExecutionId = queryExecutionId;
this.permissionsApplied = permissionsApplied;
}
public List<FileInfo> getPage()
{
return nodeInfos;
}
public boolean hasMoreItems()
{
return hasMoreItems;
}
public Pair<Integer, Integer> getTotalResultCount()
{
return totalResultCount;
}
public String getQueryExecutionId()
{
return queryExecutionId;
}
public boolean permissionsApplied()
{
return permissionsApplied;
}
}