mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.2 to HEAD
16971: Merged V3.1 to V3.2 14282: (RECORD ONLY) Updated version to 3.1.1 14565: (RECORD ONLY) Updated version to include revision number (x.y.z) 14848: (RECORD ONLY) Updated version number 15029: (RECORD ONLY) ETHREEOH-441 and ETHREEOH-1862 Exceptions in server when certain PDFs are uploaded. - Probably done already without merge info - Renamed source zip to help tracking 15985: ETHREEOH-2292: Deployment failure in case of IPv6 on Win 2k8 16164: Fixed ETHREEOH-2690: JGroups TCP doesn't bind to specified address 16240: (RECORD ONLY) Fix typos in installer 16726: Fix ETHREEOH-2677 - user usages (when taking ownership) 16745: Fix ETHREEOH-2991 - Deployment exception, unable to deploy - when deploying a manual snapshot with a stale file 16771: (RECORD ONLY) Fix to ETHREEOH-441 - Probably merged without merge info 16822: Merged DEV/BELARUS/V3.1 to V3.1 16753: ETHREEOH-1951: when versionable aspect is active, using the Microsoft Word option ... 16825: Fixed ETHREEOH-803: Incorrect mimetype is displayed for .pps and .pot files 16862: Fix for ETHREEOH-801 Fail to extract some kind of PDF file metadata - Resolved merge by prefering merged-in fix 16880: Merged V2.2 to V3.1 13966: (record only) Updated to use ALF-BINARIES version of installjammer 14340: (record only) Fix so deployment installers build 14719: (record only) Tweaks to AMP 15153: (record only) Fix ETWOTWO-1264 - PHP integration 15287: Fixed ETWOTWO-989: MS Sql server upgrade from 2.1.6 failed 15351: ETWOTWO-1345 (script not matching patch ID) 16928: Fixed shutdown: Task threads are now daemon threads 16986: Merged V3.1 to V3.2 16932: Moved Lucene ResultSet prefetch code to use NodeBulkLoader (backed by common code in Node DAO) 16945: (RECORD ONLY) Merged V3.2 to V3.1 16931: Fixed build unit test path for recent Chiba lib change 16957: Removed Hibernate event listener after 3.2.3 CGLib fixes 16959: Applied fix for ETHREEOH-2121: ContentUtils.getContentAsString does not pass JSESSIONID into the request 16961: (RECORD ONLY) Updated db settings in configs 16964: (RECORD ONLY) Merged V3.2 to V3.1 16308: ETHREEOH-2833: The Content rule with 'Items with specific text value in property' condition can't be created. 16968: Fixed ETHREEOH-2120: Recently Modified Documents Dashlet failed to load after a big upload 16983: Build fix: avoid queries for parent assocs if no nodes were found during child node in caching 16991: Merge V3.1 to V3.2 15136: (RECORD ONLY) : changes have already been merged. MERGE 2.2 to 3.1 14985 - ETWOTWO-1174 - Preview of protected PDFs results in an error 14305 - ETWOTWO-951 - contribution 14601 - ETWOTWO-1236 - Make FSR deployment case sensitive. 17022: MT - fix fallout from r16924 - add inbound collection support to MT node service interceptor (caught by MultiTDemoTest.testCreateGroups) 17023: Fixed parentAssocCache bug when adding assocs against an empty cache git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17025 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||
* Copyright (C) 2005-2009 Alfresco Software Limited.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -25,6 +25,7 @@
|
||||
package org.alfresco.repo.usage;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -56,7 +57,8 @@ import org.apache.commons.logging.LogFactory;
|
||||
*/
|
||||
public class ContentUsageImpl implements ContentUsageService,
|
||||
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
||||
NodeServicePolicies.BeforeDeleteNodePolicy
|
||||
NodeServicePolicies.BeforeDeleteNodePolicy,
|
||||
NodeServicePolicies.OnAddAspectPolicy
|
||||
{
|
||||
// Logger
|
||||
private static Log logger = LogFactory.getLog(ContentUsageImpl.class);
|
||||
@@ -127,7 +129,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
}
|
||||
|
||||
/**
|
||||
* The initialise method
|
||||
* The initialise method
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
@@ -135,21 +137,28 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
{
|
||||
// Register interest in the onUpdateProperties policy - for content
|
||||
policyComponent.bindClassBehaviour(
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"),
|
||||
ContentModel.TYPE_CONTENT,
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"),
|
||||
ContentModel.TYPE_CONTENT,
|
||||
new JavaBehaviour(this, "onUpdateProperties"));
|
||||
|
||||
// Register interest in the beforeDeleteNode policy - for content
|
||||
policyComponent.bindClassBehaviour(
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "beforeDeleteNode"),
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "beforeDeleteNode"),
|
||||
ContentModel.TYPE_CONTENT,
|
||||
new JavaBehaviour(this, "beforeDeleteNode"));
|
||||
|
||||
// Register interest in the beforeDeleteNode policy - for folder
|
||||
policyComponent.bindClassBehaviour(
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "beforeDeleteNode"),
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "beforeDeleteNode"),
|
||||
ContentModel.TYPE_FOLDER,
|
||||
new JavaBehaviour(this, "beforeDeleteNode"));
|
||||
|
||||
// Register interest in the onAddAspect policy - for ownable
|
||||
policyComponent.bindClassBehaviour(
|
||||
QName.createQName(NamespaceService.ALFRESCO_URI, "onAddAspect"),
|
||||
ContentModel.ASPECT_OWNABLE,
|
||||
new JavaBehaviour(this, "onAddAspect"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +269,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
{
|
||||
incrementUserUsage(ownerAfter, contentSizeAfter, nodeRef);
|
||||
recordUpdate(nodeRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -282,8 +291,8 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
else if (ownerBefore != null && ownerAfter != null && ownerBefore.equals(ownerAfter) == false)
|
||||
{
|
||||
// owner has changed (size has not)
|
||||
if (logger.isDebugEnabled()) logger.debug("onUpdateProperties: updateOwner ("+ownerBefore+" -> "+ownerAfter+"): nodeRef="+nodeRef+", contentSize="+contentSizeBefore);
|
||||
|
||||
if (logger.isDebugEnabled()) logger.debug("onUpdateProperties: updateOwner ("+ownerBefore+" -> "+ownerAfter+"): nodeRef="+nodeRef+", contentSize="+contentSizeBefore);
|
||||
|
||||
if (contentSizeBefore != 0)
|
||||
{
|
||||
decrementUserUsage(ownerBefore, contentSizeBefore, nodeRef);
|
||||
@@ -333,7 +342,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
decrementUserUsage(owner, contentSize, nodeRef);
|
||||
recordDelete(nodeRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type.equals(ContentModel.TYPE_FOLDER))
|
||||
{
|
||||
@@ -343,6 +352,38 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called after an <b>cm:ownable</b> aspect has been added to a node
|
||||
*
|
||||
* @param nodeRef the node to which the aspect was added
|
||||
* @param aspectTypeQName the type of the aspect
|
||||
*/
|
||||
public void onAddAspect(NodeRef nodeRef, QName aspectTypeQName)
|
||||
{
|
||||
if ((stores.contains(tenantService.getBaseName(nodeRef.getStoreRef()).toString())) &&
|
||||
(aspectTypeQName.equals(ContentModel.ASPECT_OWNABLE)))
|
||||
{
|
||||
String newOwner = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_OWNER);
|
||||
String creator = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATOR);
|
||||
|
||||
if ((newOwner != null) && (! newOwner.equals(creator)))
|
||||
{
|
||||
ContentData content = (ContentData)nodeService.getProperty(nodeRef, ContentModel.PROP_CONTENT);
|
||||
|
||||
Map<QName, Serializable> before = new HashMap<QName, Serializable>(2);
|
||||
Map<QName, Serializable> after = new HashMap<QName, Serializable>(2);
|
||||
|
||||
after.put(ContentModel.PROP_OWNER, newOwner);
|
||||
after.put(ContentModel.PROP_CONTENT, content);
|
||||
|
||||
before.put(ContentModel.PROP_CREATOR, creator);
|
||||
before.put(ContentModel.PROP_CONTENT, content);
|
||||
|
||||
onUpdateProperties(nodeRef, before, after);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void incrementUserUsage(String userName, long contentSize, NodeRef contentNodeRef)
|
||||
{
|
||||
if (! authenticationContext.isSystemUserName(userName))
|
||||
@@ -393,7 +434,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
logger.debug("User (" + userName + ") has negative usage (" + newSize + ") - reset to 0");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NodeRef personNodeRef = getPerson(userName);
|
||||
if (personNodeRef != null)
|
||||
{
|
||||
@@ -417,10 +458,10 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
}
|
||||
|
||||
public long getUserStoredUsage(NodeRef personNodeRef)
|
||||
{
|
||||
{
|
||||
Long currentUsage = null;
|
||||
if (personNodeRef != null)
|
||||
{
|
||||
{
|
||||
currentUsage = (Long)nodeService.getProperty(personNodeRef, ContentModel.PROP_SIZE_CURRENT);
|
||||
}
|
||||
|
||||
@@ -435,7 +476,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
|
||||
NodeRef personNodeRef = getPerson(userName);
|
||||
if (personNodeRef != null)
|
||||
{
|
||||
{
|
||||
currentUsage = getUserStoredUsage(personNodeRef);
|
||||
}
|
||||
|
||||
@@ -453,7 +494,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
currentUsage = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return currentUsage;
|
||||
}
|
||||
|
||||
@@ -468,7 +509,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
{
|
||||
NodeRef personNodeRef = getPerson(userName);
|
||||
if (personNodeRef != null)
|
||||
{
|
||||
{
|
||||
nodeService.setProperty(personNodeRef, ContentModel.PROP_SIZE_QUOTA, new Long(currentQuota));
|
||||
}
|
||||
}
|
||||
@@ -479,7 +520,7 @@ public class ContentUsageImpl implements ContentUsageService,
|
||||
|
||||
NodeRef personNodeRef = getPerson(userName);
|
||||
if (personNodeRef != null)
|
||||
{
|
||||
{
|
||||
currentQuota = (Long)nodeService.getProperty(personNodeRef, ContentModel.PROP_SIZE_QUOTA);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user