mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -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<FileInfo> pageOfNodeInfos = connector.getFileFolderService().list(folderNodeRef, true, true, null, sortProps, pageRequest);
|
||||
List<FileInfo> childrenList = pageOfNodeInfos.getPage();
|
||||
|
||||
if (max > 0)
|
||||
|
@@ -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<FileInfo> pageOfNodeInfos = this.fileFolderService.list(this.nodeRef, files, folders, ignoreTypeQNames, sortProps, pageRequest);
|
||||
|
||||
List<FileInfo> nodeInfos = pageOfNodeInfos.getPage();
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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());
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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<FileInfo> list(NodeRef contextNodeRef,
|
||||
boolean files,
|
||||
boolean folders,
|
||||
Set<QName> ignoreTypeQNames,
|
||||
|
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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<FileInfo>
|
||||
{
|
||||
}
|
Reference in New Issue
Block a user