mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-30 18:15:39 +00:00
38869: Merged BRANCHES/DEV/AMILLER/CLOUD1 to BRANCHES/DEV/V4.1-BUG-FIX 38762: Site can not be created when (site count) quota exceeded Refactor core code to return "400 - Bad request," with indicative message, when a duplicate url is submitted. 38897: ALF-13969: Tomcat shutdown with WARNING: Problem with directory [/opt/alfresco-4.0.1/tomcat/shared/lib], exists: [false], isDirectory: [false], canRead: [false] - Removed ${catalina.base}/shared/lib/*.jar from shared.loader definition in catalina.properties - Will update Wiki next 38908: Fix for failing test since createSite change 38939: Moved schema version up to 5100 (and 5101 for 'patch.show.audit') 38941: Moved schema version up to 5110 (and 5111 for 'patch.show.audit') ... leave root for V4.1.0.x 38953: ALF-14766: Ensure that DocLib tree drop targets are correctly set after creating new folders 38954: Fix for ALF-14475: "CMIS : Wrong cmisra:numItems in folder sites and below with /cmisatom binding url" 38974: Minor: removed unused code 38987: ALF-13228 - updated manage permissions to handle custom group settings 39006: Fix for ALF-14475 part 2: "CMIS : Wrong cmisra:numItems in folder sites and below with /cmisatom binding url" 39022: Merge solution for ALF-13972 39038: ALF-14388: Merge V3.4-BUG-FIX (3.4.11) to V4.1-BUG-FIX (4.1.1) 39037: ALF-15069 CLONE - Edit Online option is not supported for '.docm', 'dotm', '.xlsm' files - Added "Online Edit" support for: docx docm dotx dotm - doc and docx were already supported pptm ppsx ppsm potx potm ppam sldx sldm - ppt and pptx were already supported xltx xlsm xltm xlam xlsb - xls and xlsx were already supported 39065: ALF-14861 SOLR to scale for non-admin users in 100k sites and a subgroup of each of 1000 independent groupings with 1000 subgroups - first round of fixes on the SOLR side - ACL lookup improved and reduced the number of Long objects created - Specific cache and configuration for PATH queries (with admin reporting) - Specfic cache and configuration for AUTHORITY queries (with admin reporting) - PATH and AUTHORITY queries cache the LEAF result (and not the AUX result which requires lots of extra work) - cache works better with lucene query implementation - AUTHORITY query supports AUTHORITIES separated by "|" 39135: Fix for ALF-15071 SOLR: Typographical offence in log output 39152: ALF-13211: Accepted path for preventing NPE when viewing JBPM sub-process which has no start-task 39175: Merge DEV to V4.1-BUG-FIX (4.1.1) 39161: ALF-14956 : Folder within a Folder navigation issue. Fix for browsing to folders from not first page of a parent folder. 39191: ALF-14863: no scope is available when ScriptNode is used from within Activiti expression, causes issue when scope is needed (eg. creating javascript-arrays) + fixed typo in activiti-source jars 39192: Fix for ALF-12209 Incorrect behavior on View Realtionship for the user who has no permissions - skip relationships to objects that can not be seen. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@40263 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
136 lines
4.7 KiB
Java
136 lines
4.7 KiB
Java
/*
|
|
* Copyright (C) 2005-2012 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.CannedQueryParameters;
|
|
import org.alfresco.repo.domain.node.NodeDAO;
|
|
import org.alfresco.repo.domain.node.NodePropertyHelper;
|
|
import org.alfresco.repo.domain.qname.QNameDAO;
|
|
import org.alfresco.repo.domain.query.CannedQueryDAO;
|
|
import org.alfresco.repo.model.filefolder.HiddenAspect.Visibility;
|
|
import org.alfresco.repo.node.getchildren.FilterProp;
|
|
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
|
import org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityBean;
|
|
import org.alfresco.repo.tenant.TenantService;
|
|
import org.alfresco.service.cmr.repository.NodeRef;
|
|
import org.alfresco.util.FileFilterMode;
|
|
import org.alfresco.util.FileFilterMode.Client;
|
|
|
|
/**
|
|
* GetChidren canned query for files and folders.
|
|
*
|
|
* To get paged list of files and folders of a parent folder filtered by child type.
|
|
* Also optionally filtered and/or sorted by one or more properties (up to three).
|
|
*
|
|
* This is the same as the nodes getchildren canned query, except it takes into account hidden files and folders.
|
|
*
|
|
* @since 4.1.1
|
|
* @author steveglover
|
|
*
|
|
*/
|
|
public class GetChildrenCannedQuery extends org.alfresco.repo.node.getchildren.GetChildrenCannedQuery
|
|
{
|
|
private HiddenAspect hiddenAspect;
|
|
|
|
public GetChildrenCannedQuery(
|
|
NodeDAO nodeDAO,
|
|
QNameDAO qnameDAO,
|
|
CannedQueryDAO cannedQueryDAO,
|
|
NodePropertyHelper nodePropertyHelper,
|
|
TenantService tenantService,
|
|
MethodSecurityBean<NodeRef> methodSecurity,
|
|
CannedQueryParameters params,
|
|
HiddenAspect hiddenAspect)
|
|
{
|
|
super(nodeDAO, qnameDAO, cannedQueryDAO, nodePropertyHelper, tenantService, methodSecurity, params);
|
|
this.hiddenAspect = hiddenAspect;
|
|
}
|
|
|
|
@Override
|
|
protected UnsortedChildQueryCallback getUnsortedChildQueryCallback(final List<NodeRef> rawResult, final int requestedCount)
|
|
{
|
|
UnsortedChildQueryCallback callback = new FileFolderUnsortedChildQueryCallback(rawResult, requestedCount);
|
|
return callback;
|
|
}
|
|
|
|
@Override
|
|
protected FilterSortChildQueryCallback getFilterSortChildQuery(final List<FilterSortNode> children, final List<FilterProp> filterProps)
|
|
{
|
|
FilterSortChildQueryCallback callback = new FileFolderFilterSortChildQueryCallback(children, filterProps);
|
|
return callback;
|
|
}
|
|
|
|
private class FileFolderFilterSortChildQueryCallback extends DefaultFilterSortChildQueryCallback
|
|
{
|
|
public FileFolderFilterSortChildQueryCallback(List<FilterSortNode> children, List<FilterProp> filterProps)
|
|
{
|
|
super(children, filterProps);
|
|
}
|
|
|
|
@Override
|
|
protected boolean include(FilterSortNode node)
|
|
{
|
|
boolean ret = super.include(node);
|
|
|
|
// only visible files are returned, relative to the client type.
|
|
try
|
|
{
|
|
final Client client = FileFilterMode.getClient();
|
|
return ret && hiddenAspect.getVisibility(client, node.getNodeRef()) != Visibility.NotVisible;
|
|
}
|
|
catch(AccessDeniedException e)
|
|
{
|
|
// user may not have permission to determine the visibility of the node
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private class FileFolderUnsortedChildQueryCallback extends DefaultUnsortedChildQueryCallback
|
|
{
|
|
public FileFolderUnsortedChildQueryCallback(List<NodeRef> rawResult,int requestedCount)
|
|
{
|
|
super(rawResult, requestedCount);
|
|
}
|
|
|
|
@Override
|
|
protected boolean include(NodeRef nodeRef)
|
|
{
|
|
boolean ret = super.include(nodeRef);
|
|
|
|
// only visible files are returned, relative to the client type.
|
|
try
|
|
{
|
|
final Client client = FileFilterMode.getClient();
|
|
return ret && hiddenAspect.getVisibility(client, nodeRef) != Visibility.NotVisible;
|
|
}
|
|
catch(AccessDeniedException e)
|
|
{
|
|
// user may not have permission to determine the visibility of the node
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|