Bom dia.
Como posso eliminar esta duplicação, da melhor forma, utilizando boas práticas?
Método:
public Usuario consultarUsuario(String codigo, String email) {
StringBuilder consulta = new StringBuilder("select usuario from Usuario as u where ");
if(isParametroNaoNulo(codigo)) {
consulta.append("u.codigo = :codigo");
}
if(isCodigoEEmailNaoNulo(codigo, email)) {
consulta.append(" and ");
}
if(isParametroNaoNulo(email)) {
consulta.append("u.email = :email");
}
Query query = entityManager.createQuery(consulta.toString());
if(isParametroNaoNulo(codigo)){
query.setParameter("codigo", codigo);
}
if(isParametroNaoNulo(email)){
query.setParameter("email", email);
}
return query.getSingleResult();
}
Código duplicado:
if(isParametroNaoNulo(codigo)) {
consulta.append("u.codigo = :codigo");
}
if(isParametroNaoNulo(email)) {
consulta.append("u.email = :email");
}
e
if(isParametroNaoNulo(codigo)){
query.setParameter("codigo", codigo);
}
if(isParametroNaoNulo(email)){
query.setParameter("email", email);
}