Pessoal,
acho que vcs jah devem ter tido que resolver um problema do tipo:
- Usuario realiza uma consulta
- O sistema pode retornar a lista com os objetos da consulta ou a lista vazia com os possiveis motivos (Ex: Não há objetos com os parametros informados, usuario sem permissao de ver os objetos da lista).
Como vcs costumam tratar isso? Estou tratando lancando excepcoes especificas para cada caso quando não há objetos a serem retornados, mas tenho certeza que existem outras maneiras mais performaticas e elegantes.
So para visualizar melhor, vou por aki um trecho do problema:
Codigo do cliente:
...
/** cliente realiza a chamada para buscar uma lista de livros importados (por exemplo) */
try {
Collection<Livro> livros = manager.getLivrosImportados(idUsuario);
}
catch (SemPermissaoException spe) {
// sera mostrado a lista vazia e o respectivo motivo
}
catch (blablaException spe) {
// sera mostrado a lista vazia e o respectivo motivo
}
...
catch (maisumaException spe) {
// sera mostrado a lista vazia e o respectivo motivo
}
...
Codigo do servidor:
...
public Collection<Livro> getLivrosImportados(long idUsuario) {
// verifca permissao
if (!PermissaoUtil.verficaPermissao(idUsuario))
throw new SemPermissaoException("usuario sem permissao");
// verifica outra restricao...
if (algumaCondicao)
throw new blablaException("blablaException");
// Serao lancadas tantas excecoes qto forem a quantidade de motivos,
// pelos quais a lista podera vir vazia....
Collection<Livro> livros = dao.getLivrosImportados();
return livros;
}