diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml index 292c4e6485..40e70a8625 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml @@ -182,37 +182,54 @@ - - - - workspace - SpacesStore - rm_report_templates - Records Management Report Templates - Records Management Report Templates - Records management report templates. - - - - - - - - - - workspace - SpacesStore - rmr_destructionReport - Desruction report template. - contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl|mimetype=text/plain|encoding=UTF-8 - Destruction Report Template - report_rmr_destructionReport.html.ftl - - - - - - + + + + workspace + SpacesStore + rm_report_templates + Records Management Report Templates + Records Management Report Templates + Records management report templates. + + + + + + + + + + workspace + SpacesStore + rmr_destructionReport + Desruction report template. + contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl|mimetype=text/plain|encoding=UTF-8 + Destruction Report Template + report_rmr_destructionReport.html.ftl + + + + + + + + + + + workspace + SpacesStore + rmr_transferReport + Transfer report template. + contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl|mimetype=text/plain|encoding=UTF-8 + Transfer Report Template + report_rmr_transfer.html.ftl + + + + + + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl index 406e23803b..b196acc833 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_destructionReport.html.ftl @@ -14,7 +14,6 @@ } --> - @@ -35,6 +34,7 @@ @@ -43,72 +43,65 @@
+ <#-- FIXME!!! --> Destruction Report
+ <#-- FIXME!!! --> - + + <#-- FIXME!!! --> - + + <#-- FIXME!!! --> - -
Destroyed <#if node.hasAspect("rma:record")>Record<#else>Record Folder: ${node.properties["rma:identifier"]} ${node.properties.name}
Disposition Authority: ${node.properties["rma:recordSearchDispositionAuthority"]}
Disposition Instructions: ${node.properties["rma:recordSearchDispositionInstructions"]}
- + + <#if node.childAssociations["cm:contains"]??> -
- + <#-- FIXME!!! --> -
Destroyed Records:
- + + -
- - <#list node.childAssociations["cm:contains"] as child> - - - - - - + <#list node.childAssociations["cm:contains"] as child> + + + + -
- - - - - - -
${child.properties["rma:identifier"]} ${child.properties.name}
-
+ + + + + + +
${child.properties["rma:identifier"]} ${child.properties.name}
+
-
- - - -
- + + +
- + - + 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 new file mode 100644 index 0000000000..b9d8e99e82 --- /dev/null +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/bootstrap/report/report_rmr_transferReport.html.ftl @@ -0,0 +1,72 @@ + + + <#assign isAccession=node.property["rma:transferAccessionIndicator"]> + + <#if isAccession> + <#-- FIXME: Label --> + Transfer Report + <#else> + <#-- FIXME: Label --> + Transfer Report + + + + + <#if isAccession> + <#-- FIXME: Label --> +

Accession Report

+ <#else> + <#-- FIXME: Label --> +

Transfer Report

+ + + + <#-- FIXME: Label --> + + <#-- FIXME: Escape, toString --> + + + + <#-- FIXME: Label --> + + + + + <#-- FIXME: Label --> + + <#-- FIXME: String, Escape --> + + + + <#-- FIXME: Label --> + + <#-- FIXME: Disposition Authority - Check, escape --> + + +
Transfer Date:${node.property["cm:created"]}
Transfer Location: + <#if isAccession> + <#-- FIXME: Label --> + NARA + <#else> + <#-- FIXME: String, Escape --> + ${node.property["rma:transferLocation"]} + +
Performed By: ${node.property["cm:creator"]}
Disposition Authority:
+ <#-- FIXME: Label --> +

Transferred Items

+
+ <#-- + folder (Unique Folder Identifier: 2013-1385393610833) +
+
+ --> +
+ + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/report-service.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/report-service.properties index 9af4b56137..56eec14f5d 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/report-service.properties +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/report-service.properties @@ -1,2 +1,2 @@ report.rmr_destructionReport.name=Destruction Report (${node.rma:identifier} ${node.cm:name}).html - +report.rmr_transferReport.name=Transfer Report (${node.rma:identifier} ${node.cm:name}).html \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/reportModel.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/reportModel.xml index eb44c18010..52c1f408f9 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/reportModel.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/reportModel.xml @@ -5,42 +5,43 @@ - - Records Management Report Model - Roy Wetherall - 1.0 + + Records Management Report Model + Roy Wetherall + 1.0 - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + - - - - Report - cm:content - - - - Report - rmr:report - - - + + + Report + cm:content + + + Report + rmr:report + + + Transfer + rmr:report + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-report-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-report-context.xml index 7b67033195..1a8269e9f9 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-report-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-report-context.xml @@ -3,9 +3,9 @@ - - - + + + alfresco/module/org_alfresco_module_rm/model/reportModel.xml @@ -16,78 +16,82 @@ alfresco/module/org_alfresco_module_rm/messages/report-model - - - - - - - - alfresco.module.org_alfresco_module_rm.messages.report-service - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + alfresco.module.org_alfresco_module_rm.messages.report-service + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -110,12 +114,43 @@ - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW + org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW + org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW + + + + + + + + + + + \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/ReportModel.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/ReportModel.java index 07a1134d3b..9124058745 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/ReportModel.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/ReportModel.java @@ -25,12 +25,13 @@ import org.alfresco.service.namespace.QName; * * @author Roy Wetherall */ -public interface ReportModel +public interface ReportModel { - // Namespace details - public static final String RMR_URI = "http://www.alfresco.org/model/recordsmanagementreport/1.0"; - public static final String RMR_PREFIX = "rmr"; - - public static final QName TYPE_REPORT = QName.createQName(RMR_URI, "report"); - public static final QName TYPE_DESTRUCTION_REPORT = QName.createQName(RMR_URI, "destructionReport"); + // Namespace details + public static final String RMR_URI = "http://www.alfresco.org/model/recordsmanagementreport/1.0"; + public static final String RMR_PREFIX = "rmr"; + + public static final QName TYPE_REPORT = QName.createQName(RMR_URI, "report"); + public static final QName TYPE_DESTRUCTION_REPORT = QName.createQName(RMR_URI, "destructionReport"); + public static final QName TYPE_TRANSFER_REPORT = QName.createQName(RMR_URI, "transferReport"); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/FileTransferAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/FileTransferAction.java new file mode 100644 index 0000000000..8a68bce7c0 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/report/action/FileTransferAction.java @@ -0,0 +1,102 @@ +/* + * 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 org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase; +import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; +import org.alfresco.module.org_alfresco_module_rm.report.Report; +import org.alfresco.module.org_alfresco_module_rm.report.ReportModel; +import org.alfresco.module.org_alfresco_module_rm.report.ReportService; +import org.alfresco.service.cmr.action.Action; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.ParameterCheck; + +/** + * FIXME!!! + * + * @author Tuna Aksoy + * @since 2.2 + */ +public class FileTransferAction extends RMActionExecuterAbstractBase implements ReportModel +{ + /** report service */ + protected ReportService reportService; + + /** file plan service */ + protected FilePlanService filePlanService; + + /** report type string value */ + private String reportType; + + /** + * @param reportService report service + */ + public void setReportService(ReportService reportService) + { + this.reportService = reportService; + } + + /** + * @param filePlanService file plan service + */ + public void setFilePlanService(FilePlanService filePlanService) + { + this.filePlanService = filePlanService; + } + + /** + * @param reportType report type string value + */ + public void setReportType(String reportType) + { + this.reportType = reportType; + } + + /** + * @return QName report type + */ + protected QName getReportType() + { + ParameterCheck.mandatory("this.reportType", reportType); + return QName.createQName(reportType, namespaceService); + } + + /** + * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + protected void executeImpl(Action action, NodeRef actionedUponNodeRef) + { + // TODO check that the actionedUponNodeRef is in a state to generate a destruction report + // ie: is it eligable for destruction .. use fileDestructionReport capability! + + // TODO allow the mimetype of the report to be specified as a parameter + + NodeRef filePlan = filePlanService.getFilePlan(actionedUponNodeRef); + if (filePlan == null) + { + throw new AlfrescoRuntimeException("Unable to file destruction report, because file plan could not be resolved."); + } + + Report report = reportService.generateReport(getReportType(), actionedUponNodeRef); + reportService.fileReport(filePlan, report); + } +}