mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
RM-1099 (Refactor Transfer and Accession reports)
* Extended the ReportGenerator/ReportService so that additional properties can be passed to the report template git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@58442 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.report;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
@@ -31,4 +34,5 @@ public interface ReportGenerator
|
||||
|
||||
Report generateReport(NodeRef reportedUponNodeRef, String mimetype);
|
||||
|
||||
Report generateReport(NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties);
|
||||
}
|
||||
|
@@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.report;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@@ -62,6 +64,15 @@ public interface ReportService
|
||||
*/
|
||||
Report generateReport(QName reportType, NodeRef reportedUponNodeRef, String mimetype);
|
||||
|
||||
/**
|
||||
* @param reportType
|
||||
* @param reportedUponNodeRef
|
||||
* @param mimetype
|
||||
* @param properties
|
||||
* @return
|
||||
*/
|
||||
Report generateReport(QName reportType, NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties);
|
||||
|
||||
/**
|
||||
* File report in the given destination. If the given node reference is a file plan node
|
||||
* reference the report will be filed in the unfiled records container.
|
||||
|
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.report;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -109,23 +110,40 @@ public class ReportServiceImpl extends ServiceBaseImpl
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.ReportService#generateReport(org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef)
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.ReportService#generateReport(QName, NodeRef)
|
||||
*/
|
||||
@Override
|
||||
public Report generateReport(QName reportType, NodeRef reportedUponNodeRef)
|
||||
{
|
||||
ParameterCheck.mandatory("reportType", reportType);
|
||||
ParameterCheck.mandatory("reportedUponNodeRef", reportedUponNodeRef);
|
||||
|
||||
return generateReport(reportType, reportedUponNodeRef, MimetypeMap.MIMETYPE_HTML);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.ReportService#generateReport(org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef)
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.ReportService#generateReport(QName, NodeRef, String)
|
||||
*/
|
||||
@Override
|
||||
public Report generateReport(QName reportType, NodeRef reportedUponNodeRef, String mimetype)
|
||||
{
|
||||
ParameterCheck.mandatory("reportType", reportType);
|
||||
ParameterCheck.mandatory("reportedUponNodeRef", reportedUponNodeRef);
|
||||
ParameterCheck.mandatory("mimetype", mimetype);
|
||||
ParameterCheck.mandatoryString("mimetype", mimetype);
|
||||
|
||||
return generateReport(reportType, reportedUponNodeRef, mimetype, new HashMap<String, Serializable>(1));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.ReportService#generateReport(QName, NodeRef, String, Map)
|
||||
*/
|
||||
@Override
|
||||
public Report generateReport(QName reportType, NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties)
|
||||
{
|
||||
ParameterCheck.mandatory("reportType", reportType);
|
||||
ParameterCheck.mandatory("reportedUponNodeRef", reportedUponNodeRef);
|
||||
ParameterCheck.mandatoryString("mimetype", mimetype);
|
||||
ParameterCheck.mandatory("properties", properties);
|
||||
|
||||
// get the generator
|
||||
ReportGenerator generator = registry.get(reportType);
|
||||
@@ -137,7 +155,7 @@ public class ReportServiceImpl extends ServiceBaseImpl
|
||||
}
|
||||
|
||||
// generate the report
|
||||
return generator.generateReport(reportedUponNodeRef, mimetype);
|
||||
return generator.generateReport(reportedUponNodeRef, mimetype, properties);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -29,6 +29,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
|
||||
/**
|
||||
* @author Roy Wetherall
|
||||
@@ -41,6 +42,7 @@ public abstract class BaseReportGenerator implements ReportGenerator
|
||||
protected NamespaceService namespaceService;
|
||||
|
||||
protected String reportTypeName;
|
||||
|
||||
protected QName reportType;
|
||||
|
||||
public void setReportService(ReportService reportService)
|
||||
@@ -76,21 +78,33 @@ public abstract class BaseReportGenerator implements ReportGenerator
|
||||
@Override
|
||||
public Report generateReport(NodeRef reportedUponNodeRef, String mimetype)
|
||||
{
|
||||
ParameterCheck.mandatory("reportedUponNodeRef", reportedUponNodeRef);
|
||||
ParameterCheck.mandatoryString("mimetype", mimetype);
|
||||
|
||||
return generateReport(reportedUponNodeRef, mimetype, new HashMap<String, Serializable>(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Report generateReport(NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties)
|
||||
{
|
||||
ParameterCheck.mandatory("reportedUponNodeRef", reportedUponNodeRef);
|
||||
ParameterCheck.mandatoryString("mimetype", mimetype);
|
||||
ParameterCheck.mandatory("properties", properties);
|
||||
|
||||
String reportName = generateReportName(reportedUponNodeRef);
|
||||
Map<QName, Serializable> reportProperties = generateReportProperties(reportedUponNodeRef);
|
||||
ContentReader contentReader = generateReportContent(reportedUponNodeRef, mimetype);
|
||||
ContentReader contentReader = generateReportContent(reportedUponNodeRef, mimetype, properties);
|
||||
return new ReportInfo(reportType, reportName, reportProperties, contentReader);
|
||||
}
|
||||
|
||||
protected abstract String generateReportName(NodeRef reportedUponNodeRef);
|
||||
|
||||
|
||||
protected Map<QName, Serializable> generateReportProperties(NodeRef reportedUponNodeRef)
|
||||
{
|
||||
// default implementation
|
||||
return new HashMap<QName, Serializable>(0);
|
||||
}
|
||||
|
||||
protected abstract ContentReader generateReportContent(NodeRef reportedUponNodeRef, String mimetype);
|
||||
protected abstract ContentReader generateReportContent(NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties);
|
||||
|
||||
}
|
||||
|
@@ -153,16 +153,16 @@ public class DeclarativeReportGenerator extends BaseReportGenerator
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.generator.BaseReportGenerator#generateReportContent(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.report.generator.BaseReportGenerator#generateReportContent(NodeRef, String, Map)
|
||||
*/
|
||||
@Override
|
||||
protected ContentReader generateReportContent(NodeRef reportedUponNodeRef, String mimetype)
|
||||
protected ContentReader generateReportContent(NodeRef reportedUponNodeRef, String mimetype, Map<String, Serializable> properties)
|
||||
{
|
||||
// get the template
|
||||
NodeRef reportTemplateNodeRef = getReportTemplate(mimetype);
|
||||
|
||||
// get the model
|
||||
Map<String, Serializable> model = createTemplateModel(reportTemplateNodeRef, reportedUponNodeRef);
|
||||
Map<String, Serializable> model = createTemplateModel(reportTemplateNodeRef, reportedUponNodeRef, properties);
|
||||
|
||||
// run the template
|
||||
String result = templateService.processTemplate("freemarker", reportTemplateNodeRef.toString(), model);
|
||||
@@ -177,7 +177,7 @@ public class DeclarativeReportGenerator extends BaseReportGenerator
|
||||
return contentWriter.getReader();
|
||||
}
|
||||
|
||||
protected Map<String, Serializable> createTemplateModel(NodeRef templateNodeRef, NodeRef reportedUponNodeRef)
|
||||
protected Map<String, Serializable> createTemplateModel(NodeRef templateNodeRef, NodeRef reportedUponNodeRef, Map<String, Serializable> properties)
|
||||
{
|
||||
Map<String, Serializable> model = new HashMap<String, Serializable>();
|
||||
|
||||
@@ -196,6 +196,9 @@ public class DeclarativeReportGenerator extends BaseReportGenerator
|
||||
model.put("url", UrlUtil.getAlfrescoUrl(sysAdminParams));
|
||||
model.put(TemplateService.KEY_SHARE_URL, UrlUtil.getShareUrl(sysAdminParams));
|
||||
|
||||
// add additional properties
|
||||
model.put("properties", (Serializable) properties);
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user