diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl index 556bb1d9d6..38109cfc72 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl @@ -50,28 +50,36 @@
<#list properties.transferNodes as transferNode> <#if transferNode.properties["isFolder"]> - - ${transferNode.properties["name"]?html} - - (${message("file.report.unique.folder.identifier")}: ${transferNode.properties["identifier"]?html}) -
- <#-- FIXME: Records --> -
+ <@generateTransferFolderHTML transferNode/> <#else> -
- - ${transferNode.properties["name"]?html} - - (${message("file.report.unique.record.identifier")}: ${transferNode.properties["identifier"]?html}) - <#if transferNode.properties["isDeclared"]> - ${message("file.report.declared.by")} - ${transferNode.properties["declaredBy"]?html} - ${message("file.report.declared.on")} - ${transferNode.properties["declaredOn"]?string(message("file.report.date.format"))?html} - -
+ <@generateTransferRecordHTML transferNode/>
- \ No newline at end of file + +<#macro generateTransferFolderHTML transferNode> + + ${transferNode.properties["name"]?html} + + (${message("file.report.unique.folder.identifier")}: ${transferNode.properties["identifier"]?html}) +
+ <#list transferNode.properties["records"] as record> + <@generateTransferRecordHTML record/> + +
+ +<#macro generateTransferRecordHTML transferNode> +
+ + ${transferNode.properties["name"]?html} + + (${message("file.report.unique.record.identifier")}: ${transferNode.properties["identifier"]?html}) + <#if transferNode.properties["isDeclared"]> + ${message("file.report.declared.by")} + ${transferNode.properties["declaredBy"]?html} + ${message("file.report.declared.on")} + ${transferNode.properties["declaredOn"]?string(message("file.report.date.format"))?html} + +
+ \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferReportAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferReportAction.java index 477f5f1c16..2c5a67dc0a 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferReportAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferReportAction.java @@ -86,28 +86,71 @@ public class TransferReportAction extends BaseReportAction */ private Map getTransferNodeProperties(NodeRef childRef) { - Map transferNodeProperties = new HashMap(3); + Map transferNodeProperties = new HashMap(6); Map properties = nodeService.getProperties(childRef); - transferNodeProperties.put("name", properties.get(ContentModel.PROP_NAME)); - transferNodeProperties.put("identifier", properties.get(RecordsManagementModel.PROP_IDENTIFIER)); - + String name = (String) properties.get(ContentModel.PROP_NAME); + String identifier = (String) properties.get(RecordsManagementModel.PROP_IDENTIFIER); boolean isFolder = dictionaryService.isSubClass(nodeService.getType(childRef), ContentModel.TYPE_FOLDER); + + transferNodeProperties.put("name", name); + transferNodeProperties.put("identifier", identifier); transferNodeProperties.put("isFolder", isFolder); - if (isFolder == false) + if (isFolder == true) + { + transferNodeProperties.put("records", (ArrayList) getRecords(childRef)); + } + else { - boolean isDeclared = nodeService.hasAspect(childRef, RecordsManagementModel.ASPECT_DECLARED_RECORD); String declaredBy = (String) properties.get(RecordsManagementModel.PROP_DECLARED_BY); Date declaredOn = (Date) properties.get(RecordsManagementModel.PROP_DECLARED_AT); - transferNodeProperties.put("isDeclared", isDeclared); + boolean isDeclared = nodeService.hasAspect(childRef, RecordsManagementModel.ASPECT_DECLARED_RECORD); + transferNodeProperties.put("declaredBy", declaredBy); transferNodeProperties.put("declaredOn", declaredOn); + transferNodeProperties.put("isDeclared", isDeclared); } return transferNodeProperties; } + /** + * Helper method to get the list of records (with their properties) within a folder + * + * @param childRef Node reference of the folder + * @return List of records within the specified folder + */ + private List getRecords(NodeRef childRef) + { + List records = new ArrayList(4); + List assocs = nodeService.getChildAssocs(childRef, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); + for (ChildAssociationRef child : assocs) + { + NodeRef record = child.getChildRef(); + if (nodeService.hasAspect(record, RecordsManagementModel.ASPECT_RECORD)) + { + Map transferNodeProperties = new HashMap(6); + + Map properties = nodeService.getProperties(record); + String name = (String) properties.get(ContentModel.PROP_NAME); + String identifier = (String) properties.get(RecordsManagementModel.PROP_IDENTIFIER); + String declaredBy = (String) properties.get(RecordsManagementModel.PROP_DECLARED_BY); + Date declaredOn = (Date) properties.get(RecordsManagementModel.PROP_DECLARED_AT); + boolean isDeclared = nodeService.hasAspect(record, RecordsManagementModel.ASPECT_DECLARED_RECORD); + + transferNodeProperties.put("name", name); + transferNodeProperties.put("identifier", identifier); + transferNodeProperties.put("declaredBy", declaredBy); + transferNodeProperties.put("declaredOn", declaredOn); + transferNodeProperties.put("isDeclared", isDeclared); + + records.add(new TransferNode(record, transferNodeProperties)); + } + } + return records; + } + /** * Gets the disposition authority from the list of the transfer nodes *