FINERACT-2181: Fix audit filtering
This commit is contained in:
+32
-4
@@ -119,10 +119,38 @@ public class AuditsApiResource {
|
||||
extraCriteria.addNonNullCriteria("aud.resource_id = ", auditRequest.getResourceId());
|
||||
extraCriteria.addNonNullCriteria("aud.maker_id = ", auditRequest.getMakerId());
|
||||
extraCriteria.addNonNullCriteria("aud.checker_id = ", auditRequest.getCheckerId());
|
||||
extraCriteria.addNonNullCriteria("aud.made_on_date >= ", auditRequest.getMakerDateTimeFrom());
|
||||
extraCriteria.addNonNullCriteria("aud.made_on_date <= ", auditRequest.getMakerDateTimeTo());
|
||||
extraCriteria.addNonNullCriteria("aud.checked_on_date >= ", auditRequest.getCheckerDateTimeFrom());
|
||||
extraCriteria.addNonNullCriteria("aud.checked_on_date <= ", auditRequest.getCheckerDateTimeTo());
|
||||
if (auditRequest.getMakerDateTimeFrom() != null) {
|
||||
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
|
||||
criteria.addNonNullCriteria("aud.made_on_date >= ", auditRequest.getMakerDateTimeFrom(),
|
||||
SQLBuilder.WhereLogicalOperator.NONE);
|
||||
criteria.addNonNullCriteria("aud.made_on_date_utc >= ", auditRequest.getMakerDateTimeFrom(),
|
||||
SQLBuilder.WhereLogicalOperator.OR);
|
||||
});
|
||||
}
|
||||
if (auditRequest.getMakerDateTimeTo() != null) {
|
||||
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
|
||||
criteria.addNonNullCriteria("aud.made_on_date <= ", auditRequest.getMakerDateTimeTo(),
|
||||
SQLBuilder.WhereLogicalOperator.NONE);
|
||||
criteria.addNonNullCriteria("aud.made_on_date_utc <= ", auditRequest.getMakerDateTimeTo(),
|
||||
SQLBuilder.WhereLogicalOperator.OR);
|
||||
});
|
||||
}
|
||||
if (auditRequest.getCheckerDateTimeFrom() != null) {
|
||||
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
|
||||
criteria.addNonNullCriteria("aud.checked_on_date >= ", auditRequest.getCheckerDateTimeFrom(),
|
||||
SQLBuilder.WhereLogicalOperator.NONE);
|
||||
criteria.addNonNullCriteria("aud.checked_on_date_utc >= ", auditRequest.getCheckerDateTimeFrom(),
|
||||
SQLBuilder.WhereLogicalOperator.OR);
|
||||
});
|
||||
}
|
||||
if (auditRequest.getCheckerDateTimeTo() != null) {
|
||||
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
|
||||
criteria.addNonNullCriteria("aud.checked_on_date <= ", auditRequest.getCheckerDateTimeTo(),
|
||||
SQLBuilder.WhereLogicalOperator.NONE);
|
||||
criteria.addNonNullCriteria("aud.checked_on_date_utc <= ", auditRequest.getCheckerDateTimeTo(),
|
||||
SQLBuilder.WhereLogicalOperator.OR);
|
||||
});
|
||||
}
|
||||
extraCriteria.addNonNullCriteria("aud.status = ", auditRequest.getStatus());
|
||||
extraCriteria.addNonNullCriteria("aud.office_id = ", auditRequest.getOfficeId());
|
||||
extraCriteria.addNonNullCriteria("aud.group_id = ", auditRequest.getGroupId());
|
||||
|
||||
+26
-5
@@ -21,10 +21,12 @@ package org.apache.fineract.commands.data.request;
|
||||
import jakarta.ws.rs.QueryParam;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@@ -43,15 +45,15 @@ public class AuditRequest implements Serializable {
|
||||
@QueryParam("makerId")
|
||||
private Long makerId;
|
||||
@QueryParam("makerDateTimeFrom")
|
||||
private ZonedDateTime makerDateTimeFrom;
|
||||
private String makerDateTimeFrom;
|
||||
@QueryParam("makerDateTimeTo")
|
||||
private ZonedDateTime makerDateTimeTo;
|
||||
private String makerDateTimeTo;
|
||||
@QueryParam("checkerId")
|
||||
private Long checkerId;
|
||||
@QueryParam("checkerDateTimeFrom")
|
||||
private ZonedDateTime checkerDateTimeFrom;
|
||||
private String checkerDateTimeFrom;
|
||||
@QueryParam("checkerDateTimeTo")
|
||||
private ZonedDateTime checkerDateTimeTo;
|
||||
private String checkerDateTimeTo;
|
||||
@QueryParam("status")
|
||||
private String status;
|
||||
@QueryParam("clientId")
|
||||
@@ -66,5 +68,24 @@ public class AuditRequest implements Serializable {
|
||||
private Long savingsAccountId;
|
||||
@QueryParam("processingResult")
|
||||
private String processingResult;
|
||||
@QueryParam("dateFormat")
|
||||
private String dateFormat;
|
||||
@QueryParam("locale")
|
||||
private String locale;
|
||||
|
||||
public LocalDateTime getMakerDateTimeFrom() {
|
||||
return DateUtils.convertDateTimeStringToLocalDateTime(makerDateTimeFrom, dateFormat, locale, LocalTime.MIN);
|
||||
}
|
||||
|
||||
public LocalDateTime getMakerDateTimeTo() {
|
||||
return DateUtils.convertDateTimeStringToLocalDateTime(makerDateTimeTo, dateFormat, locale, LocalTime.MAX);
|
||||
}
|
||||
|
||||
public LocalDateTime getCheckerDateTimeFrom() {
|
||||
return DateUtils.convertDateTimeStringToLocalDateTime(checkerDateTimeFrom, dateFormat, locale, LocalTime.MIN);
|
||||
}
|
||||
|
||||
public LocalDateTime getCheckerDateTimeTo() {
|
||||
return DateUtils.convertDateTimeStringToLocalDateTime(checkerDateTimeTo, dateFormat, locale, LocalTime.MAX);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -28,10 +28,10 @@ Feature: SQL Builder
|
||||
|
||||
Examples:
|
||||
| criteria1 | argument1 | criteria2 | argument2 | criteria3 | argument3 | criteria4 | argument4 | template | expected |
|
||||
| | | | | | | | | | SQLBuilder{} |
|
||||
| name = | Michael | hobby LIKE | Mifos/Apache Fineract | age < | 123 | | | WHERE name = ? AND hobby LIKE ? AND age < ? | SQLBuilder{WHERE name = ['Michael'] AND hobby LIKE ['Mifos/Apache Fineract'] AND age < [123]} |
|
||||
| ref = | NULL | | | | | | | WHERE ref = ? | SQLBuilder{WHERE ref = [null]} |
|
||||
| hobby LIKE | Mifos/Apache Fineract | hobby like | Mifos/Apache Fineract | | | | | WHERE hobby LIKE ? AND hobby like ? | |
|
||||
| | | | | | | | | | SQLBuilder{} |
|
||||
| name = | Michael | hobby LIKE | Mifos/Apache Fineract | age < | 123 | | | WHERE name = ? AND hobby LIKE ? AND age < ? | SQLBuilder{WHERE name = ['Michael'] AND hobby LIKE ['Mifos/Apache Fineract'] AND age < [123]} |
|
||||
| ref = | NULL | | | | | | | WHERE ref = ? | SQLBuilder{WHERE ref = [null]} |
|
||||
| hobby LIKE | Mifos/Apache Fineract | hobby like | Mifos/Apache Fineract | | | | | WHERE hobby LIKE ? AND hobby like ? | |
|
||||
|
||||
@sqlbuilder
|
||||
Scenario Outline: Verify that SQL builder detects illegal criteria
|
||||
|
||||
Reference in New Issue
Block a user