removed Pentaho from validation and template
This commit is contained in:
+4
-4
@@ -54,8 +54,8 @@ import org.springframework.stereotype.Component;
|
|||||||
@Scope("singleton")
|
@Scope("singleton")
|
||||||
public class ReportsApiResource {
|
public class ReportsApiResource {
|
||||||
|
|
||||||
private final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "reportName", "reportType",
|
private final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "reportName", "reportType", "reportSubType",
|
||||||
"reportSubType", "reportCategory", "description", "reportSql", "coreReport", "useReport", "reportParameters"));
|
"reportCategory", "description", "reportSql", "coreReport", "useReport", "reportParameters"));
|
||||||
|
|
||||||
private final String resourceNameForPermissions = "REPORT";
|
private final String resourceNameForPermissions = "REPORT";
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
@@ -102,7 +102,7 @@ public class ReportsApiResource {
|
|||||||
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
if (settings.isTemplate()) {
|
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);
|
return this.toApiJsonSerializer.serialize(settings, result, this.RESPONSE_DATA_PARAMETERS);
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ public class ReportsApiResource {
|
|||||||
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
||||||
|
|
||||||
final ReportData result = new ReportData();
|
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());
|
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||||
return this.toApiJsonSerializer.serialize(settings, result, this.RESPONSE_DATA_PARAMETERS);
|
return this.toApiJsonSerializer.serialize(settings, result, this.RESPONSE_DATA_PARAMETERS);
|
||||||
|
|||||||
+2
-4
@@ -86,12 +86,10 @@ final public class ReportData {
|
|||||||
this.allowedParameters = null;
|
this.allowedParameters = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void appendedTemplate(final Collection<ReportParameterData> allowedParameters) {
|
public void appendedTemplate(final Collection<ReportParameterData> allowedParameters, final Collection<String> allowedReportTypes) {
|
||||||
|
|
||||||
final List<String> reportTypes = new ArrayList<>();
|
final List<String> reportTypes = new ArrayList<>();
|
||||||
reportTypes.add("Table");
|
reportTypes.addAll(allowedReportTypes);
|
||||||
reportTypes.add("Pentaho");
|
|
||||||
reportTypes.add("Chart");
|
|
||||||
this.allowedReportTypes = reportTypes;
|
this.allowedReportTypes = reportTypes;
|
||||||
|
|
||||||
final List<String> reportSubTypes = new ArrayList<>();
|
final List<String> reportSubTypes = new ArrayList<>();
|
||||||
|
|||||||
+9
-9
@@ -19,6 +19,7 @@
|
|||||||
package org.apache.fineract.infrastructure.dataqueries.domain;
|
package org.apache.fineract.infrastructure.dataqueries.domain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -77,7 +78,7 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
@OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true)
|
@OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true)
|
||||||
private final Set<ReportParameterUsage> reportParameterUsages = new HashSet<>();
|
private final Set<ReportParameterUsage> reportParameterUsages = new HashSet<>();
|
||||||
|
|
||||||
public static Report fromJson(final JsonCommand command) {
|
public static Report fromJson(final JsonCommand command, final Collection<String> reportTypes) {
|
||||||
|
|
||||||
String reportName = null;
|
String reportName = null;
|
||||||
String reportType = null;
|
String reportType = null;
|
||||||
@@ -109,7 +110,7 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
reportSql = command.stringValueOfParameterNamed("reportSql");
|
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() {
|
protected Report() {
|
||||||
@@ -117,7 +118,7 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Report(final String reportName, final String reportType, final String reportSubType, final String reportCategory,
|
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<String> reportTypes) {
|
||||||
this.reportName = reportName;
|
this.reportName = reportName;
|
||||||
this.reportType = reportType;
|
this.reportType = reportType;
|
||||||
this.reportSubType = reportSubType;
|
this.reportSubType = reportSubType;
|
||||||
@@ -126,10 +127,10 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
this.coreReport = false;
|
this.coreReport = false;
|
||||||
this.useReport = useReport;
|
this.useReport = useReport;
|
||||||
this.reportSql = reportSql;
|
this.reportSql = reportSql;
|
||||||
validate();
|
validate(reportTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> update(final JsonCommand command) {
|
public Map<String, Object> update(final JsonCommand command, final Collection<String> reportTypes) {
|
||||||
|
|
||||||
final Map<String, Object> actualChanges = new LinkedHashMap<>(8);
|
final Map<String, Object> actualChanges = new LinkedHashMap<>(8);
|
||||||
|
|
||||||
@@ -184,7 +185,7 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validate();
|
validate(reportTypes);
|
||||||
|
|
||||||
if (!actualChanges.isEmpty()) {
|
if (!actualChanges.isEmpty()) {
|
||||||
if (isCoreReport()) {
|
if (isCoreReport()) {
|
||||||
@@ -214,15 +215,14 @@ public final class Report extends AbstractPersistable<Long> {
|
|||||||
return reportParameterUsage;
|
return reportParameterUsage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validate() {
|
private void validate(final Collection<String> reportTypes) {
|
||||||
|
|
||||||
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
|
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
|
||||||
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("report");
|
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("report");
|
||||||
|
|
||||||
baseDataValidator.reset().parameter("reportName").value(this.reportName).notBlank().notExceedingLengthOf(100);
|
baseDataValidator.reset().parameter("reportName").value(this.reportName).notBlank().notExceedingLengthOf(100);
|
||||||
|
|
||||||
baseDataValidator.reset().parameter("reportType").value(this.reportType).notBlank()
|
baseDataValidator.reset().parameter("reportType").value(this.reportType).notBlank().isOneOfTheseValues(reportTypes.toArray());
|
||||||
.isOneOfTheseValues(new Object[] { "Table", "Pentaho", "Chart" });
|
|
||||||
|
|
||||||
baseDataValidator.reset().parameter("reportSubType").value(this.reportSubType).notExceedingLengthOf(20);
|
baseDataValidator.reset().parameter("reportSubType").value(this.reportSubType).notExceedingLengthOf(20);
|
||||||
|
|
||||||
|
|||||||
+2
@@ -42,4 +42,6 @@ public interface ReadReportingService {
|
|||||||
Collection<ReportParameterData> getAllowedParameters();
|
Collection<ReportParameterData> getAllowedParameters();
|
||||||
|
|
||||||
ReportData retrieveReport(final Long id);
|
ReportData retrieveReport(final Long id);
|
||||||
|
|
||||||
|
Collection<String> getAllowedReportTypes();
|
||||||
}
|
}
|
||||||
+13
-1
@@ -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.data.ResultsetRowData;
|
||||||
import org.apache.fineract.infrastructure.dataqueries.exception.ReportNotFoundException;
|
import org.apache.fineract.infrastructure.dataqueries.exception.ReportNotFoundException;
|
||||||
import org.apache.fineract.infrastructure.documentmanagement.contentrepository.FileSystemContentRepository;
|
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.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.apache.fineract.useradministration.domain.AppUser;
|
import org.apache.fineract.useradministration.domain.AppUser;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -69,15 +70,17 @@ public class ReadReportingServiceImpl implements ReadReportingService {
|
|||||||
private final DataSource dataSource;
|
private final DataSource dataSource;
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
private final GenericDataService genericDataService;
|
private final GenericDataService genericDataService;
|
||||||
|
private final ReportingProcessServiceProvider reportingProcessServiceProvider;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ReadReportingServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
public ReadReportingServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
||||||
final GenericDataService genericDataService) {
|
final GenericDataService genericDataService, final ReportingProcessServiceProvider reportingProcessServiceProvider) {
|
||||||
|
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.dataSource = dataSource;
|
this.dataSource = dataSource;
|
||||||
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
|
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
|
||||||
this.genericDataService = genericDataService;
|
this.genericDataService = genericDataService;
|
||||||
|
this.reportingProcessServiceProvider = reportingProcessServiceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -389,6 +392,15 @@ public class ReadReportingServiceImpl implements ReadReportingService {
|
|||||||
return parameters;
|
return parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getAllowedReportTypes() {
|
||||||
|
final List<String> reportTypes = new ArrayList<>();
|
||||||
|
reportTypes.add("Table");
|
||||||
|
reportTypes.add("Chart");
|
||||||
|
reportTypes.addAll(this.reportingProcessServiceProvider.findAllReportingTypes());
|
||||||
|
return reportTypes;
|
||||||
|
}
|
||||||
|
|
||||||
private static final class ReportParameterJoinMapper implements RowMapper<ReportParameterJoinData> {
|
private static final class ReportParameterJoinMapper implements RowMapper<ReportParameterJoinData> {
|
||||||
|
|
||||||
public String schema(final Long reportId) {
|
public String schema(final Long reportId) {
|
||||||
|
|||||||
+5
-3
@@ -61,18 +61,20 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic
|
|||||||
private final ReportParameterUsageRepository reportParameterUsageRepository;
|
private final ReportParameterUsageRepository reportParameterUsageRepository;
|
||||||
private final ReportParameterRepository reportParameterRepository;
|
private final ReportParameterRepository reportParameterRepository;
|
||||||
private final PermissionRepository permissionRepository;
|
private final PermissionRepository permissionRepository;
|
||||||
|
private final ReadReportingService readReportingService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ReportWritePlatformServiceImpl(final PlatformSecurityContext context,
|
public ReportWritePlatformServiceImpl(final PlatformSecurityContext context,
|
||||||
final ReportCommandFromApiJsonDeserializer fromApiJsonDeserializer, final ReportRepository reportRepository,
|
final ReportCommandFromApiJsonDeserializer fromApiJsonDeserializer, final ReportRepository reportRepository,
|
||||||
final ReportParameterRepository reportParameterRepository, final ReportParameterUsageRepository reportParameterUsageRepository,
|
final ReportParameterRepository reportParameterRepository, final ReportParameterUsageRepository reportParameterUsageRepository,
|
||||||
final PermissionRepository permissionRepository) {
|
final PermissionRepository permissionRepository, final ReadReportingService readReportingService) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
||||||
this.reportRepository = reportRepository;
|
this.reportRepository = reportRepository;
|
||||||
this.reportParameterRepository = reportParameterRepository;
|
this.reportParameterRepository = reportParameterRepository;
|
||||||
this.reportParameterUsageRepository = reportParameterUsageRepository;
|
this.reportParameterUsageRepository = reportParameterUsageRepository;
|
||||||
this.permissionRepository = permissionRepository;
|
this.permissionRepository = permissionRepository;
|
||||||
|
this.readReportingService = readReportingService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -84,7 +86,7 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic
|
|||||||
|
|
||||||
this.fromApiJsonDeserializer.validate(command.json());
|
this.fromApiJsonDeserializer.validate(command.json());
|
||||||
|
|
||||||
final Report report = Report.fromJson(command);
|
final Report report = Report.fromJson(command, this.readReportingService.getAllowedReportTypes());
|
||||||
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(report, command);
|
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(report, command);
|
||||||
report.update(reportParameterUsages);
|
report.update(reportParameterUsages);
|
||||||
|
|
||||||
@@ -115,7 +117,7 @@ public class ReportWritePlatformServiceImpl implements ReportWritePlatformServic
|
|||||||
final Report report = this.reportRepository.findOne(reportId);
|
final Report report = this.reportRepository.findOne(reportId);
|
||||||
if (report == null) { throw new ReportNotFoundException(reportId); }
|
if (report == null) { throw new ReportNotFoundException(reportId); }
|
||||||
|
|
||||||
final Map<String, Object> changes = report.update(command);
|
final Map<String, Object> changes = report.update(command, this.readReportingService.getAllowedReportTypes());
|
||||||
|
|
||||||
if (changes.containsKey("reportParameters")) {
|
if (changes.containsKey("reportParameters")) {
|
||||||
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(report, command);
|
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(report, command);
|
||||||
|
|||||||
+6
@@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.infrastructure.report.provider;
|
package org.apache.fineract.infrastructure.report.provider;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -58,6 +59,11 @@ public class ReportingProcessServiceProvider implements ApplicationContextAware
|
|||||||
this.initializeRegistry();
|
this.initializeRegistry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Collection<String> findAllReportingTypes() {
|
||||||
|
return this.reportingProcessServices.keySet();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeRegistry() {
|
private void initializeRegistry() {
|
||||||
if (this.reportingProcessServices == null) {
|
if (this.reportingProcessServices == null) {
|
||||||
this.reportingProcessServices = new HashMap<>();
|
this.reportingProcessServices = new HashMap<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user