wmixvideo / nfe

Nota Fiscal Eletrônica em Java.
Apache License 2.0
657 stars 379 forks source link

Validação dos campos #518

Closed edivaldoms closed 5 years ago

edivaldoms commented 6 years ago

Sempre que vamos setar os valores das classes só podemos fazer isso se o valor for diferente de null, pois se o valor for null, apresenta erro. Para resolver esse problema nosso código fica enorme.

Temos que checar com if(x != null){...} sempre antes de setar:

if (getMDFInfoIdentificacaoUfPercurso(mdfe) != null){ a.setIdentificacaoUfPercursos(getMDFInfoIdentificacaoUfPercurso(mdfe)); }

if (mdfe.getIdeTpTransp() != null) { a.setTipoTranportador(MDFTipoTranportador.valueOfCodigo(mdfe.getIdeTpTransp().getCodigo())); }

Estava olhando o método em com.fincatto.documentofiscal.mdfe3.classes.nota.MDFInfoIdentificacao public void setIdentificacaoUfPercursos(final List<MDFInfoIdentificacaoUfPercurso> identificacaoUfPercursos) { this.identificacaoUfPercursos = ListValidador.validaListaNaoObrigatoria(identificacaoUfPercursos, 25, "UF percurso MDF-e"); }

Este campo no XML pode ser nulo ou se tiver uma lista, deve ser de no máximo 25 registros. Mas pelo fato de chamar o metodo setIdentificacaoUfPercursos(null), já lança o Exception.

O método que valida a lista "Não Obrigatória" está assim: public static <E> List<E> validaListaNaoObrigatoria(final List<E> lista, final int tamanho, final String info){ validaTamanho(lista, tamanho, info); return lista; }

Mas acredito que deva ser algo tipo: public static <E> List<E> validaListaNaoObrigatoria(final List<E> lista, final int tamanho, final String info) { if (lista != null) { validaTamanho(lista, tamanho, info); } return lista; } Com isso, não precisaria ficar verificando se está nula antes de setar.

O que acham de fazer essa mudança?

Outro detalhe que poderia ficar para o futuro, seria a possibilidade de desligar a validação, pois muitas vezes queremos pre-visualizar a DANFE e se o usuário não preencher diversos campos sem antes de terminar o documento, não conseguirá devido a validação do XML.

fincatto commented 6 years ago

Eu concordo que essa validação não se faz necessária. O desenvolvedor deve ter total controle sobre a geração dos objetos.

edivaldoms commented 6 years ago

Eu fiz algumas melhorias nos validadores onde não valida se o valor for nulo. Vou submeter um pull request daqui a pouco.