ALF-5352: User usage not always updated for bulk import (eg. ZIP or ACP) - hence reported negative after deleting space imported by ACP

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@37632 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Matt Ward
2012-06-11 14:06:35 +00:00
parent e3cc4e0503
commit d93bdcaa9a
2 changed files with 36 additions and 0 deletions

View File

@@ -36,6 +36,7 @@ import org.alfresco.repo.importer.view.NodeContext;
import org.alfresco.repo.model.filefolder.HiddenAspect;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.authentication.AuthenticationContext;
import org.alfresco.repo.usage.ContentUsageImpl;
import org.alfresco.repo.version.Version2Model;
import org.alfresco.repo.version.common.VersionUtil;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
@@ -110,12 +111,14 @@ public class ImporterComponent
private OwnableService ownableService;
private VersionService versionService;
private HiddenAspect hiddenAspect;
private ContentUsageImpl contentUsageImpl;
/**
* The db node service, used when updating the version store.
*/
protected NodeService dbNodeService;
// binding markers
private static final String START_BINDING_MARKER = "${";
private static final String END_BINDING_MARKER = "}";
@@ -243,6 +246,20 @@ public class ImporterComponent
this.hiddenAspect = hiddenAspect;
}
/**
* When all behaviour is disabled it is necessary to use {@link ContentUsageImpl}
* directly to update user usage. An instance of this class (with ID
* <code>importerComponentWithBehaviour</code>) that does not disable
* behaviours is also defined in the system - in that case it should not reference
* the {@link ContentUsageImpl} collaborator.
*
* @param contentUsageImpl the contentUsageImpl to set
*/
public void setContentUsageImpl(ContentUsageImpl contentUsageImpl)
{
this.contentUsageImpl = contentUsageImpl;
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterService#importView(java.io.InputStreamReader, org.alfresco.service.cmr.view.Location, java.util.Properties, org.alfresco.service.cmr.view.ImporterProgress)
*/
@@ -770,7 +787,23 @@ public class ImporterComponent
ContentWriter writer = contentService.getWriter(nodeRef, propertyName, true);
writer.setEncoding(contentData.getEncoding());
writer.setMimetype(contentData.getMimetype());
Map<QName, Serializable> propsBefore = null;
if (contentUsageImpl != null && contentUsageImpl.getEnabled())
{
propsBefore = nodeService.getProperties(nodeRef);
}
writer.putContent(contentStream);
if (contentUsageImpl != null && contentUsageImpl.getEnabled())
{
// Since behaviours for content nodes have all been disabled,
// it is necessary to update the user's usage stats.
Map<QName, Serializable> propsAfter = nodeService.getProperties(nodeRef);
contentUsageImpl.onUpdateProperties(nodeRef, propsBefore, propsAfter);
}
reportContentCreated(nodeRef, contentUrl);
}
}