I need to add null and empty checks to each of the 27 fields in my DTO class, and I'm searching for the most effective method to accomplish it. Can anyone suggest any ideas?
private String settingType;
private String settingCode;
private String executionEndDate;
private String startToday;
if (!ObjectUtils.isEmpty(updateRequest.getSettingType())) {
builder.setSettingType(updateRequest.getSettingType());
}
if (!ObjectUtils.isEmpty(updateRequest.getSettingCode())) {
builder.setSettingCode(updateRequest.getSettingCode());
}
if (!ObjectUtils.isEmpty(updateRequest.getExecutionEndDate())) {
builder.setExecutionEndDate(updateRequest.getExecutionEndDate());
}
if (!ObjectUtils.isEmpty(updateRequest.isStartToday())) {
builder.setStartToday(updateRequest.getStartToday());
}
We can use this method using consumer
import java.util.function.Consumer;
private <T> void setFieldIfNotEmpty(Consumer<T> setter, T value) {
if (ObjectUtils.isNotEmpty(value)) {
setter.accept(value);
}
}
Then use the above method for null and empty check as well
setFieldIfNotEmpty(builder::setSettingType, updateRequest.getSettingType());
setFieldIfNotEmpty(builder::setSettingCode, updateRequest.getSettingCode());
builder.setStartToday(updateRequest.getStartToday());
setFieldIfNotEmpty(builder::setExecutionEndDate, updateRequest.getExecutionEndDate());
Like this