Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.gov.al.saude.test.formatador;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;

import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.rhd.model.view.ServidorView;
import br.gov.al.saude.test.formatador.impl.FormatadorDeMensagemAuxiliarImpl;
import br.gov.al.saude.test.util.formatador.ContextoMensagem;
import br.gov.al.saude.test.util.formatador.FormatadorDeMensagem;
import br.gov.al.saude.test.util.formatador.impl.AbstractFormatadorDeMensagem;

public class FormatadorServidor extends AbstractFormatadorDeMensagem<ServidorView> {

        private static final String PADRAO_SERVIDOR = "Dados Pessoais: Nome: ''{0}'', Sexo: ''{1}'', Data de Nascimento: ''{2}'', Nacionalidade: ''{3}''; " +
                        "Dados Funcionais: Matrícula: ''{4}'', Data de Admissão: ''{5}'', Tipo Servidor: ''{6}'', Situação: ''{7}'', Cargo: ''{8}'', " +
                        "Órgão de Origem: ''{9}'', Órgão de Lotação: ''{10}'', Unidade de Exercício: ''{11}'', Unidade de Lotação: ''{12}'', " +
                        "Data de Exercício: ''{13}'', Setor: ''{14}'', Classe: ''{15}'', Nível: ''{16}''; " +
                        "Documentos: ''{17}''; " +
                        "Endereço: Logradouro: ''{18}'', Número: ''{19}'', Complemento: ''{20}'', Bairro: ''{21}'', Cidade: ''{22}'', CEP: ''{23}''; " +
                        "Contatos: ''{24}''; E-mail: ''{25}''";

        private FormatadorDeMensagem<Object> formatadorDeMensagem;
       
        public FormatadorServidor() {
                formatadorDeMensagem = new FormatadorDeMensagemAuxiliarImpl();
        }
       
        @Override
        protected String obterPadrao() {
                return PADRAO_SERVIDOR;
        }
       
        @Override
        protected List<Object> gerarParametros(ServidorView servidorView) {

                List<Object> listaParametros = new ArrayList<Object>();
                listaParametros.add(servidorView.getNome());
                listaParametros.add(obterSexoPorExtenso(servidorView.getSexo()));
                listaParametros.add(parseString(servidorView.getDataNascimento()));
                listaParametros.add(servidorView.getNacionalidade());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getNumeroMatricula().toString());
                listaParametros.add(parseString(servidorView.getPrimeiroDadoFuncional().getDataAdmissao()));
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoTipoServidor());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoSituacaoServidor());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoCargo());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoOrgaoOrigem());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoOrgaoLotacao());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoUnidadeExercicio());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoUnidadeLotacao());
                listaParametros.add(parseString(servidorView.getPrimeiroDadoFuncional().getDataExercicio()));
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getDescricaoSetor());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getTipoClasseCarreira());
                listaParametros.add(servidorView.getPrimeiroDadoFuncional().getTipoNivelCarreira());
                listaParametros.add(formatar(ordenarListaObjetos(servidorView.getPessoa().getDocumentos())));
                listaParametros.add(servidorView.getPessoa().getLogradouro());
                listaParametros.add(servidorView.getPessoa().getNumeroImovel());
                listaParametros.add(servidorView.getPessoa().getComplemento());
                listaParametros.add(servidorView.getPessoa().getNomeBairro());
                listaParametros.add(servidorView.getPessoa().getNomeMunicipio());
                listaParametros.add(servidorView.getPessoa().getNumeroCep());
                listaParametros.add(formatar(ordenarListaObjetos(servidorView.getPessoa().getTelefones())));
                listaParametros.add(servidorView.getPessoa().getEmail());
                return listaParametros;
        }

        private <T extends Comparable<? super T>> List<T> ordenarListaObjetos(Set<T> objetos) {
                List<T> listaObjetos = null;
                if(VerificadorUtil.naoEstaNuloOuVazio(objetos)){
                        listaObjetos = new ArrayList<T>(objetos);
                        Collections.sort(listaObjetos);
                }
                return listaObjetos;
        }
       
        private <T> String formatar(List<T> objetos) {
                if(VerificadorUtil.naoEstaNulo(objetos)) {
                        StringBuilder mensagem = new StringBuilder();
                        for (T objeto : objetos) {
                                mensagem.append(formatadorDeMensagem.formatar(ContextoMensagem.NAO_POSSUI, objeto));
                        }
                        return mensagem.toString().isEmpty() ? null : mensagem.toString();
                }
                return null;
        }

        private String obterSexoPorExtenso(String sexo) {
                if(sexo == null)
                        return null;
                if("M".equals(sexo))
                        return "Masculino";
                if("F".equals(sexo))
                        return "Feminino";
                return sexo;
        }
       
        private String parseString(Date data) {
                SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
                return format.format(data);
        }
       
}