Skip to main content

Update AlurKerja Java 09-11-2023

Di crud : 1.0.0-20231110.092739-142

Tanggal 09-11-2023

Penambahan

defaultSearch

Menangani pencarian data secara menyeluruh (semua / kolom table tertentu). Ada 2 cara implementasi, cek Example

Example

Class DTO

@Getter
@Setter
public class UserDto extends BaseDto<User, UserDto> {
private String name;
private String tag;

private int age;
private Date tanggalLahir;
@Lob
private String description;
}

Implementasi pada Class Specification

public class UserSpesification  extends GenericSearchSpecification<User ,  UserDto> {

public UserSpesification(UserDto dto) {
super(dto);
}

@Override
public void buildSpecification(UserDto dto) {
this.defaultSearch(dto, "tanggalLahir");
}
}

DefaultSearch memiliki 2 params, yaitu class dto, dan variadic arguments (String...) - excludedFields.

  • params pertama untuk mendapatkan field apa aja yang mau di search
  • params kedua untuk menghiraukan field di class dto nya

Sesuai code class diatas, berarti defaultSearch akan menghiraukan pencarian ke field tanggalLahir.

Implemantasi pada Class DTO

@Getter
@Setter
public class UserDto extends BaseDto<User, UserDto> {

private String name;
private String tag;

private int age;
@SearchQueryCriteria(ignoreSearch = true)
private Date tanggalLahir;
@Lob
private String description;

}

Dengan menambahkan annotation SearchQueryCriteria dan menginputkan param ignoreSearch = true, maka library akan otomatis mengabaikan pencarian ke field tanggalLahir

Set value yang dicari

set value pada field search yang sudah terdeklarasi di BaseDto

defaultFilter

Menangani pencarian data secara spesifik. Ada 2 cara implementasi, cek Example

Example

Class DTO

@Getter
@Setter
public class UserDto extends BaseDto<User, UserDto> {
private String name;
private String tag;

private int age;
private Date tanggalLahir;
@Lob
private String description;
}

Implementasi pada Class Specification

public class UserSpesification  extends GenericSearchSpecification<User ,  UserDto> {

public UserSpesification(UserDto dto) {
super(dto);
}

@Override
public void buildSpecification(UserDto dto) {
this.defaultFilter(dto, "tanggalLahir");

this.addCriteria(new SearchCriteria("tanggalLahir", dto.getTanggalLahir(), SearchOperation.DATE_GREATER_EQUAL));
this.addCriteria(new SearchCriteria("tanggalLahir", dto.getTanggalLahir(), SearchOperation.DATE_LESS_EQUAL));
}
}

DefaultFilter memiliki 2 params, yaitu class dto, dan variadic arguments (String...) - excludedFields.

  • params pertama untuk mendapatkan field apa aja yang mau di filter
  • params kedua untuk menghiraukan field di class dto nya

Sesuai code class diatas, berarti defaultFilter akan menghiraukan pencarian ke field tanggalLahir. dan field tersebut akan menggunakan pencarian date between (code setelah this.defaultFilter(dto, "tanggalLahir");)

Implemantasi pada Class DTO

@Getter
@Setter
public class UserDto extends BaseDto<User, UserDto> {

private String name;
private String tag;

private int age;
@SearchQueryCriteria(searchOperation = SearchOperation.DATE_GREATER_EQUAL)
private Date tanggalLahir;
@SearchQueryCriteria(ignoreGenerated = true)
@Lob
private String description;
}

Dengan menambahkan annotation SearchQueryCriteria dan menginputkan param searchOperation = SearchOperation.DATE_GREATER_EQUAL, maka library akan otomatis akan menggunakan search operation DATE_GREATER_EQUAL.

Pada field description terdapat annotatiom SearchQueryCriteria dengan param ignoreGenerated = true, maka library akan otomatis menghiraukan field ini walaupun sudah di set value ke field nya

Set value yang dicari

set value pada field yang ingin difilter. Pastikan field nya sudah terdeklarasi di class yang extends BaseDto

Perubahan

(tidak ada)

Deprikasi

defaultSpecification

Karena menyesuaikan sesuai tujuan (search dan filter) agar mudah memahami mana function untuk filter dan mana untuk search, maka function ini di deprikasi (akan di hapus kedepannya). Silahkan untuk mengubah ke defaultFilter!