RM-7028 show location and fix multiple holds

This commit is contained in:
Sara Aspery
2019-11-12 05:13:40 +00:00
parent fa625379e2
commit 55e5267234
3 changed files with 38 additions and 4 deletions

View File

@@ -19,6 +19,8 @@
<property name="nodeService" ref="nodeService" />
<property name="filePlanService" ref="filePlanService" />
<property name="ruleService" ref="RuleService" />
<property name="permissionService" ref="PermissionService" />
<property name="freezeService" ref="FreezeService" />
</bean>
<bean id="org_alfresco_module_rm_nodeRefPathExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.extractor.FilePlanNodeRefPathDataExtractor">

View File

@@ -39,6 +39,7 @@ import org.alfresco.service.namespace.QName;
import java.io.Serializable;
import java.util.Map;
import static org.alfresco.module.org_alfresco_module_rm.audit.event.HoldUtils.HOLD_NAME;
import static org.alfresco.repo.policy.Behaviour.NotificationFrequency.TRANSACTION_COMMIT;
/**
@@ -78,6 +79,6 @@ public class AddToHoldAuditEvent extends AuditEvent implements HoldServicePolici
Map<QName, Serializable> auditProperties = HoldUtils.makePropertiesMap(holdNodeRef, nodeService);
auditProperties.put(ContentModel.PROP_NAME, nodeService.getProperty(contentNodeRef, ContentModel.PROP_NAME));
recordsManagementAuditService.auditEvent(contentNodeRef, getName(), null, auditProperties);
recordsManagementAuditService.auditEvent(contentNodeRef, getName(), null, auditProperties, true, false);
}
}

View File

@@ -33,11 +33,14 @@ import java.util.Objects;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.audit.extractor.AbstractDataExtractor;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.Path;
import org.alfresco.service.cmr.rule.RuleService;
import org.alfresco.service.cmr.security.PermissionService;
/**
* An extractor that extracts the <b>cm:name</b> path from the RM root down to
@@ -54,6 +57,8 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
private NodeService nodeService;
private FilePlanService filePlanService;
private RuleService ruleService;
private PermissionService permissionService;
private FreezeService freezeService;
/**
* Used to check that the node in the context is a fileplan component
@@ -80,8 +85,24 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
}
/**
* @return Returns <tt>true</tt> if the data is a NodeRef and it represents
* a fileplan component
* @param permissionService permission service
*/
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
/**
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
/**
* @return Returns <tt>true</tt> if the data is a NodeRef and it either represents
* a fileplan component or is frozen
*/
public boolean isSupported(Serializable data)
{
@@ -89,7 +110,8 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
{
return false;
}
return nodeService.hasAspect((NodeRef)data, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT);
return nodeService.hasAspect((NodeRef)data, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT) ||
freezeService.isFrozen((NodeRef) data);
}
/**
@@ -116,6 +138,15 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
sb.append("/").append(name);
}
}
else if (freezeService.isFrozen(nodeRef))
{
// Get path from the DM root
Path nodeRefPath = nodeService.getPath(nodeRef);
sb.append(nodeRefPath.toDisplayPath(nodeService, permissionService));
// Get node name
String name = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
sb.append("/").append(name);
}
// Done
extractedData = sb.toString();