diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java index 0f759891c..430b92ff3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java @@ -26,7 +26,7 @@ import java.util.Set; ***/ public enum AdHocJsonInputParams { - ID("id"), NAME("name"), QUERY("query"), TABLENAME("tableName"), TABLEFIELDS("tableFields"), ISACTIVE("isActive"), REPORT_RUN_FREQUENCY( + ID("id"), NAME("name"), QUERY("query"), TABLENAME("tableName"), TABLEFIELDS("tableFields"), ACTIVE("isActive"), REPORT_RUN_FREQUENCY( "reportRunFrequency"), REPORT_RUN_EVERY("reportRunEvery"), EMAIL("email"); private final String value; diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java index 88b1b3bcd..3481bbd75 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java @@ -22,8 +22,9 @@ import java.time.ZonedDateTime; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import lombok.Getter; -import lombok.RequiredArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import org.apache.fineract.adhocquery.domain.ReportRunFrequency; import org.apache.fineract.infrastructure.core.data.EnumOptionData; @@ -31,32 +32,32 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData; * Immutable data object represent note or case information AdHocData * */ -@Getter -@RequiredArgsConstructor +@Data +@NoArgsConstructor +@Accessors(chain = true) public class AdHocData { - private final Long id; - private final String name; - private final String query; - private final String tableName; - private final String tableFields; - private final String email; - private final boolean isActive; - private final ZonedDateTime createdOn; - private final Long createdById; - private final Long updatedById; - private final ZonedDateTime updatedOn; - private final String createdBy; - private final List reportRunFrequencies; - private final Long reportRunFrequency; - private final Long reportRunEvery; - private final ZonedDateTime lastRun; + private Long id; + private String name; + private String query; + private String tableName; + private String tableFields; + private String email; + private boolean isActive; + private ZonedDateTime createdOn; + private Long createdById; + private Long updatedById; + private ZonedDateTime updatedOn; + private String createdBy; + private List reportRunFrequencies; + private Long reportRunFrequency; + private Long reportRunEvery; + private ZonedDateTime lastRun; public static AdHocData template() { List reportRunFrequencies = Arrays.stream(ReportRunFrequency.values()) .map(rrf -> new EnumOptionData(rrf.getValue(), rrf.getCode(), rrf.getCode())).collect(Collectors.toList()); - return new AdHocData(null, null, null, null, null, null, false, null, null, null, null, null, reportRunFrequencies, null, null, - null); + return new AdHocData().setReportRunFrequencies(reportRunFrequencies); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java index 9f36da6fb..a5960be91 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java @@ -23,16 +23,23 @@ import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; -import org.apache.commons.lang3.BooleanUtils; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.adhocquery.api.AdHocJsonInputParams; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom; import org.apache.fineract.infrastructure.security.utils.SQLInjectionValidator; +@Getter +@Setter +@NoArgsConstructor +@Accessors(chain = true) @Entity @Table(name = "m_adhoc") -public final class AdHoc extends AbstractAuditableCustom { +public class AdHoc extends AbstractAuditableCustom { @Column(name = "name", length = 100) private String name; @@ -56,22 +63,7 @@ public final class AdHoc extends AbstractAuditableCustom { private Long reportRunEvery; @Column(name = "is_active", nullable = false) - private boolean isActive = false; - - private AdHoc() {} - - private AdHoc(final String name, final String query, final String tableName, final String tableFields, final String email, - final Long reportRunFrequency, final Long reportRunEvery, final boolean isActive) { - this.name = StringUtils.defaultIfEmpty(name, null); - this.query = StringUtils.defaultIfEmpty(query, null); - this.tableName = StringUtils.defaultIfEmpty(tableName, null); - this.tableFields = StringUtils.defaultIfEmpty(tableFields, null); - this.email = StringUtils.defaultIfEmpty(email, null); - this.reportRunFrequency = reportRunFrequency; - this.reportRunEvery = reportRunEvery; - this.isActive = BooleanUtils.toBooleanDefaultIfNull(isActive, false); - - } + private boolean active; public static AdHoc fromJson(final JsonCommand command) { final String name = command.stringValueOfParameterNamed(AdHocJsonInputParams.NAME.getValue()); @@ -85,8 +77,11 @@ public final class AdHoc extends AbstractAuditableCustom { final String email = command.stringValueOfParameterNamed(AdHocJsonInputParams.EMAIL.getValue()); final Long reportRunFrequency = command.longValueOfParameterNamed(AdHocJsonInputParams.REPORT_RUN_FREQUENCY.getValue()); final Long reportRunEvery = command.longValueOfParameterNamed(AdHocJsonInputParams.REPORT_RUN_EVERY.getValue()); - final boolean isActive = command.booleanPrimitiveValueOfParameterNamed(AdHocJsonInputParams.ISACTIVE.getValue()); - return new AdHoc(name, query, tableName, tableFields, email, reportRunFrequency, reportRunEvery, isActive); + final boolean active = command.booleanPrimitiveValueOfParameterNamed(AdHocJsonInputParams.ACTIVE.getValue()); + return new AdHoc().setName(StringUtils.defaultIfEmpty(name, null)).setQuery(StringUtils.defaultIfEmpty(query, null)) + .setTableName(StringUtils.defaultIfEmpty(tableName, null)).setTableFields(StringUtils.defaultIfEmpty(tableFields, null)) + .setEmail(StringUtils.defaultIfEmpty(email, null)).setReportRunFrequency(reportRunFrequency) + .setReportRunEvery(reportRunEvery).setActive(false); } public Map update(final JsonCommand command) { @@ -136,52 +131,13 @@ public final class AdHoc extends AbstractAuditableCustom { actualChanges.put(reportRunEvery, newValue); this.reportRunEvery = newValue; } - final String paramisActive = "isActive"; - if (command.isChangeInBooleanParameterNamed(paramisActive, this.isActive)) { + final String paramisActive = "active"; + if (command.isChangeInBooleanParameterNamed(paramisActive, this.active)) { final Boolean newValue = command.booleanObjectValueOfParameterNamed(paramisActive); actualChanges.put(paramisActive, newValue); - this.isActive = newValue; + this.active = newValue; } return actualChanges; } - public String getName() { - return name; - } - - public String getQuery() { - return query; - } - - public String getTableName() { - return tableName; - } - - public String getTableFields() { - return tableFields; - } - - public boolean isActive() { - return this.isActive; - } - - public String getEmail() { - return email; - } - - public void disableActive() { - this.isActive = true; - } - - public void enableActive() { - this.isActive = false; - } - - public Long getReportRunFrequency() { - return this.reportRunFrequency; - } - - public Long getReportRunEvery() { - return this.reportRunEvery; - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java index 3efce9d14..ffacba208 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java @@ -97,8 +97,11 @@ public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { final Long reportRunEvery = JdbcSupport.getLong(rs, "report_run_every"); final ZonedDateTime lastRun = JdbcSupport.getDateTime(rs, "last_run"); - return new AdHocData(id, name, query, tableName, tableFields, email, isActive, createdDate, createdById, updatedById, updatedOn, - createdByUsername, AdHocData.template().getReportRunFrequencies(), reportRunFrequency, reportRunEvery, lastRun); + return new AdHocData().setId(id).setName(name).setQuery(query).setTableName(tableName).setTableFields(tableFields) + .setEmail(email).setActive(isActive).setCreatedOn(createdDate).setCreatedById(createdById).setUpdatedById(updatedById) + .setUpdatedOn(updatedOn).setCreatedBy(createdByUsername) + .setReportRunFrequencies(AdHocData.template().getReportRunFrequencies()).setReportRunFrequency(reportRunFrequency) + .setReportRunEvery(reportRunEvery).setLastRun(lastRun); } public String schema() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java index 9c6a40b0f..5f81ff8f0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java @@ -137,7 +137,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla * Checking the adhocquery present in DB or not using adHocId */ final AdHoc adHoc = this.adHocRepository.findById(adHocId).orElseThrow(() -> new AdHocNotFoundException(adHocId)); - adHoc.disableActive(); + adHoc.setActive(true); this.adHocRepository.save(adHoc); return new CommandProcessingResultBuilder().withEntityId(adHocId).build(); @@ -158,7 +158,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla * Checking the adHoc present in DB or not using id */ final AdHoc adHoc = this.adHocRepository.findById(adHocId).orElseThrow(() -> new AdHocNotFoundException(adHocId)); - adHoc.enableActive(); + adHoc.setActive(false); this.adHocRepository.save(adHoc); return new CommandProcessingResultBuilder().withEntityId(adHocId).build();