Colegas, boa noite!
Analisando alguns códigos de projetos anteriores para aplicar alguns conceitos de refatoração me deparei com isso:
public String montarEnderecoCondominio() {
try {
pnrArea = pnrAreaDAO.getAll();
// Consulta as quadras de acordo com à área selecionada.
if(idArea > 0) {
pnrQuadra = pnrQuadraDAO.listaQuadraPorAreas(idArea);
}if(idQuadra > 0) {
pnrBloco = pnrBlocoConjuntoDAO.listaPNRBlocoConjuntoPorQuadra(idQuadra);
}if(idBloco > 0) {
condominio = condominioDAO.pesquisarCondominioByBloco(idBloco);
if(condominio != null) {
addActionError("Condomínio já cadastrado. Se necessário atualize o cadastro utilização a opção no menu Condomínio - Cadastro - Atualizar");
}else {
flag = "2";
}
}
} catch (Exception e) {
addActionError(e.toString());
}
return ActionSupport.SUCCESS;
}
Vejo esse método e quero fazer outro na hora. Gostaria que os colegas me ajudassem a analisar alguns tópicos.
1 - A lista abaixo é preenchida por diversar vezes no sistema. É uma lista com cidades onde podem existir condomínios que não muda nunca. Pode mudar mas de 50 em 50 anos. Não seria interessante carregar esse lista ao inicializar o container e depois salvar numa sessão para evitar as consultas desnecessárias?
pnrArea = pnrAreaDAO.getAll();
2 - A velha história de como carregar varias selects sem sair fazendo método para cada ação. No trecho abaixo ele usa uma gambiarra para que o mesmo método carregue as áreas, quadras e blocos. Alguém sabe de uma outra solução para isso?
if(idArea > 0) {
pnrQuadra = pnrQuadraDAO.listaQuadraPorAreas(idArea);
}if(idQuadra > 0) {
pnrBloco = pnrBlocoConjuntoDAO.listaPNRBlocoConjuntoPorQuadra(idQuadra);
}if(idBloco > 0) {
condominio = condominioDAO.pesquisarCondominioByBloco(idBloco);
if(condominio != null) {
addActionError("Condomínio já cadastrado. Se necessário atualize o cadastro utilização a opção no menu Condomínio - Cadastro - Atualizar");
}else {
flag = "2";
}
}
Se puderem me ajudar agradeço.