From c9afea91fe55c7ed2c44a25577b5966ad68f6154 Mon Sep 17 00:00:00 2001 From: pramod Date: Mon, 1 Feb 2016 16:19:46 +0530 Subject: [PATCH] removed Pentaho from validation and template --- .../dataqueries/api/ReportsApiResource.java | 8 ++++---- .../dataqueries/data/ReportData.java | 6 ++---- .../dataqueries/domain/Report.java | 18 +++++++++--------- .../service/ReadReportingService.java | 2 ++ .../service/ReadReportingServiceImpl.java | 14 +++++++++++++- .../ReportWritePlatformServiceImpl.java | 8 +++++--- .../ReportingProcessServiceProvider.java | 6 ++++++ 7 files changed, 41 insertions(+), 21 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/ReportsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/ReportsApiResource.java index 77b3c0779..f77be4e85 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/ReportsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/ReportsApiResource.java @@ -54,8 +54,8 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class ReportsApiResource { - private final Set RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "reportName", "reportType", - "reportSubType", "reportCategory", "description", "reportSql", "coreReport", "useReport", "reportParameters")); + private final Set RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "reportName", "reportType", "reportSubType", + "reportCategory", "description", "reportSql", "coreReport", "useReport", "reportParameters")); private final String resourceNameForPermissions = "REPORT"; private final PlatformSecurityContext context; @@ -102,7 +102,7 @@ public class ReportsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); if (settings.isTemplate()) { - result.appendedTemplate(this.readReportingService.getAllowedParameters()); + result.appendedTemplate(this.readReportingService.getAllowedParameters(), this.readReportingService.getAllowedReportTypes()); } return this.toApiJsonSerializer.serialize(settings, result, this.RESPONSE_DATA_PARAMETERS); } @@ -116,7 +116,7 @@ public class ReportsApiResource { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); final ReportData result = new ReportData(); - result.appendedTemplate(this.readReportingService.getAllowedParameters()); + result.appendedTemplate(this.readReportingService.getAllowedParameters(), this.readReportingService.getAllowedReportTypes()); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, result, this.RESPONSE_DATA_PARAMETERS); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java index c55602bd3..e80ee677f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java @@ -86,12 +86,10 @@ final public class ReportData { this.allowedParameters = null; } - public void appendedTemplate(final Collection allowedParameters) { + public void appendedTemplate(final Collection allowedParameters, final Collection allowedReportTypes) { final List reportTypes = new ArrayList<>(); - reportTypes.add("Table"); - reportTypes.add("Pentaho"); - reportTypes.add("Chart"); + reportTypes.addAll(allowedReportTypes); this.allowedReportTypes = reportTypes; final List reportSubTypes = new ArrayList<>(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java index 9668f4b26..799f003dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.dataqueries.domain; import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -77,7 +78,7 @@ public final class Report extends AbstractPersistable { @OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true) private final Set reportParameterUsages = new HashSet<>(); - public static Report fromJson(final JsonCommand command) { + public static Report fromJson(final JsonCommand command, final Collection reportTypes) { String reportName = null; String reportType = null; @@ -109,7 +110,7 @@ public final class Report extends AbstractPersistable { reportSql = command.stringValueOfParameterNamed("reportSql"); } - return new Report(reportName, reportType, reportSubType, reportCategory, description, useReport, reportSql); + return new Report(reportName, reportType, reportSubType, reportCategory, description, useReport, reportSql, reportTypes); } protected Report() { @@ -117,7 +118,7 @@ public final class Report extends AbstractPersistable { } public Report(final String reportName, final String reportType, final String reportSubType, final String reportCategory, - final String description, final boolean useReport, final String reportSql) { + final String description, final boolean useReport, final String reportSql, final Collection reportTypes) { this.reportName = reportName; this.reportType = reportType; this.reportSubType = reportSubType; @@ -126,10 +127,10 @@ public final class Report extends AbstractPersistable { this.coreReport = false; this.useReport = useReport; this.reportSql = reportSql; - validate(); + validate(reportTypes); } - public Map update(final JsonCommand command) { + public Map update(final JsonCommand command, final Collection reportTypes) { final Map actualChanges = new LinkedHashMap<>(8); @@ -184,7 +185,7 @@ public final class Report extends AbstractPersistable { } } - validate(); + validate(reportTypes); if (!actualChanges.isEmpty()) { if (isCoreReport()) { @@ -214,15 +215,14 @@ public final class Report extends AbstractPersistable { return reportParameterUsage; } - private void validate() { + private void validate(final Collection reportTypes) { final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("report"); baseDataValidator.reset().parameter("reportName").value(this.reportName).notBlank().notExceedingLengthOf(100); - baseDataValidator.reset().parameter("reportType").value(this.reportType).notBlank() - .isOneOfTheseValues(new Object[] { "Table", "Pentaho", "Chart" }); + baseDataValidator.reset().parameter("reportType").value(this.reportType).notBlank().isOneOfTheseValues(reportTypes.toArray()); baseDataValidator.reset().parameter("reportSubType").value(this.reportSubType).notExceedingLengthOf(20); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java index 4891d55fd..eb75fe02c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java @@ -42,4 +42,6 @@ public interface ReadReportingService { Collection getAllowedParameters(); ReportData retrieveReport(final Long id); + + Collection getAllowedReportTypes(); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java index 672e70f21..69c805638 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java @@ -45,6 +45,7 @@ import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeader import org.apache.fineract.infrastructure.dataqueries.data.ResultsetRowData; import org.apache.fineract.infrastructure.dataqueries.exception.ReportNotFoundException; import org.apache.fineract.infrastructure.documentmanagement.contentrepository.FileSystemContentRepository; +import org.apache.fineract.infrastructure.report.provider.ReportingProcessServiceProvider; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.useradministration.domain.AppUser; import org.slf4j.Logger; @@ -69,15 +70,17 @@ public class ReadReportingServiceImpl implements ReadReportingService { private final DataSource dataSource; private final PlatformSecurityContext context; private final GenericDataService genericDataService; + private final ReportingProcessServiceProvider reportingProcessServiceProvider; @Autowired public ReadReportingServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource, - final GenericDataService genericDataService) { + final GenericDataService genericDataService, final ReportingProcessServiceProvider reportingProcessServiceProvider) { this.context = context; this.dataSource = dataSource; this.jdbcTemplate = new JdbcTemplate(this.dataSource); this.genericDataService = genericDataService; + this.reportingProcessServiceProvider = reportingProcessServiceProvider; } @Override @@ -389,6 +392,15 @@ public class ReadReportingServiceImpl implements ReadReportingService { return parameters; } + @Override + public Collection getAllowedReportTypes() { + final List reportTypes = new ArrayList<>(); + reportTypes.add("Table"); + reportTypes.add("Chart"); + reportTypes.addAll(this.reportingProcessServiceProvider.findAllReportingTypes()); + return reportTypes; + } + private static final class ReportParameterJoinMapper implements RowMapper { public String schema(final Long reportId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReportWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReportWritePlatformServiceImpl.java index 548b15632..eb54824fc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReportWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReportWritePlatformServiceImpl.java @@ -61,18 +61,20 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic private final ReportParameterUsageRepository reportParameterUsageRepository; private final ReportParameterRepository reportParameterRepository; private final PermissionRepository permissionRepository; + private final ReadReportingService readReportingService; @Autowired public ReportWritePlatformServiceImpl(final PlatformSecurityContext context, final ReportCommandFromApiJsonDeserializer fromApiJsonDeserializer, final ReportRepository reportRepository, final ReportParameterRepository reportParameterRepository, final ReportParameterUsageRepository reportParameterUsageRepository, - final PermissionRepository permissionRepository) { + final PermissionRepository permissionRepository, final ReadReportingService readReportingService) { this.context = context; this.fromApiJsonDeserializer = fromApiJsonDeserializer; this.reportRepository = reportRepository; this.reportParameterRepository = reportParameterRepository; this.reportParameterUsageRepository = reportParameterUsageRepository; this.permissionRepository = permissionRepository; + this.readReportingService = readReportingService; } @Transactional @@ -84,7 +86,7 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic this.fromApiJsonDeserializer.validate(command.json()); - final Report report = Report.fromJson(command); + final Report report = Report.fromJson(command, this.readReportingService.getAllowedReportTypes()); final Set reportParameterUsages = assembleSetOfReportParameterUsages(report, command); report.update(reportParameterUsages); @@ -115,7 +117,7 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic final Report report = this.reportRepository.findOne(reportId); if (report == null) { throw new ReportNotFoundException(reportId); } - final Map changes = report.update(command); + final Map changes = report.update(command, this.readReportingService.getAllowedReportTypes()); if (changes.containsKey("reportParameters")) { final Set reportParameterUsages = assembleSetOfReportParameterUsages(report, command); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java index 8d1c0fe86..e8ef16b90 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.infrastructure.report.provider; +import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -58,6 +59,11 @@ public class ReportingProcessServiceProvider implements ApplicationContextAware this.initializeRegistry(); } + public Collection findAllReportingTypes() { + return this.reportingProcessServices.keySet(); + + } + private void initializeRegistry() { if (this.reportingProcessServices == null) { this.reportingProcessServices = new HashMap<>();