Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ private boolean processReport(String reportName, HttpServletRequest request, Htt
UserAccount account = PolicyHelper.getUserAccount(vreq);
RequestModelAccess rma = ModelAccess.on(vreq);
// Generate the report directly into the output stream
report.generateReport(response.getOutputStream(), rma, account);
report.generateReport(response.getOutputStream(), rma, account, request.getParameterMap());
} catch (IOException | ReportGeneratorException e) {
log.error("Unable to generate the report", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.EditConfigurationConstants;
import edu.cornell.mannlib.vitro.webapp.freemarker.loader.FreemarkerTemplateLoader;
import edu.cornell.mannlib.vitro.webapp.i18n.freemarker.I18nMethodModel;
import edu.cornell.mannlib.vitro.webapp.i18n.freemarker.ReportAuthMethodModel;
import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
import edu.cornell.mannlib.vitro.webapp.utils.developer.DeveloperSettings;
import edu.cornell.mannlib.vitro.webapp.utils.developer.Key;
Expand Down Expand Up @@ -273,6 +274,8 @@ private void addMethods(FreemarkerConfigurationImpl c) {
c.setSharedVariable("placeholderImageUrl",
new IndividualPlaceholderImageUrlMethod());
c.setSharedVariable("i18n", new I18nMethodModel());
c.setSharedVariable("isReportAuth", new ReportAuthMethodModel());

}

private Map<String, Object> getRevisionInfo(ServletContext ctx) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/* $This file is distributed under the terms of the license in LICENSE$ */

package edu.cornell.mannlib.vitro.webapp.i18n.freemarker;

import static edu.cornell.mannlib.vitro.webapp.auth.attributes.AccessOperation.EXECUTE;
import static edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper.isAuthorizedForActions;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import edu.cornell.mannlib.vitro.webapp.auth.objects.ReportGeneratorAccessObject;
import freemarker.core.Environment;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;

public class ReportAuthMethodModel implements TemplateMethodModelEx {

@Override
public Object exec(List args) throws TemplateModelException {
if (args.isEmpty() || args.get(0) == null) {
return false;
}
Environment env = Environment.getCurrentEnvironment();
HttpServletRequest request = (HttpServletRequest) env.getCustomAttribute("request");
String uri = args.get(0).toString();
return isAuthorizedForActions(request, new ReportGeneratorAccessObject(uri), EXECUTE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public abstract class AbstractYARGTemplateReport extends AbstractTemplateReport
* Generate the report
*/
protected void generateReport(OutputStream outputStream, String name, ReportOutputType type,
RequestModelAccess request, UserAccount account) {
RequestModelAccess request, UserAccount account, Map<String, String[]> parameters) {
// Create a new report builder and template
ReportBuilder reportBuilder = new ReportBuilder();
ReportTemplateBuilder reportTemplateBuilder = new ReportTemplateBuilder();
Expand All @@ -56,7 +56,7 @@ protected void generateReport(OutputStream outputStream, String name, ReportOutp
Map<String, Object> params = new HashMap<String, Object>();
for (DataSource dataSource : getDataSources()) {
// Get the output of the datasource
String body = dataSource.getBody(new HashMap<>(), request, account);
String body = dataSource.getBody(parameters, request, account);
if (!StringUtils.isEmpty(body)) {
// Bind the output to the name given in the datasource configuration
params.put(dataSource.getOutputName(), body);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ private void convertObjectNodeToXml(Document xmlDoc, String outputName, JsonNode
}

@Override
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account)
throws ReportGeneratorException {
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account,
Map<String, String[]> parameters) throws ReportGeneratorException {
// Get the XML
Document xmlDoc = generateXml(request, account);
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.modelaccess.RequestModelAccess;
Expand Down Expand Up @@ -32,10 +33,11 @@ public interface ReportGenerator {
* Generates the report directly into the specified output stream
*
* @param outputStream Stream to write report into
* @param map
* @throws ReportGeneratorException
*/
void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account)
throws ReportGeneratorException;
void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account,
Map<String, String[]> map) throws ReportGeneratorException;

void setIsPersistent(boolean isPersistent);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package edu.cornell.mannlib.vitro.webapp.reporting;

import java.io.OutputStream;
import java.util.Map;

import com.haulmont.yarg.structure.ReportOutputType;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
Expand All @@ -19,8 +20,8 @@ public String getContentType() throws ReportGeneratorException {
}

@Override
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account)
throws ReportGeneratorException {
generateReport(outputStream, "report.xlsx", ReportOutputType.xlsx, request, account);
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account,
Map<String, String[]> parameters) throws ReportGeneratorException {
generateReport(outputStream, "report.xlsx", ReportOutputType.xlsx, request, account, parameters);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package edu.cornell.mannlib.vitro.webapp.reporting;

import java.io.OutputStream;
import java.util.Map;

import com.haulmont.yarg.structure.ReportOutputType;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
Expand All @@ -19,8 +20,8 @@ public String getContentType() throws ReportGeneratorException {
}

@Override
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account)
throws ReportGeneratorException {
generateReport(outputStream, "report.docx", ReportOutputType.docx, request, account);
public void generateReport(OutputStream outputStream, RequestModelAccess request, UserAccount account,
Map<String, String[]> params) throws ReportGeneratorException {
generateReport(outputStream, "report.docx", ReportOutputType.docx, request, account, params);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.Base64;
import java.util.HashMap;

import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames;
Expand Down Expand Up @@ -50,7 +51,7 @@ public void testExcelReport() throws Exception {
reportGenerator.addDatasource(getDataSource());
reportGenerator.setTemplateBase64(string);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
reportGenerator.generateReport(baos, rma, account);
reportGenerator.generateReport(baos, rma, account, new HashMap<String, String[]>());
assertFalse(baos.size() == 0);
if (debug) {
File file = new File(REPORTING_DIR + "/report.xlsx");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.Base64;
import java.util.HashMap;

import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames;
Expand Down Expand Up @@ -50,7 +51,7 @@ public void testWordReport() throws Exception {
reportGenerator.addDatasource(getDataSource());
reportGenerator.setTemplateBase64(string);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
reportGenerator.generateReport(baos, rma, account);
reportGenerator.generateReport(baos, rma, account, new HashMap<String, String[]>());
assertFalse(baos.size() == 0);
if (debug) {
File file = new File(REPORTING_DIR + "/report.docx");
Expand Down
Loading