Bom dia a todos,
gostaria da opinião de vocês a respeito do tratamento de exceção que estou realizando no seguinte caso:
Tenho uma funçao de cadastro de CONDÔMINO (sistema de condomínio hehe), onde CPF é único para cada pessoa. Ao tentar inserir/atualizar um cadastro faço a checagem do cpf da seguinte forma:
- Faço uma pesquisa por CPF;
1.1. Caso a pesquisa não retorne nada, a exceção não é lançada;
1.2. Caso a pesquisa retorne um registro sigo para os próximos 2 IFs;
1.2.1. Caso a pessoa que estou tentando inserir esteja com ID nulo (significando que é uma inserção) então lanço a exceção;
1.2.2. Caso esteja sendo feita uma atualização, o ID não estará nulo, então verifico se o ID desta pessoa é o mesmo ID da pessoa encontrada na pesquisa de CPF, se for eu não lanço a exceção, caso contrário lanço.
Estou utilizando hibernate na persistência, se houver alguma coisa a melhorar agradeço as sugestões/críticas.
Segue abaixo o trecho de código onde realizo estes passos, está localizado em uma classe que trata das regras de negócio.
public void salvarCondomino(Condomino condomino) throws CpfExistenteException, EnderecoJaCadastradoException {
validarCadastro(condomino);
PersistenceFacadeCondomino.salvarCondomino(condomino);
}
...
public void validarCadastro(Condomino c) throws CpfExistenteException, EnderecoJaCadastradoException {
if (verificarExistenciaCpf(c)) {
throw new CpfExistenteException("CPF já cadastrado no sistema");
}
if (verificarExistenciaEndereco(c)) {
throw new EnderecoJaCadastradoException("Endereço já cadastrado no sistema, verifique o Apartamento ou Bloco");
}
}
...
public Boolean verificarExistenciaCpf(Condomino c) {
Boolean existe = false;
Condomino c2 = PersistenceFacadeCondomino.localizarPorCpf(c.getCpf());
if (c2 == null) {
existe = false;
} else if (c.getId() == null) {
existe = true;
} else if (c.getId().equals(c2.getId())) {
existe = false;
} else if (!c.getId().equals(c2.getId())) {
existe = true;
}
return existe;
}