Merged HEAD (5.1) to 5.1.N (5.1.1)

117484 bhorje: CM-690 extensions


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.1.N/root@117568 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-11-14 13:35:26 +00:00
parent be8b2fa355
commit ea1b4f89c1
3 changed files with 136 additions and 1 deletions

View File

@@ -40,6 +40,8 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.repo.copy.AbstractBaseCopyService;
import org.alfresco.repo.model.filefolder.HiddenAspect.Visibility;
import org.alfresco.repo.model.filefolder.traitextender.FileFolderServiceExtension;
import org.alfresco.repo.model.filefolder.traitextender.FileFolderServiceTrait;
import org.alfresco.repo.node.getchildren.GetChildrenCannedQuery;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.search.QueryParameterDefImpl;
@@ -72,6 +74,11 @@ import org.alfresco.service.cmr.search.QueryParameterDefinition;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.traitextender.AJProxyTrait;
import org.alfresco.traitextender.Extend;
import org.alfresco.traitextender.ExtendedTrait;
import org.alfresco.traitextender.Extensible;
import org.alfresco.traitextender.Trait;
import org.alfresco.util.FileFilterMode;
import org.alfresco.util.FileFilterMode.Client;
import org.alfresco.util.GUID;
@@ -88,7 +95,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
*
* @author Derek Hulley
*/
public class FileFolderServiceImpl extends AbstractBaseCopyService implements FileFolderService
public class FileFolderServiceImpl extends AbstractBaseCopyService implements FileFolderService, Extensible
{
private static final String CANNED_QUERY_FILEFOLDER_LIST = "fileFolderGetChildrenCannedQueryFactory";
@@ -143,6 +150,8 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
// default cutoff - applies to list "all" methods
private int defaultListMaxResults = 5000;
private final ExtendedTrait<FileFolderServiceTrait> fileFolderTrait;
/**
* Default constructor
@@ -150,6 +159,8 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
public FileFolderServiceImpl()
{
super();
fileFolderTrait=new ExtendedTrait<FileFolderServiceTrait>(AJProxyTrait.create(createFileFolderTrait(),FileFolderServiceTrait.class));
}
public void setNamespaceService(NamespaceService namespaceService)
@@ -350,6 +361,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
}
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public List<FileInfo> list(NodeRef contextNodeRef)
{
// execute the query
@@ -443,6 +455,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
}
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public PagingResults<FileInfo> list(NodeRef contextNodeRef, boolean files, boolean folders, String pattern, Set<QName> ignoreQNames, List<Pair<QName, Boolean>> sortProps, PagingRequest pagingRequest)
{
ParameterCheck.mandatory("contextNodeRef", contextNodeRef);
@@ -459,6 +472,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public PagingResults<FileInfo> list(NodeRef rootNodeRef, Set<QName> searchTypeQNames, Set<QName> ignoreAspectQNames, List<Pair<QName, Boolean>> sortProps, PagingRequest pagingRequest)
{
CannedQueryResults<NodeRef> results = listImpl(rootNodeRef, null, searchTypeQNames, ignoreAspectQNames, sortProps, pagingRequest);
@@ -616,6 +630,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
* @see #search(NodeRef, String, boolean, boolean, boolean)
*/
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public List<FileInfo> search(NodeRef contextNodeRef, String namePattern, boolean includeSubFolders)
{
return search(contextNodeRef, namePattern, true, true, includeSubFolders);
@@ -627,6 +642,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
* Full search with all options
*/
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public List<FileInfo> search(
NodeRef contextNodeRef,
String namePattern,
@@ -955,6 +971,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
* @see #move(NodeRef, NodeRef, String)
*/
@Override
@Extend(traitAPI=FileFolderServiceTrait.class,extensionAPI=FileFolderServiceExtension.class)
public FileInfo rename(NodeRef sourceNodeRef, String newName) throws FileExistsException, FileNotFoundException
{
return moveOrCopy(sourceNodeRef, null, null, newName, true);
@@ -1670,5 +1687,103 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
{
return hiddenAspect.getVisibility(FileFilterMode.getClient(), nodeRef) != Visibility.Visible;
}
@Override
public <M extends Trait> ExtendedTrait<M> getTrait(Class<? extends M> traitAPI)
{
return (ExtendedTrait<M>) fileFolderTrait;
}
private FileFolderServiceTrait createFileFolderTrait()
{
return new FileFolderServiceTraitImpl(this);
}
public static class FileFolderServiceTraitImpl implements FileFolderServiceTrait
{
private FileFolderServiceImpl thisService;
public FileFolderServiceTraitImpl(FileFolderServiceImpl fileFolderServiceImpl)
{
thisService = fileFolderServiceImpl;
}
@Override
public Pair<Set<QName>, Set<QName>> buildSearchTypesAndIgnoreAspects(boolean files, boolean folders,
Set<QName> ignoreQNameTypes)
{
return thisService.buildSearchTypesAndIgnoreAspects(files,
folders,
ignoreQNameTypes);
}
@Override
public FileInfo createFileInfo(NodeRef nodeRef, QName typeQName, boolean isFolder, boolean isHidden,
Map<QName, Serializable> properties)
{
return new FileInfoImpl(nodeRef,
typeQName,
isFolder,
isHidden,
properties);
}
@Override
public FileFolderServiceType getType(QName typeQName)
{
return thisService.getType(typeQName);
}
@Override
public List<FileInfo> list(final NodeRef contextNodeRef)
{
return thisService.list(contextNodeRef);
}
@Override
public PagingResults<FileInfo> list(final NodeRef contextNodeRef, final boolean files, final boolean folders,
final String pattern, final Set<QName> ignoreQNames, final List<Pair<QName, Boolean>> sortProps,
final PagingRequest pagingRequest)
{
return thisService.list(contextNodeRef,
files,
folders,
pattern,
ignoreQNames,
sortProps,
pagingRequest);
}
@Override
public PagingResults<FileInfo> list(final NodeRef rootNodeRef, final Set<QName> searchTypeQNames,
final Set<QName> ignoreAspectQNames, final List<Pair<QName, Boolean>> sortProps,
final PagingRequest pagingRequest)
{
return thisService.list(rootNodeRef,
searchTypeQNames,
ignoreAspectQNames,
sortProps,
pagingRequest);
}
@Override
public List<FileInfo> search(final NodeRef contextNodeRef, final String namePattern, final boolean fileSearch,
final boolean folderSearch, final boolean includeSubFolders)
{
return thisService.search(contextNodeRef,
namePattern,
fileSearch,
folderSearch,
includeSubFolders);
}
@Override
public FileInfo rename(final NodeRef sourceNodeRef, final String newName) throws FileExistsException, FileNotFoundException
{
return thisService.rename(sourceNodeRef, newName);
}
};
}