mifosx-195 report maintenance

This commit is contained in:
John Woodlock
2013-05-06 19:05:57 +01:00
parent 176facea13
commit 4319fdb512
5 changed files with 50 additions and 48 deletions
@@ -0,0 +1,3 @@
ALTER TABLE stretchy_report_parameter
DROP INDEX `report_id_name_UNIQUE` ;
@@ -6,6 +6,7 @@
package org.mifosplatform.infrastructure.dataqueries.domain; package org.mifosplatform.infrastructure.dataqueries.domain;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -60,11 +61,10 @@ public class Report extends AbstractPersistable<Long> {
private String reportSql; private String reportSql;
@LazyCollection(LazyCollectionOption.FALSE) @LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade = CascadeType.ALL, mappedBy = "report") @OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true)
private Set<ReportParameterUsage> reportParameterUsages = null; private Set<ReportParameterUsage> reportParameterUsages = new HashSet<ReportParameterUsage>();
public static Report fromJson( public static Report fromJson(
final Set<ReportParameterUsage> reportParameterUsages,
final JsonCommand command) { final JsonCommand command) {
String reportName = null; String reportName = null;
@@ -94,8 +94,7 @@ public class Report extends AbstractPersistable<Long> {
reportSql = command.stringValueOfParameterNamed("reportSql"); reportSql = command.stringValueOfParameterNamed("reportSql");
return new Report(reportName, reportType, reportSubType, return new Report(reportName, reportType, reportSubType,
reportCategory, description, useReport, reportSql, reportCategory, description, useReport, reportSql);
reportParameterUsages);
} }
protected Report() { protected Report() {
@@ -105,8 +104,7 @@ public class Report extends AbstractPersistable<Long> {
public Report(final String reportName, final String reportType, public Report(final String reportName, final String reportType,
final String reportSubType, final String reportCategory, final String reportSubType, final String reportCategory,
final String description, final boolean useReport, final String description, final boolean useReport,
final String reportSql, final String reportSql) {
final Set<ReportParameterUsage> reportParameterUsages) {
this.reportName = reportName; this.reportName = reportName;
this.reportType = reportType; this.reportType = reportType;
this.reportSubType = reportSubType; this.reportSubType = reportSubType;
@@ -115,7 +113,6 @@ public class Report extends AbstractPersistable<Long> {
this.coreReport = false; this.coreReport = false;
this.useReport = useReport; this.useReport = useReport;
this.reportSql = reportSql; this.reportSql = reportSql;
this.reportParameterUsages = reportParameterUsages;
validate(); validate();
} }
@@ -286,6 +283,11 @@ public class Report extends AbstractPersistable<Long> {
return reportParameterUsages; return reportParameterUsages;
} }
public void setReportParameterUsages(
Set<ReportParameterUsage> reportParameterUsages) {
this.reportParameterUsages = reportParameterUsages;
}
public boolean update( public boolean update(
final Set<ReportParameterUsage> newReportParameterUsages) { final Set<ReportParameterUsage> newReportParameterUsages) {
if (newReportParameterUsages == null) if (newReportParameterUsages == null)
@@ -296,7 +298,9 @@ public class Report extends AbstractPersistable<Long> {
if (!(this.reportParameterUsages.equals(newReportParameterUsages))) { if (!(this.reportParameterUsages.equals(newReportParameterUsages))) {
updated = true; updated = true;
this.reportParameterUsages = newReportParameterUsages; this.reportParameterUsages.clear();
this.reportParameterUsages.addAll(newReportParameterUsages);
} }
} else { } else {
updated = true; updated = true;
@@ -14,10 +14,8 @@ import org.springframework.data.jpa.domain.AbstractPersistable;
@Table(name = "stretchy_parameter") @Table(name = "stretchy_parameter")
public class ReportParameter extends AbstractPersistable<Long> { public class ReportParameter extends AbstractPersistable<Long> {
protected ReportParameter() {
protected ReportParameter() { //
// }
}
} }
@@ -71,19 +71,16 @@ public class ReportWritePlatformServiceImpl implements
this.fromApiJsonDeserializer.validate(command.json()); this.fromApiJsonDeserializer.validate(command.json());
final Report report = Report.fromJson(command);
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages( final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(
null, command); report, command);
final Report report = Report.fromJson(reportParameterUsages,
command);
if (reportParameterUsages != null) { if (reportParameterUsages != null) {
for (ReportParameterUsage rpu : reportParameterUsages) { report.setReportParameterUsages(reportParameterUsages);
rpu.setReport(report);
}
} }
this.reportRepository.save(report);
final Permission permission = new Permission("report", final Permission permission = new Permission("report",
report.getReportName(), "READ"); report.getReportName(), "READ");
this.reportRepository.save(report);
this.permissionRepository.save(permission); this.permissionRepository.save(permission);
return new CommandProcessingResultBuilder() return new CommandProcessingResultBuilder()
@@ -188,6 +185,10 @@ public class ReportWritePlatformServiceImpl implements
private Set<ReportParameterUsage> assembleSetOfReportParameterUsages( private Set<ReportParameterUsage> assembleSetOfReportParameterUsages(
final Report report, final JsonCommand command) { final Report report, final JsonCommand command) {
if (report == null) {
throw new PlatformDataIntegrityException("system.error",
"report parameter is null; ");
}
if (command.parameterExists("reportParameters")) { if (command.parameterExists("reportParameters")) {
Set<ReportParameterUsage> reportParameterUsages = new HashSet<ReportParameterUsage>(); Set<ReportParameterUsage> reportParameterUsages = new HashSet<ReportParameterUsage>();
@@ -223,36 +224,32 @@ public class ReportWritePlatformServiceImpl implements
} }
ReportParameterUsage reportParameterUsage = null; ReportParameterUsage reportParameterUsage = null;
if (report == null) { if (jsonObject.has("id")) {
final String idStr = jsonObject.get("id").getAsString();
if (!(idStr.equals("")))
id = Long.parseLong(idStr);
}
if (id == null) {
reportParameterUsage = new ReportParameterUsage(report, reportParameterUsage = new ReportParameterUsage(report,
parameter, reportParameterName); parameter, reportParameterName);
} else { } else {
if (jsonObject.has("id")) { reportParameterUsage = rpuById(report, id);
final String idStr = jsonObject.get("id")
.getAsString();
if (!(idStr.equals("")))
id = Long.parseLong(idStr);
}
if (id == null) {
reportParameterUsage = new ReportParameterUsage(
report, parameter, reportParameterName);
} else {
reportParameterUsage = rpuById(report, id);
if (reportParameterUsage == null) { if (reportParameterUsage == null) {
throw new PlatformDataIntegrityException( throw new PlatformDataIntegrityException(
"error.msg.supplied.parameter.id.doesnt.exist", "error.msg.supplied.parameter.id.doesnt.exist",
"Supplied parameterId column doesn't Exist", "Supplied parameterId column doesn't Exist",
id); id);
}
if (parameter != null)
reportParameterUsage.setParameter(parameter);
if (reportParameterName != null) {
reportParameterUsage
.setReportParameterName(reportParameterName);
} }
if (parameter != null)
reportParameterUsage.setParameter(parameter);
if (reportParameterName != null)
reportParameterUsage
.setReportParameterName(reportParameterName);
}
} }
reportParameterUsages.add(reportParameterUsage); reportParameterUsages.add(reportParameterUsage);