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 91592740fd..c51a4ac53e 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 @@ -48,11 +48,19 @@

${message("file.report.transferred.items")}

- <#-- FIXME - folder (Unique Folder Identifier: 2013-1385393610833) -
-
- --> + <#list properties.transferNodes as transferNode> + <#if transferNode.folder> + + ${transferNode.properties["name"]?html} + + (${message("file.report.unique.folder.identifier")}: ${transferNode.properties["identifier"]?html}) +
+ <#-- FIXME: Records --> +
+ <#else> + <#-- FIXME: Records --> + +
\ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/template.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/template.properties index 05599852a2..5df2c889b3 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/template.properties +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/template.properties @@ -14,3 +14,4 @@ file.report.transferred.items=Transferred Items file.report.performed.by=Performed By file.report.record=Record file.report.record.folder=Record Folder +file.report.unique.folder.identifier=Unique Folder Identifier \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferNode.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferNode.java new file mode 100644 index 0000000000..e3136c0fe0 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/TransferNode.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2005-2013 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.report.action; + +import java.io.Serializable; +import java.util.Map; + +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * Transfer node class + * + * @author Tuna Aksoy + * @since 2.2 + */ +public class TransferNode +{ + /** Transfer node reference */ + private NodeRef nodeRef; + + /** Transfer node type */ + private boolean folder; + + /** Transfer node properties */ + private Map properties; + + /** + * @param nodeRef + * @param folder + * @param properties + */ + public TransferNode(NodeRef nodeRef, boolean folder, Map properties) + { + this.nodeRef = nodeRef; + this.folder = folder; + this.properties = properties; + } + + /** + * @return transfer node reference + */ + public NodeRef getNodeRef() + { + return this.nodeRef; + } + + /** + * @return transfer node type + */ + public boolean isFolder() + { + return this.folder; + } + + /** + * @return transfer node properties + */ + public Map getProperties() + { + return this.properties; + } +} 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 eef2c84d49..482e63c877 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 @@ -19,14 +19,17 @@ package org.alfresco.module.org_alfresco_module_rm.report.action; import java.io.Serializable; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; import org.apache.commons.lang.StringUtils; @@ -42,51 +45,77 @@ public class TransferReportAction extends BaseReportAction protected Map addProperties(NodeRef nodeRef) { // Get all 'transferred' nodes - NodeRef[] transferNodes = getTransferNodes(nodeRef); + List transferNodes = getTransferNodes(nodeRef); // Get the disposition authority String dispositionAuthority = getDispositionAuthority(transferNodes); // Save to the properties map Map properties = new HashMap(2); - properties.put("transferNodes", transferNodes); + properties.put("transferNodes", (ArrayList) transferNodes); properties.put("dispositionAuthority", dispositionAuthority); return properties; } /** - * Returns an array of NodeRefs representing the items to be transferred. + * Returns a list of transfer nodes * - * @param transferNode The transfer object - * @return Array of NodeRefs + * @param nodeRef The transfer object + * @return Transfer node list */ - private NodeRef[] getTransferNodes(NodeRef transferNode) + private List getTransferNodes(NodeRef nodeRef) { - List assocs = this.nodeService.getChildAssocs(transferNode, - RecordsManagementModel.ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); - NodeRef[] itemsToTransfer = new NodeRef[assocs.size()]; - for (int idx = 0; idx < assocs.size(); idx++) + List assocs = nodeService.getChildAssocs(nodeRef, RecordsManagementModel.ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); + List transferNodes = new ArrayList(assocs.size()); + for (ChildAssociationRef assoc : assocs) { - itemsToTransfer[idx] = assocs.get(idx).getChildRef(); + NodeRef childRef = assoc.getChildRef(); + boolean isFolder = dictionaryService.isSubClass(nodeService.getType(childRef), ContentModel.TYPE_FOLDER); + Map properties = getTransferNodeProperties(childRef, isFolder); + transferNodes.add(new TransferNode(childRef, isFolder, properties)); } - return itemsToTransfer; + return transferNodes; } /** - * Gets the disposition authority from the array of the transfer objects + * Helper method to get the properties of a transfer node * - * @param itemsToTransfer The transfer objects - * @return Disposition authority + * @param childRef Node reference + * @param isFolder Type of the transfer node + * @return Transfer node properties */ - private String getDispositionAuthority(NodeRef[] itemsToTransfer) + private Map getTransferNodeProperties(NodeRef childRef, boolean isFolder) + { + Map transferNodeProperties = new HashMap(2); + if (isFolder) + { + Map properties = nodeService.getProperties(childRef); + transferNodeProperties.put("name", properties.get(ContentModel.PROP_NAME)); + transferNodeProperties.put("identifier", properties.get(RecordsManagementModel.PROP_IDENTIFIER)); + } + else + { + // FIXME: Record + } + return transferNodeProperties; + } + + /** + * Gets the disposition authority from the list of the transfer nodes + * + * @param transferNodes The transfer nodes + * @return Disposition authority + */ + private String getDispositionAuthority(List transferNodes) { // use RMService to get disposition authority String dispositionAuthority = null; - if (itemsToTransfer.length > 0) + if (transferNodes.size() > 0) { // use the first transfer item to get to disposition schedule - DispositionSchedule ds = dispositionService.getDispositionSchedule(itemsToTransfer[0]); + NodeRef nodeRef = transferNodes.iterator().next().getNodeRef(); + DispositionSchedule ds = dispositionService.getDispositionSchedule(nodeRef); if (ds != null) { dispositionAuthority = ds.getDispositionAuthority();