Skip to main content

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 IN jika value nya mengandung comma

    • 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 name di Annotation SearchQueryCriteria

    Bertujuan 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;

    name berdasarkan nama field di entity nya.

Dan beberapa perubahan kecil seperti clean code dan optimize import

Deprikasi

(tidak ada)