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;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -58,13 +59,12 @@ public class Report extends AbstractPersistable<Long> {
@Column(name = "report_sql")
private String reportSql;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade = CascadeType.ALL, mappedBy = "report")
private Set<ReportParameterUsage> reportParameterUsages = null;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true)
private Set<ReportParameterUsage> reportParameterUsages = new HashSet<ReportParameterUsage>();
public static Report fromJson(
final Set<ReportParameterUsage> reportParameterUsages,
final JsonCommand command) {
String reportName = null;
@@ -94,8 +94,7 @@ public class Report extends AbstractPersistable<Long> {
reportSql = command.stringValueOfParameterNamed("reportSql");
return new Report(reportName, reportType, reportSubType,
reportCategory, description, useReport, reportSql,
reportParameterUsages);
reportCategory, description, useReport, reportSql);
}
protected Report() {
@@ -105,8 +104,7 @@ public class Report extends AbstractPersistable<Long> {
public Report(final String reportName, final String reportType,
final String reportSubType, final String reportCategory,
final String description, final boolean useReport,
final String reportSql,
final Set<ReportParameterUsage> reportParameterUsages) {
final String reportSql) {
this.reportName = reportName;
this.reportType = reportType;
this.reportSubType = reportSubType;
@@ -115,7 +113,6 @@ public class Report extends AbstractPersistable<Long> {
this.coreReport = false;
this.useReport = useReport;
this.reportSql = reportSql;
this.reportParameterUsages = reportParameterUsages;
validate();
}
@@ -286,6 +283,11 @@ public class Report extends AbstractPersistable<Long> {
return reportParameterUsages;
}
public void setReportParameterUsages(
Set<ReportParameterUsage> reportParameterUsages) {
this.reportParameterUsages = reportParameterUsages;
}
public boolean update(
final Set<ReportParameterUsage> newReportParameterUsages) {
if (newReportParameterUsages == null)
@@ -296,7 +298,9 @@ public class Report extends AbstractPersistable<Long> {
if (!(this.reportParameterUsages.equals(newReportParameterUsages))) {
updated = true;
this.reportParameterUsages = newReportParameterUsages;
this.reportParameterUsages.clear();
this.reportParameterUsages.addAll(newReportParameterUsages);
}
} else {
updated = true;
@@ -14,10 +14,8 @@ import org.springframework.data.jpa.domain.AbstractPersistable;
@Table(name = "stretchy_parameter")
public class ReportParameter extends AbstractPersistable<Long> {
protected ReportParameter() {
//
}
protected ReportParameter() {
//
}
}
@@ -16,7 +16,7 @@ import org.springframework.data.jpa.domain.AbstractPersistable;
@Entity
@Table(name = "stretchy_report_parameter")
public class ReportParameterUsage extends AbstractPersistable<Long> {
@SuppressWarnings("unused")
@ManyToOne(optional = false)
@JoinColumn(name = "report_id", nullable = false)
@@ -71,19 +71,16 @@ public class ReportWritePlatformServiceImpl implements
this.fromApiJsonDeserializer.validate(command.json());
final Report report = Report.fromJson(command);
final Set<ReportParameterUsage> reportParameterUsages = assembleSetOfReportParameterUsages(
null, command);
final Report report = Report.fromJson(reportParameterUsages,
command);
report, command);
if (reportParameterUsages != null) {
for (ReportParameterUsage rpu : reportParameterUsages) {
rpu.setReport(report);
}
report.setReportParameterUsages(reportParameterUsages);
}
this.reportRepository.save(report);
final Permission permission = new Permission("report",
report.getReportName(), "READ");
this.reportRepository.save(report);
this.permissionRepository.save(permission);
return new CommandProcessingResultBuilder()
@@ -188,6 +185,10 @@ public class ReportWritePlatformServiceImpl implements
private Set<ReportParameterUsage> assembleSetOfReportParameterUsages(
final Report report, final JsonCommand command) {
if (report == null) {
throw new PlatformDataIntegrityException("system.error",
"report parameter is null; ");
}
if (command.parameterExists("reportParameters")) {
Set<ReportParameterUsage> reportParameterUsages = new HashSet<ReportParameterUsage>();
@@ -223,36 +224,32 @@ public class ReportWritePlatformServiceImpl implements
}
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,
parameter, reportParameterName);
} else {
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, parameter, reportParameterName);
} else {
reportParameterUsage = rpuById(report, id);
reportParameterUsage = rpuById(report, id);
if (reportParameterUsage == null) {
throw new PlatformDataIntegrityException(
"error.msg.supplied.parameter.id.doesnt.exist",
"Supplied parameterId column doesn't Exist",
id);
if (reportParameterUsage == null) {
throw new PlatformDataIntegrityException(
"error.msg.supplied.parameter.id.doesnt.exist",
"Supplied parameterId column doesn't Exist",
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);