//private static final String SUBJECT_CONTEXT_KEY = "javax.security.auth.Subject.container";
public String getUserId() {
+ String result = ANONYMOUS_USER;
+
Authentication authToken = SecurityContextHolder.getContext().getAuthentication();
- return authToken.getName();
+ if (authToken != null) {
+ result = authToken.getName();
- }
++ }
+
+ return result;
}
/**
@Override
public String getCurrentTenantId() {
- //FIXME assumption in 1.0: each user is associated with a single tenant
+ String result = ANONYMOUS_TENANT_ID;
+
+ String userId = getUserId();
+ if (userId.equals(ANONYMOUS_USER) == false && userId.equals(SPRING_ADMIN_USER) == false) {
- String[] tenantIds = getTenantIds();
- if (tenantIds.length < 1) {
- throw new IllegalStateException("No tenant associated with user=" + getUserId());
- }
+ String[] tenantIds = getTenantIds();
+ if (tenantIds.length < 1) {
+ throw new IllegalStateException("No tenant associated with user=" + getUserId());
+ }
- return getTenantIds()[0];
+ result = getTenantIds()[0];
- }
++ }
+
+ return result;
}
public CSpaceTenant[] getTenants() {
@Override
public String getCurrentTenantName() {
- //FIXME assumption in 1.0: each user is associated with a single tenant
+ String result = ANONYMOUS_TENANT_NAME;
+
+ if (getUserId().equals(ANONYMOUS_USER) == false) {
- CSpaceTenant[] tenants = getTenants();
- if (tenants.length < 1) {
- throw new IllegalStateException("No tenant associated with user=" + getUserId());
- }
+ CSpaceTenant[] tenants = getTenants();
+ if (tenants.length < 1) {
+ throw new IllegalStateException("No tenant associated with user=" + getUserId());
+ }
- return getTenants()[0].getName();
+ result = getTenants()[0].getName();
- }
++ }
+
+ return result;
}
public Subject getSubject() {
}
-
-
- private Response buildReportResponse(String reportCSID,
- HashMap<String, Object> params, String reportFileName, String outputMimeType)
+ private InputStream buildReportResult(String reportCSID,
+ HashMap<String, Object> params, String reportFileName, String outputMimeType, StringBuffer outReportFileName)
throws Exception {
Connection conn = null;
- Response response = null;
+ InputStream result = null;
+
try {
- String fullPath = ServiceMain.getInstance().getServerRootDir() +
+ String fileNameBase = Tools.getFilenameBase(reportFileName);
+ String compiledReportFilename = fileNameBase+ReportClient.COMPILED_REPORT_EXTENSION;
+ String reportDescriptionFilename = fileNameBase+ReportClient.REPORT_DECSRIPTION_EXTENSION;
+
+ String basePath = ServiceMain.getInstance().getServerRootDir() +
File.separator + ConfigReader.CSPACE_DIR_NAME +
File.separator + REPORTS_FOLDER +
// File.separator + tenantName +
exporter = new JRCsvExporter();
exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, "\t");
outputFilename = outputFilename+".csv";
+ } else if(outputMimeType.equals(ReportClient.MSWORD_MIME_TYPE) // Understand msword as docx
+ || outputMimeType.equals(ReportClient.OPEN_DOCX_MIME_TYPE)) {
+ exporter = new JRDocxExporter();
+ outputFilename = outputFilename+".docx";
+ } else if(outputMimeType.equals(ReportClient.MSEXCEL_MIME_TYPE) // Understand msexcel as xlsx
+ || outputMimeType.equals(ReportClient.OPEN_XLSX_MIME_TYPE)) {
+ exporter = new JRXlsxExporter();
+ outputFilename = outputFilename+".xlsx";
+ } else if(outputMimeType.equals(ReportClient.MSPPT_MIME_TYPE) // Understand msppt as xlsx
+ || outputMimeType.equals(ReportClient.OPEN_PPTX_MIME_TYPE)) {
+ exporter = new JRPptxExporter();
+ outputFilename = outputFilename+".pptx";
+ } else {
+ logger.error("Reporting: unsupported output MIME type - defaulting to PDF");
+ exporter = new JRPdfExporter();
+ outputFilename = outputFilename+"-default-to.pdf";
}
+ outReportFileName.append(outputFilename); // Set the out going param to the report's final file name
// fill the report
JasperPrint jasperPrint = JasperFillManager.fillReport(fileStream, params,conn);