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!