Subversion Repositories Integrator Subversion

Rev

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

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

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.rhd.model.Cronograma;
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 FormatadorCronograma extends AbstractFormatadorDeMensagem<Cronograma> {

        private static final String PADRAO_CRONOGRAMA_ETAPA = "Ano: ''{0}'', Lista de Etapas: ''{1}''";
       
        private FormatadorDeMensagem<Object> formatadorDeMensagem;
       
        public FormatadorCronograma() {
                formatadorDeMensagem = new FormatadorDeMensagemAuxiliarImpl();
        }
       
        @Override
        protected String obterPadrao() {
                return PADRAO_CRONOGRAMA_ETAPA;
        }

        @Override
        protected List<Object> gerarParametros(Cronograma cronograma) {
                List<Object> listaParametros = new ArrayList<Object>();
                listaParametros.add(parseString(cronograma.getNumeroAno()));
                listaParametros.add(formatar(ordenarListaObjetos(cronograma.getCronogramaEtapas())));
                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 static String parseString(Long valor) {
                return valor != null? valor.toString() : null;
        }
       
}