I have a DTO with a few variables and I need to check if my DTO is empty.
I looked into older questions and found this one which is quite interesting Check object empty
But I have the feeling that my solution can be improved as it´s something quite raw.
Here is my code.
public boolean isEmpty() {
return StringUtils.isBlank(nombre) && StringUtils.isBlank(apellidos1) && StringUtils.isBlank(apellidos2) && StringUtils.isBlank(NIF)
&& StringUtils.isBlank(nFederado) && StringUtils.isBlank(fecha) && StringUtils.isBlank(poliza) && StringUtils.isBlank(estado)
&& StringUtils.isBlank(numeroLesion);
}
I use this function in the action of an API to check if it´s completely empty. here is my action:
@Override
public Map execute(Map params) throws Exception {
log.error(" En el action consultar federados action (en el punto que queremos) ");
ConsultarFederado consultaFederado = new ConsultarFederado();
Map result = new HashMap<>();
Map requestParams = (Map) params.get("request_params");
consultaFederado.setNombre(setValue("nombre", requestParams));
consultaFederado.setApellidos1(setValue("apellidos1", requestParams));
consultaFederado.setApellidos2(setValue("apellidos2", requestParams));
consultaFederado.setNIF(setValue("nif", requestParams));
consultaFederado.setFecha(setValue("fecha", requestParams));
consultaFederado.setPoliza(setValue("poliza", requestParams));
consultaFederado.setnFederado(setValue("nFederado", requestParams));
consultaFederado.setEstado(setValue("estado", requestParams));
consultaFederado.setNumeroLesion(setValue("numLesion", requestParams));
if (consultaFederado.isEmpty()) {
ConsultarFederadoDAO.consultaFederado(consultaFederado);
}
result.put("code", "997");
result.put("message", "Es necesario introducir parametros en la consulta");
log.error(" El resultado de la consulta es : " + result.toString());
return result;
}
Any thoughs on how i could improve this isEmpty()
method?
The DTO is an object with 9 Strings.
EDIT: isEmpty function improved based on Stephen comment
EDIT2:
The final action:
public Map execute(Map params) throws Exception {
log.error(" *********************** Consultar Federados Action INI ********************** ");
ConsultarFederado consultaFederado = new ConsultarFederado();
Map result = new HashMap<>();
Map requestParams = (Map) params.get("request_params");
log.info("setValue(nombre, requestParams)" + getValueValidated("nombre", requestParams));
consultaFederado.setNombre(getValueValidated("nombre", requestParams));
consultaFederado.setApellidos1(getValueValidated("apellidos1", requestParams));
consultaFederado.setApellidos2(getValueValidated("apellidos2", requestParams));
consultaFederado.setNIF(getValueValidated("nif", requestParams));
consultaFederado.setFecha(getValueValidated("fecha", requestParams));
consultaFederado.setPoliza(getValueValidated("poliza", requestParams));
consultaFederado.setEstado(getValueValidated("estado", requestParams));
consultaFederado.setNumeroLesion(getValueValidated("numLesion", requestParams));
if (!consultaFederado.isEmpty()) {
result = ConsultarFederadoDAO.consultaFederado(consultaFederado);
} else {
XWMException err = new XWMException();
err.addError("996", "Es necesario introducir parametros en la consulta");
throw err;
}
log.error("**************** RESULT_SEND : " + result.toString());
return result;
}
private String getValueValidated(String value, Map requestParams) {
return Objects.toString(requestParams.get(value), "");
}
And the object isEmpty() method:
public boolean isEmpty() {
return StringUtils.isBlank(nombre) && StringUtils.isBlank(apellidos1) && StringUtils.isBlank(apellidos2) && StringUtils.isBlank(NIF)
&& StringUtils.isBlank(fecha) && StringUtils.isBlank(poliza) && StringUtils.isBlank(estado)
&& StringUtils.isBlank(numeroLesion);
}
public boolean isEmptyGeneral() {
return StringUtils.isBlank(nombre) && StringUtils.isBlank(apellidos1) && StringUtils.isBlank(apellidos2) && StringUtils.isBlank(NIF)
&& StringUtils.isBlank(fecha) && StringUtils.isBlank(numeroLesion);
}
public boolean isEmptyEstado() {
return StringUtils.isBlank(nombre) && StringUtils.isBlank(apellidos1) && StringUtils.isBlank(apellidos2) && StringUtils.isBlank(NIF)
&& StringUtils.isBlank(fecha) && StringUtils.isBlank(numeroLesion);
}
public boolean isEmptyNombre() {
return StringUtils.isBlank(apellidos1) && StringUtils.isBlank(apellidos2) && StringUtils.isBlank(NIF) && StringUtils.isBlank(poliza)
&& StringUtils.isBlank(fecha) && StringUtils.isBlank(numeroLesion);
}
Finally i created 4 "isEmpty" methods to check a few special combinations inside my code.
Here is my logic:
public static Map consultaFederado(ConsultarFederado dto) throws XWMException, Exception {
if (StringUtils.isNotBlank(dto.getPoliza()) && dto.isEmptyGeneral()) {
throwParamsError();
}
if (StringUtils.isNotBlank(dto.getEstado()) && dto.isEmptyEstado()) {
throwParamsError();
}
if (StringUtils.isNotBlank(dto.getNombre()) && dto.isEmptyNombre()){
throwParamsError();
}
Map result = buscarFederados(dto);
return result;
}
Thank you eveyone for the feedback, without you this code would be quite worse