Qual padrão usar neste caso?

6 respostas
Marck

Boa tarde,

Gostaria de saber qual a melhor maneira de implentar algo como o seguinte.

Tenho uma Tela onde o usuário informa um número de Nf e clica no botão Buscar, que chamara o seguinte método.

public Faturamento buscarNfeSaida(String nfe, String serie, String filial)
        {

            Faturamento faturamento = x.buscarFaturamento(nfe, serie, filial);

            if (faturamento == null)
                return null;

            if (faturamento.TABELA_FILHA.Trim().Equals("ESTOQUE_SAI1_MAT"))
            {
                if (!buscarRomaneioEmA(faturamento))
                    return null;
            }

            if (faturamento.TABELA_FILHA.Trim().Equals("ROMANEIO_SAIDA_ITEM"))
            {
                if (!buscarRomaneioEmB(faturamento))
                    return null;
            }
            
            return faturamento;
        }

Eu não sei como tratar a mensagem que darei na interface, pois, dentro do método na regra de negócio, posso retornar null se não encontrar o Faturamento, se não encontrar o RomaneioEmA ou se não encontrar o RomaneioEmB.
Na interface, quero dar a mensagem exatamente do que não encontrou, e, acho que não devo colocar essa mensagem na regra de negocio.

Alguém sabe como devo proceder?

6 Respostas

filipenf

Você pode usar exceptions e fazer o tratamento no método que chama. Se não achar em alguma condição, você dispara a exception, e no método que chama você faz o tratamento…

Marck

Opá!

Eu fazia dessa forma.
O problema é quando eu precisar chamar essa regra de negócio a partir de um Web Service ou outra coisa. E com certeza precisarei.

renanreismartins

vc pode dar um new faturamento e setar alguma propriedade com valor especial, tipo:

Faturamento f = new Faturamento();
f.setPropriedadeEspecial = 0;

return f;

ai dps vc verifica onde tem q tratar:

if (f.getPropriedadeEspecial() == 0) {
............
}

abrassss

Marck

Olá!

Acho que dessa forma fica um pouco procedural.

Mas valeu pela ideia!

abraço!

renanreismartins

realmente imagine que a forma de validar se o faturamento mude, teria de mudar em tds os lugares onde existe a condicional
vamos mudar isso:

troque

if (f.getPropriedadeEspecial() == 0) {  
    ............  
    }

por um metodo que encapsule esse comportamento

if(f.isValid()) {
.....
}

acho que melhora

abrasssss

Marck

vou dar uma estudada nesse esquema!

obeigado!

Criado 26 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 6
Participantes 3