Search in sources :

Example 51 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class FileFolderServiceImpl method search.

/**
 * Full search with all options
 */
@Override
@Extend(traitAPI = FileFolderServiceTrait.class, extensionAPI = FileFolderServiceExtension.class)
public List<FileInfo> search(NodeRef contextNodeRef, String namePattern, boolean fileSearch, boolean folderSearch, boolean includeSubFolders) {
    // get the raw nodeRefs
    List<NodeRef> nodeRefs = searchInternal(contextNodeRef, namePattern, fileSearch, folderSearch, includeSubFolders);
    List<FileInfo> results = toFileInfo(nodeRefs);
    // eliminate unwanted files/folders
    Iterator<FileInfo> iterator = results.iterator();
    while (iterator.hasNext()) {
        FileInfo file = iterator.next();
        if (file.isFolder() && !folderSearch) {
            iterator.remove();
        } else if (!file.isFolder() && !fileSearch) {
            iterator.remove();
        }
    }
    // done
    if (logger.isTraceEnabled()) {
        logger.trace("Deep search: \n" + "   context: " + contextNodeRef + "\n" + "   pattern: " + namePattern + "\n" + "   files: " + fileSearch + "\n" + "   folders: " + folderSearch + "\n" + "   deep: " + includeSubFolders + "\n" + "   results: " + results);
    }
    return results;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) FileInfo(org.alfresco.service.cmr.model.FileInfo) Extend(org.alfresco.traitextender.Extend)

Example 52 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method getStores.

/**
 * {@inheritDoc}
 */
@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public List<StoreRef> getStores() {
    // Get the ADM stores
    List<Pair<Long, StoreRef>> stores = nodeDAO.getStores();
    List<StoreRef> storeRefs = new ArrayList<StoreRef>(50);
    for (Pair<Long, StoreRef> pair : stores) {
        StoreRef storeRef = pair.getSecond();
        if (storeRef.getProtocol().equals(StoreRef.PROTOCOL_DELETED)) {
            // Ignore
            continue;
        }
        storeRefs.add(storeRef);
    }
    // Return them all.
    return storeRefs;
}
Also used : StoreRef(org.alfresco.service.cmr.repository.StoreRef) ArrayList(java.util.ArrayList) Pair(org.alfresco.util.Pair) Extend(org.alfresco.traitextender.Extend)

Example 53 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method getChildAssocs.

@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public List<ChildAssociationRef> getChildAssocs(NodeRef nodeRef, Set<QName> childNodeTypeQNames) {
    // Get the node
    Pair<Long, NodeRef> nodePair = getNodePairNotNull(nodeRef);
    Long nodeId = nodePair.getFirst();
    final List<ChildAssociationRef> results = new ArrayList<ChildAssociationRef>(100);
    NodeDAO.ChildAssocRefQueryCallback callback = new NodeDAO.ChildAssocRefQueryCallback() {

        public boolean preLoadNodes() {
            return true;
        }

        @Override
        public boolean orderResults() {
            return true;
        }

        public boolean handle(Pair<Long, ChildAssociationRef> childAssocPair, Pair<Long, NodeRef> parentNodePair, Pair<Long, NodeRef> childNodePair) {
            results.add(childAssocPair.getSecond());
            // More results
            return true;
        }

        public void done() {
        }
    };
    // Get all child associations with the specific qualified name
    nodeDAO.getChildAssocsByChildTypes(nodeId, childNodeTypeQNames, callback);
    // Done
    return results;
}
Also used : NodeDAO(org.alfresco.repo.domain.node.NodeDAO) NodeRef(org.alfresco.service.cmr.repository.NodeRef) ArrayList(java.util.ArrayList) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef) ChildAssocRefQueryCallback(org.alfresco.repo.domain.node.NodeDAO.ChildAssocRefQueryCallback) ChildAssocRefQueryCallback(org.alfresco.repo.domain.node.NodeDAO.ChildAssocRefQueryCallback) Pair(org.alfresco.util.Pair) Extend(org.alfresco.traitextender.Extend)

Example 54 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method setType.

/**
 * @see org.alfresco.service.cmr.repository.NodeService#setType(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
 */
@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public void setType(NodeRef nodeRef, QName typeQName) throws InvalidNodeRefException {
    // The node(s) involved may not be pending deletion
    checkPendingDelete(nodeRef);
    // check the node type
    TypeDefinition nodeTypeDef = dictionaryService.getType(typeQName);
    if (nodeTypeDef == null) {
        throw new InvalidTypeException(typeQName);
    }
    Pair<Long, NodeRef> nodePair = getNodePairNotNull(nodeRef);
    // Invoke policies
    invokeBeforeUpdateNode(nodeRef);
    QName oldType = nodeDAO.getNodeType(nodePair.getFirst());
    invokeBeforeSetType(nodeRef, oldType, typeQName);
    // Set the type
    boolean updatedNode = nodeDAO.updateNode(nodePair.getFirst(), typeQName, null);
    // Add the default aspects and properties required for the given type. Existing values will not be overridden.
    boolean updatedProps = addAspectsAndProperties(nodePair, typeQName, null, null, null, null, false);
    // Invoke policies
    if (updatedNode || updatedProps) {
        // Invoke policies
        invokeOnUpdateNode(nodeRef);
        invokeOnSetType(nodeRef, oldType, typeQName);
    }
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) QName(org.alfresco.service.namespace.QName) TypeDefinition(org.alfresco.service.cmr.dictionary.TypeDefinition) InvalidTypeException(org.alfresco.service.cmr.dictionary.InvalidTypeException) Extend(org.alfresco.traitextender.Extend)

Example 55 with Extend

use of org.alfresco.traitextender.Extend in project alfresco-repository by Alfresco.

the class DbNodeServiceImpl method getPrimaryParent.

@Extend(traitAPI = NodeServiceTrait.class, extensionAPI = NodeServiceExtension.class)
public ChildAssociationRef getPrimaryParent(NodeRef nodeRef) throws InvalidNodeRefException {
    // Get the node
    Pair<Long, NodeRef> nodePair = getNodePairNotNull(nodeRef);
    Long nodeId = nodePair.getFirst();
    // get the primary parent assoc
    Pair<Long, ChildAssociationRef> assocPair = nodeDAO.getPrimaryParentAssoc(nodeId);
    // done - the assoc may be null for a root node
    ChildAssociationRef assocRef = null;
    if (assocPair == null) {
        assocRef = new ChildAssociationRef(null, null, null, nodeRef);
    } else {
        assocRef = assocPair.getSecond();
    }
    return assocRef;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef) Extend(org.alfresco.traitextender.Extend)

Aggregations

Extend (org.alfresco.traitextender.Extend)75 NodeRef (org.alfresco.service.cmr.repository.NodeRef)47 ChildAssociationRef (org.alfresco.service.cmr.repository.ChildAssociationRef)25 QName (org.alfresco.service.namespace.QName)21 ArrayList (java.util.ArrayList)19 Pair (org.alfresco.util.Pair)15 HashSet (java.util.HashSet)10 Serializable (java.io.Serializable)9 MutableInt (org.apache.commons.lang3.mutable.MutableInt)9 HashMap (java.util.HashMap)8 LinkedHashSet (java.util.LinkedHashSet)8 ChildAssocRefQueryCallback (org.alfresco.repo.domain.node.NodeDAO.ChildAssocRefQueryCallback)8 AssociationRef (org.alfresco.service.cmr.repository.AssociationRef)8 LockStatus (org.alfresco.service.cmr.lock.LockStatus)6 Version (org.alfresco.service.cmr.version.Version)6 NodeDAO (org.alfresco.repo.domain.node.NodeDAO)5 LockState (org.alfresco.repo.lock.mem.LockState)5 PermissionReference (org.alfresco.repo.security.permissions.PermissionReference)5 StoreRef (org.alfresco.service.cmr.repository.StoreRef)5 Map (java.util.Map)4