Subversion Repositories Integrator Subversion

Rev

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

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

import static br.gov.al.saude.test.ConstantesTestHelper.UtilConstantes.ESPACO;
import static br.gov.al.saude.test.ConstantesTestHelper.UtilConstantes.PONTO_VIRGULA;
import static br.gov.al.saude.test.util.ConversorDeTipo.FORMAT_DATE_DD_MM_YYYY_HH_MM_SS;
import static br.gov.al.saude.test.util.ConversorDeTipo.converterDateParaString;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import br.gov.al.saude.framework.core.util.ConversorDeTipo;
import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.scg.model.view.PessoaDocumentoView;
import br.gov.al.saude.scg.model.view.PessoaFisicaView;
import br.gov.al.saude.scs.model.Frequencia;
import br.gov.al.saude.scs.model.Turma;
import br.gov.al.saude.scs.model.TurmaParticipante;
import br.gov.al.saude.scs.model.TurmaPeriodo;
import br.gov.al.saude.scs.model.TurmaProcesso;
import br.gov.al.saude.scs.model.view.ProcessoOrcamentoView;
import br.gov.al.saude.test.util.formatador.impl.AbstractFormatadorDeMensagem;

public class FormatadorTurmaDetalhado extends AbstractFormatadorDeMensagem<Turma>  {

        @Override
        protected String obterPadrao() {

                StringBuilder mensagemPadrao = new StringBuilder();
                mensagemPadrao.append("Turma: ");
                mensagemPadrao.append("Capacitação: ''{0}'', Identificador da Turma: ''{1}'', Ano de Exercício: ''{2}'', ");
                mensagemPadrao.append("Unidade Solicitante: ''{3}'', ");
                mensagemPadrao.append("Representantes: [{4}], ");
                mensagemPadrao.append("Situação da Turma: ''{5}'', Carga Horária: ''{6}'', Unidade Federativa: ''{7}'', Município: ''{8}'', ");
                mensagemPadrao.append("Observação: ''{9}'', Ementa: ''{10}'', Ativo: ''{11}'', ");
                mensagemPadrao.append("Processos: [{12}], ");
                mensagemPadrao.append("Participantes - Organizadores: [{13}], ");
                mensagemPadrao.append("Participantes: [{14}], ");
                mensagemPadrao.append("Períodos: [{15}], ");
                mensagemPadrao.append("Frequências: [{16}]");
               
                return mensagemPadrao.toString();
        }

        @Override
        protected List<Object> gerarParametros(Turma turma) {
                List<Object> listaParametros = new ArrayList<Object>();
               
                listaParametros.add(turma.getCapacitacao().getDescricao());
                listaParametros.add(turma.getSequencial());
                listaParametros.add(String.valueOf(turma.getAnoExercicio()));
                listaParametros.add(turma.getUnidadeSolicitante().getDescricao());
                listaParametros.add(gerarStringRepresentantes(turma.getRepresentantes()));
                listaParametros.add(turma.getSituacaoTurma());
                listaParametros.add(turma.getCargaHoraria());
                listaParametros.add(turma.getUf().getCodigo());
                listaParametros.add(turma.getMunicipio().getNomeMunicipio());
                listaParametros.add(VerificadorUtil.naoEstaNuloOuVazio(turma.getObservacao())?turma.getObservacao():"");
                listaParametros.add(VerificadorUtil.naoEstaNuloOuVazio(turma.getEmenta())?turma.getEmenta():"");
                listaParametros.add(turma.getIndicadorAtivo()?"SIM":"NÃO");
                listaParametros.add(gerarStringProcessos(turma.getProcessos()));
                listaParametros.add(gerarStringParticipantesOrganizadores(turma.getParticipantes()));
                listaParametros.add(gerarStringParticipantes(turma.getParticipantes()));
                listaParametros.add(gerarStringPeriodos(turma.getPeriodos()));
                listaParametros.add(gerarStringFrequencias(turma.getFrequencias()));
               
                return listaParametros;
        }
       
        private String gerarStringFrequencias(Set<Frequencia> frequencias) {
                StringBuilder mensagemFrequencias = new StringBuilder();
                for (Frequencia frequencia : frequencias){
                        mensagemFrequencias.append(MessageFormat.format("Data e Hora: ''{0}'', Validado: ''{1}'', Ativo: ''{2}''",
                                        converterDateParaString(frequencia.getData(), FORMAT_DATE_DD_MM_YYYY_HH_MM_SS),
                                        frequencia.getIndicadorValidado()?"SIM":"NÃO",
                                        frequencia.getIndicadorAtivo()?"SIM":"NÃO"))
                        .append(PONTO_VIRGULA)
                        .append(ESPACO);
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemFrequencias.toString());
        }

        private String gerarStringPeriodos(Set<TurmaPeriodo> periodos) {
                StringBuilder mensagemPeriodos = new StringBuilder();
                for (TurmaPeriodo periodo : periodos){
                        mensagemPeriodos.append(MessageFormat.format("Data e Hora Inicial: ''{0}'', Data e Hora Final: ''{1}''",
                                        converterDateParaString(periodo.getDataInicial(), FORMAT_DATE_DD_MM_YYYY_HH_MM_SS),
                                        converterDateParaString(periodo.getDataFinal(), FORMAT_DATE_DD_MM_YYYY_HH_MM_SS)))
                        .append(PONTO_VIRGULA)
                        .append(ESPACO);
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemPeriodos.toString());
        }

        private String gerarStringRepresentantes(Set<PessoaFisicaView> representantes) {
                StringBuilder mensagemRepresentantes = new StringBuilder();
                for (PessoaFisicaView representante : representantes){
                        mensagemRepresentantes.append(MessageFormat.format("Nome: ''{0}''",
                                        VerificadorUtil.naoEstaNuloOuVazio(representante)?representante.getNomePessoa():""))
                        .append(PONTO_VIRGULA)
                        .append(ESPACO);
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemRepresentantes.toString());
        }
       
        private String gerarStringProcessos(Set<TurmaProcesso> processos) {
                StringBuilder mensagemProcessos = new StringBuilder();
                for (TurmaProcesso processo : processos){
                        mensagemProcessos.append(MessageFormat.format("Órgão: ''{0}'', Número do Processo: ''{1}'', Ano: ''{2}'', "
                                        + "Despesas: [{3}]",
                                                        VerificadorUtil.naoEstaNuloOuVazio(processo.getOrgao())?String.valueOf(processo.getOrgao().getCodigo()):"",
                                                        VerificadorUtil.naoEstaNuloOuVazio(processo.getNumeroProcesso())?String.valueOf(processo.getNumeroProcesso()):"",
                                                        VerificadorUtil.naoEstaNuloOuVazio(processo.getAno())?String.valueOf(processo.getAno()):"",
                                                        gerarStringProcessosElementosDespesa(processo.getDespesasTurma().getElementosDespesa())))
                                        .append(PONTO_VIRGULA)
                                        .append(ESPACO);
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemProcessos.toString());
        }
       
        private String gerarStringProcessosElementosDespesa(List<ProcessoOrcamentoView> elementosDespesa) {
                StringBuilder mensagemElementosDespesa = new StringBuilder();
                for (ProcessoOrcamentoView elemento : elementosDespesa){
                        mensagemElementosDespesa.append(MessageFormat.format("Elemento de Despesa: ''{0}'', Fonte de Recurso: ''{1}'', Valor Orçado: ''{2}''",
                                                        VerificadorUtil.naoEstaNuloOuVazio(elemento.getElementoDespesa())?elemento.getElementoDespesa():"",
                                                        VerificadorUtil.naoEstaNuloOuVazio(elemento.getFonteRecurso())?elemento.getFonteRecurso():"",
                                                        VerificadorUtil.naoEstaNuloOuVazio(elemento.getValorOrcado())?String.valueOf(elemento.getValorOrcado()):""))
                                        .append(PONTO_VIRGULA)
                                        .append(ESPACO);
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemElementosDespesa.toString());
        }

        private String gerarStringParticipantesOrganizadores(Set<TurmaParticipante> participantesOrganizadores) {
                StringBuilder mensagemParticipantesOrganizadores = new StringBuilder();
                for (TurmaParticipante participante : participantesOrganizadores){
                        if (participante.getPerfil().getIndicadorOrganizador()) {
                                mensagemParticipantesOrganizadores.append(MessageFormat.format("Nome: ''{0}'', CPF: ''{1}'', Perfil: ''{2}'', Indicador de Servidor: ''{3}'', "
                                                + "Indicador de Remuneração: ''{4}'', Carga Horária Específica: ''{5}''",
                                                VerificadorUtil.naoEstaNuloOuVazio(participante.getPessoa())?participante.getPessoa().getNomePessoa():"",
                                                recuperarCpfPessoa(participante.getPessoa().getDocumentos()),
                                                participante.getPerfil().getDescricao(),
                                                ConversorDeTipo.formatarBooleanParaString(participante.getIndicadorServidor(), "SIM", "NÃO"),
                                                ConversorDeTipo.formatarBooleanParaString(participante.getIndicadorRemunerado(), "SIM", "NÃO"),
                                                VerificadorUtil.naoEstaNuloOuVazio(participante.getCargaHorariaEspecifica())?participante.getCargaHorariaEspecifica():""))
                                                .append(PONTO_VIRGULA)
                                                .append(ESPACO);
                               
                        }
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemParticipantesOrganizadores.toString());
        }
       
        private String gerarStringParticipantes(Set<TurmaParticipante> participantes) {
                StringBuilder mensagemParticipantesOrganizadores = new StringBuilder();
                for (TurmaParticipante participante : participantes){
                        if (participante.getPerfil().getIndicadorOrganizador() == false) {
                                mensagemParticipantesOrganizadores.append(MessageFormat.format("Nome: ''{0}'', CPF: ''{1}'', Perfil: ''{2}'', Indicador de Servidor: ''{3}'', "
                                                + "Indicador de Remuneração: ''{4}'', Carga Horária Específica: ''{5}''",
                                                VerificadorUtil.naoEstaNuloOuVazio(participante.getPessoa())?participante.getPessoa().getNomePessoa():"",
                                                                recuperarCpfPessoa(participante.getPessoa().getDocumentos()),
                                                                participante.getPerfil().getDescricao(),
                                                                ConversorDeTipo.formatarBooleanParaString(participante.getIndicadorServidor(), "SIM", "NÃO"),
                                                                ConversorDeTipo.formatarBooleanParaString(participante.getIndicadorRemunerado(), "SIM", "NÃO"),
                                                                VerificadorUtil.naoEstaNuloOuVazio(participante.getCargaHorariaEspecifica())?participante.getCargaHorariaEspecifica():""))
                                                                .append(PONTO_VIRGULA)
                                                                .append(ESPACO);
                               
                        }
                }
                return retirarUltimoPontoIhVirgulaComEspaco(mensagemParticipantesOrganizadores.toString());
        }

        private String recuperarCpfPessoa(Set<PessoaDocumentoView> documentos) {
                for (PessoaDocumentoView documento : documentos) {
                        if (documento.getSiglaTipoDocumento().equals("CPF")) {
                                return documento.getNumero();
                        }
                }
                return null;
        }
       
}