Add ASPECT_HELD_CHILDREN on active content parent

This commit is contained in:
cagache
2019-07-24 17:30:15 +03:00
parent f61992f047
commit 2aeb78b57c
4 changed files with 26 additions and 18 deletions

View File

@@ -1569,7 +1569,7 @@
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHoldReason=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHoldReason=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.setHoldReason=RM_CAP.0.rma:filePlanComponent.EditHold org.alfresco.module.org_alfresco_module_rm.hold.HoldService.setHoldReason=RM_CAP.0.rma:filePlanComponent.EditHold
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.deleteHold=RM_CAP.0.rma:filePlanComponent.DeleteHold org.alfresco.module.org_alfresco_module_rm.hold.HoldService.deleteHold=RM_CAP.0.rma:filePlanComponent.DeleteHold
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.addToHold=RM_CAP.0.rma:filePlanComponent.AddToHold, ACL_NODE.1.sys:base.Write org.alfresco.module.org_alfresco_module_rm.hold.HoldService.addToHold=RM_CAP.0.rma:filePlanComponent.AddToHold
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.addToHolds=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.hold.HoldService.addToHolds=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.removeFromHold=RM_CAP.0.rma:filePlanComponent.RemoveFromHold org.alfresco.module.org_alfresco_module_rm.hold.HoldService.removeFromHold=RM_CAP.0.rma:filePlanComponent.RemoveFromHold
org.alfresco.module.org_alfresco_module_rm.hold.HoldService.removeFromHolds=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.hold.HoldService.removeFromHolds=RM_ALLOW

View File

@@ -28,6 +28,9 @@
package org.alfresco.module.org_alfresco_module_rm.freeze; package org.alfresco.module.org_alfresco_module_rm.freeze;
import static org.alfresco.model.ContentModel.TYPE_FOLDER;
import static org.alfresco.repo.site.SiteModel.ASPECT_SITE_CONTAINER;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@@ -273,8 +276,9 @@ public class FreezeServiceImpl extends ServiceBaseImpl
boolean result = false; boolean result = false;
// check that we are dealing with a record folder // check that we are dealing with a record folder or a collaboration folder
if (isRecordFolder(nodeRef)) if (isRecordFolder(nodeRef) ||
(instanceOf(nodeRef, TYPE_FOLDER) && !nodeService.hasAspect(nodeRef, ASPECT_SITE_CONTAINER)))
{ {
int heldCount = 0; int heldCount = 0;
@@ -303,8 +307,8 @@ public class FreezeServiceImpl extends ServiceBaseImpl
{ {
for (ChildAssociationRef childAssociationRef : childAssocs) for (ChildAssociationRef childAssociationRef : childAssocs)
{ {
NodeRef record = childAssociationRef.getChildRef(); NodeRef childRef = childAssociationRef.getChildRef();
if (childAssociationRef.isPrimary() && isRecord(record) && isFrozen(record)) if (childAssociationRef.isPrimary() && isFrozen(childRef))
{ {
heldCount ++; heldCount ++;
} }

View File

@@ -539,19 +539,23 @@ public class HoldServiceImpl extends ServiceBaseImpl
ParameterCheck.mandatoryCollection("holds", holds); ParameterCheck.mandatoryCollection("holds", holds);
ParameterCheck.mandatory("nodeRef", nodeRef); ParameterCheck.mandatory("nodeRef", nodeRef);
String nodeName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
if (!isRecord(nodeRef) && !isRecordFolder(nodeRef) && !instanceOf(nodeRef, ContentModel.TYPE_CONTENT)) if (!isRecord(nodeRef) && !isRecordFolder(nodeRef) && !instanceOf(nodeRef, ContentModel.TYPE_CONTENT))
{ {
String nodeName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); throw new AlfrescoRuntimeException("'" + nodeName + "' is neither a record nor a record folder nor a document. " +
// TODO error message needs to be changed "Only records, record folders or active content can be added to a hold.");
throw new AlfrescoRuntimeException("'" + nodeName + "' is neither a record nor a record folder. Only records or record folders can be added to a hold.");
} }
if ((isRecord(nodeRef) || isRecordFolder(nodeRef)) && if ((isRecord(nodeRef) || isRecordFolder(nodeRef)) &&
permissionService.hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.DENIED) permissionService.hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.DENIED)
{ {
String nodeName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
throw new AlfrescoRuntimeException("Filing permission on '" + nodeName + "' is needed."); throw new AlfrescoRuntimeException("Filing permission on '" + nodeName + "' is needed.");
} }
else if (instanceOf(nodeRef, ContentModel.TYPE_CONTENT) &&
permissionService.hasPermission(nodeRef, PermissionService.WRITE) == AccessStatus.DENIED)
{
throw new AlfrescoRuntimeException("Write permission on '" + nodeName + "' is needed.");
}
for (final NodeRef hold : holds) for (final NodeRef hold : holds)
{ {
@@ -563,7 +567,6 @@ public class HoldServiceImpl extends ServiceBaseImpl
if (permissionService.hasPermission(hold, RMPermissionModel.FILING) == AccessStatus.DENIED) if (permissionService.hasPermission(hold, RMPermissionModel.FILING) == AccessStatus.DENIED)
{ {
String nodeName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
String holdName = (String) nodeService.getProperty(hold, ContentModel.PROP_NAME); String holdName = (String) nodeService.getProperty(hold, ContentModel.PROP_NAME);
throw new AlfrescoRuntimeException("'" + nodeName + "' can't be added to the hold container as filing permission for '" + holdName + "' is needed."); throw new AlfrescoRuntimeException("'" + nodeName + "' can't be added to the hold container as filing permission for '" + holdName + "' is needed.");
} }

View File

@@ -27,6 +27,8 @@
package org.alfresco.module.org_alfresco_module_rm.model.rma.aspect; package org.alfresco.module.org_alfresco_module_rm.model.rma.aspect;
import static org.alfresco.model.ContentModel.TYPE_CONTENT;
import java.util.List; import java.util.List;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
@@ -148,25 +150,24 @@ public class FrozenAspect extends BaseBehaviourBean
kind = BehaviourKind.CLASS, kind = BehaviourKind.CLASS,
notificationFrequency = NotificationFrequency.TRANSACTION_COMMIT notificationFrequency = NotificationFrequency.TRANSACTION_COMMIT
) )
public void onAddAspect(final NodeRef record, final QName aspectTypeQName) public void onAddAspect(final NodeRef nodeRef, final QName aspectTypeQName)
{ {
AuthenticationUtil.runAsSystem(new RunAsWork<Void>() AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
{ {
@Override @Override
public Void doWork() public Void doWork()
{ {
if (nodeService.exists(record) && if (nodeService.exists(nodeRef) && (isRecord(nodeRef) || instanceOf(nodeRef, TYPE_CONTENT)))
isRecord(record))
{ {
// get the owning record folder // get the owning nodeRef folder
NodeRef recordFolder = nodeService.getPrimaryParent(record).getParentRef(); NodeRef parentRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
// check that the aspect has been added // check that the aspect has been added
if (nodeService.hasAspect(recordFolder, ASPECT_HELD_CHILDREN)) if (nodeService.hasAspect(parentRef, ASPECT_HELD_CHILDREN))
{ {
// increment current count // increment current count
int currentCount = (Integer)nodeService.getProperty(recordFolder, PROP_HELD_CHILDREN_COUNT); int currentCount = (Integer) nodeService.getProperty(parentRef, PROP_HELD_CHILDREN_COUNT);
currentCount = currentCount + 1; currentCount = currentCount + 1;
nodeService.setProperty(recordFolder, PROP_HELD_CHILDREN_COUNT, currentCount); nodeService.setProperty(parentRef, PROP_HELD_CHILDREN_COUNT, currentCount);
} }
} }
return null; return null;