Maintenance
18 Desember 2023
Versi
Modul BPMN
<dependency>
<groupId>com.alurkerja.bpmn</groupId>
<artifactId>alurkerja-bpmn</artifactId>
<version>1.0.0-20231218.082946-193</version>
</dependency>
Modul CRUD
<dependency>
<groupId>com.alurkerja.crud</groupId>
<artifactId>alurkerja-crud</artifactId>
<version>1.0.0-20231218.082932-176</version>
</dependency>
Penambahan
(tidak ada)
Perubahan
Perbaikan split untuk taskDefKey di BaseSearchSpecification
- before
Predicate p2 = criteriaBuilder.in(logRoot.get("statusAfter")).value(Arrays.asList(taskDefKey.split("\\s,\\s")));- after
Predicate p2 = criteriaBuilder.in(logRoot.get("statusAfter")).value(Arrays.asList(taskDefKey.trim().split("\\s*,\\s*")));Perbaikan default filter jika field yang mengandung kosa kata id / code
Perbaikan ini agar field tersebut dapat secara langsung menggunakan Operasi
INjika value nya mengandungcomma- before
private void setCriteriaNullOperation(String fieldName, Object value, Boolean skipped, boolean isId) {
if (isId) {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.EQUAL, skipped));
} else if (value instanceof String) {
if (String.valueOf(value).contains(",")) {
List<String> values = Arrays.asList(String.valueOf(value).trim().split(SPLIT_COMMA_TRIM));
this.addCriteria(new SearchCriteria(fieldName, values, SearchOperation.IN, skipped));
} else {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.MATCH, skipped));
}
} else if (value.getClass().getSimpleName().toLowerCase().contains("date")) {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.DATE_EQUAL, skipped));
} else {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.EQUAL, skipped));
}
}- after
private void setCriteriaNullOperation(String fieldName, Object value, Boolean skipped, boolean isId) {
if (isId) {
setCriteriaForNull(fieldName, value, skipped, SearchOperation.EQUAL);
} else if (value instanceof String) {
setCriteriaForNull(fieldName, value, skipped, SearchOperation.MATCH);
} else if (value.getClass().getSimpleName().toLowerCase().contains("date")) {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.DATE_EQUAL, skipped));
} else {
this.addCriteria(new SearchCriteria(fieldName, value, SearchOperation.EQUAL, skipped));
}
}
private void setCriteriaForNull(String fieldName, Object value, Boolean skipped, SearchOperation searchOperation) {
if (String.valueOf(value).contains(",")) {
List<String> values = Arrays.asList(String.valueOf(value).trim().split(SPLIT_COMMA_TRIM));
this.addCriteria(new SearchCriteria(fieldName, values, SearchOperation.IN, skipped));
} else {
this.addCriteria(new SearchCriteria(fieldName, value, searchOperation, skipped));
}
}Menambah parameter
namediAnnotation SearchQueryCriteriaBertujuan agar field di DTO dapat berbeda dengan Entity, yang disebabkan karena diharuskan memakai nama berbeda seperti dibawah ini.
@SearchQueryCriteria(name = "spkImplementationOnDate", searchOperation = SearchOperation.DATE_GREATER_EQUAL)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date spkImplementationDateStart;
@SearchQueryCriteria(name = "spkImplementationOnDate", searchOperation = SearchOperation.DATE_LESS_EQUAL)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date spkImplementationDateEnd;nameberdasarkan nama field di entity nya.
Dan beberapa perubahan kecil seperti clean code dan optimize import
Deprikasi
(tidak ada)