refactor: add lombok to adhocquery module

This commit is contained in:
Hemant Gupta
2022-09-19 13:27:32 +02:00
committed by Arnold Gálovics
parent 33d781f5fb
commit c761b40279
5 changed files with 49 additions and 89 deletions
@@ -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;
@@ -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<EnumOptionData> 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<EnumOptionData> reportRunFrequencies;
private Long reportRunFrequency;
private Long reportRunEvery;
private ZonedDateTime lastRun;
public static AdHocData template() {
List<EnumOptionData> 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);
}
}
@@ -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<String, Object> 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;
}
}
@@ -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() {
@@ -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();