Commit 6e272f6e6a8c082fa047f206abcf40c1c38c78d9

Authored by andre.guimaraes
1 parent deaa9f25

Valida interessados na inclusão de documento

- validação dos interessados na inclusão de um documento
- refatoração do metodo de inclusão de documento
- criação de helpers
- organização de pacotes

OTRS - 2018091720002004
src/main/java/br/gov/ans/integracao/sei/helper/ContatoHelper.java 0 → 100644
@@ -0,0 +1,158 @@ @@ -0,0 +1,158 @@
  1 +package br.gov.ans.integracao.sei.helper;
  2 +
  3 +import static br.gov.ans.integracao.sei.utils.Constantes.DATE_FORMATTER;
  4 +import static br.gov.ans.integracao.sei.utils.Constantes.NAO;
  5 +import static br.gov.ans.integracao.sei.utils.Constantes.SIM;
  6 +import static br.gov.ans.integracao.sei.utils.Util.getSOuN;
  7 +
  8 +import java.rmi.RemoteException;
  9 +import java.util.List;
  10 +
  11 +import javax.inject.Inject;
  12 +
  13 +import org.apache.commons.lang3.StringUtils;
  14 +
  15 +import br.gov.ans.integracao.sei.client.Contato;
  16 +import br.gov.ans.integracao.sei.dao.CidadeDAO;
  17 +import br.gov.ans.integracao.sei.dao.ContatoDAO;
  18 +import br.gov.ans.integracao.sei.exceptions.BusinessException;
  19 +import br.gov.ans.integracao.sei.modelo.Cidade;
  20 +import br.gov.ans.integracao.sei.modelo.Endereco;
  21 +import br.gov.ans.integracao.sei.modelo.Pessoa;
  22 +import br.gov.ans.integracao.sei.modelo.PessoaFisica;
  23 +import br.gov.ans.integracao.sei.modelo.PessoaJuridica;
  24 +import br.gov.ans.integracao.sei.modelo.enums.TipoPessoa;
  25 +
  26 +public class ContatoHelper {
  27 +
  28 + @Inject
  29 + private ContatoDAO contatoDAO;
  30 +
  31 + @Inject
  32 + private CidadeDAO cidadeDAO;
  33 +
  34 + public Contato buildContato(Pessoa pessoa) throws RemoteException, BusinessException, Exception{
  35 + if(pessoa instanceof PessoaFisica){
  36 + return buildContatoPessoaFisica((PessoaFisica) pessoa);
  37 + }else if(pessoa instanceof PessoaJuridica){
  38 + return buildContatoPessoaJuridica((PessoaJuridica) pessoa);
  39 + }
  40 +
  41 + throw new BusinessException("Tipo inválido");
  42 + }
  43 +
  44 + private Contato buildContatoPessoaFisica(PessoaFisica pessoa) throws RemoteException, BusinessException, Exception{
  45 + Contato contato = buildContatoPessoa(pessoa);
  46 +
  47 + contato.setStaNatureza(TipoPessoa.FISICA.getCodigo());
  48 +
  49 + if(pessoa.getSexo() != null){
  50 + contato.setStaGenero(pessoa.getSexo().getCodigo());
  51 + }
  52 +
  53 + contato.setCpf(pessoa.getCpf());
  54 + contato.setRg(pessoa.getRg());
  55 + contato.setOrgaoExpedidor(pessoa.getOrgaoEmissor());
  56 +
  57 + if(pessoa.getDataNascimento() != null){
  58 + contato.setDataNascimento(DATE_FORMATTER.format(pessoa.getDataNascimento()));
  59 + }
  60 +
  61 + contato.setMatricula(pessoa.getMatricula());
  62 + contato.setMatriculaOab(pessoa.getMatriculaOab());
  63 +
  64 + return contato;
  65 + }
  66 +
  67 + private Contato buildContatoPessoaJuridica(PessoaJuridica pessoa) throws RemoteException, BusinessException, Exception{
  68 + Contato contato = buildContatoPessoa(pessoa);
  69 +
  70 + contato.setStaNatureza(TipoPessoa.JURIDICA.getCodigo());
  71 + contato.setCnpj(pessoa.getCnpj());
  72 + contato.setSitioInternet(pessoa.getWebsite());
  73 +
  74 + return contato;
  75 + }
  76 +
  77 + private Contato buildContatoPessoa(Pessoa pessoa) throws RemoteException, BusinessException, Exception{
  78 + Contato contato = new Contato();
  79 +
  80 + contato.setSigla(pessoa.getSigla());
  81 + contato.setNome(pessoa.getNome());
  82 + contato.setTelefoneFixo(pessoa.getTelefone());
  83 + contato.setTelefoneCelular(pessoa.getCelular());
  84 + contato.setEmail(pessoa.getEmail());
  85 + contato.setObservacao(pessoa.getObservacao());
  86 + contato.setSinAtivo(getSOuN(pessoa.isAtivo()));
  87 +
  88 + preencherDadosAssociado(pessoa, contato);
  89 +
  90 + if(pessoa.getEndereco() != null){
  91 + preencherEndereco(pessoa.getEndereco(), contato);
  92 + }
  93 +
  94 + return contato;
  95 + }
  96 +
  97 + private void preencherEndereco(Endereco endereco, Contato contato) throws RemoteException, BusinessException, Exception{
  98 + contato.setEndereco(concatenarNumero(endereco.getLogradouro(), endereco.getNumero()));
  99 + contato.setComplemento(endereco.getComplemento());
  100 + contato.setBairro(endereco.getBairro());
  101 + contato.setCep(endereco.getCEP());
  102 +
  103 + if(StringUtils.isNotBlank(endereco.getCidade())){
  104 + Cidade cidade = getCidade(endereco.getCidade());
  105 +
  106 + contato.setIdCidade(cidade.getId().toString());
  107 + contato.setIdEstado(cidade.getEstado().getId().toString());
  108 + contato.setIdPais(cidade.getEstado().getIdPais());
  109 + }
  110 + }
  111 +
  112 + private void preencherDadosAssociado(Pessoa pessoa, Contato contato) throws RemoteException, BusinessException, Exception{
  113 + if(pessoa.getAssociado() == null){
  114 + contato.setSinEnderecoAssociado(NAO);
  115 + }else{
  116 + contato.setSinEnderecoAssociado(SIM);
  117 +
  118 + contato.setIdContatoAssociado(getIdContato(pessoa.getAssociado().getSigla())+"");
  119 + contato.setNomeContatoAssociado(pessoa.getAssociado().getNome());
  120 +
  121 + if(pessoa.getAssociado().getEndereco() != null){
  122 + preencherEndereco(pessoa.getAssociado().getEndereco(), contato);
  123 + }
  124 + }
  125 + }
  126 +
  127 + public br.gov.ans.integracao.sei.modelo.Contato getContatoNaoTemporarioMaisAntigo(String sigla){
  128 + List<br.gov.ans.integracao.sei.modelo.Contato> contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla);
  129 +
  130 + return contatosNaoTemporariosPelaSigla.get(0);
  131 + }
  132 +
  133 + public void preencherIdContato(Contato contato, String sigla){
  134 + contato.setIdContato(getIdContato(sigla)+"");
  135 + }
  136 +
  137 + public Boolean isContatoCadastradoComoNaoTemporario(String sigla){
  138 + List<br.gov.ans.integracao.sei.modelo.Contato> contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla);
  139 +
  140 + return !contatosNaoTemporariosPelaSigla.isEmpty();
  141 + }
  142 +
  143 + private Integer getIdContato(String sigla){
  144 + return contatoDAO.getContatoPelaSigla(sigla).getId();
  145 + }
  146 +
  147 + private Cidade getCidade(String ibge){
  148 + return cidadeDAO.getCidadePeloIbge(ibge);
  149 + }
  150 +
  151 + private String concatenarNumero(String logradouro, String numero){
  152 + if(StringUtils.isNotBlank(numero)){
  153 + return logradouro.trim() + ", " + numero;
  154 + }
  155 +
  156 + return logradouro;
  157 + }
  158 +}
src/main/java/br/gov/ans/integracao/sei/helper/DocumentoHelper.java 0 → 100644
@@ -0,0 +1,140 @@ @@ -0,0 +1,140 @@
  1 +package br.gov.ans.integracao.sei.helper;
  2 +
  3 +import static br.gov.ans.integracao.sei.utils.Util.decodeConteudoMustache;
  4 +import static br.gov.ans.integracao.sei.utils.Util.encodeBase64;
  5 +
  6 +import java.io.StringWriter;
  7 +import java.rmi.RemoteException;
  8 +import java.util.Map;
  9 +
  10 +import javax.inject.Inject;
  11 +
  12 +import org.apache.commons.lang3.ArrayUtils;
  13 +import org.apache.commons.lang3.StringUtils;
  14 +import org.codehaus.jackson.JsonParseException;
  15 +import org.hibernate.engine.transaction.jta.platform.internal.TransactionManagerBasedSynchronizationStrategy;
  16 +import org.jboss.logging.Logger;
  17 +
  18 +import com.github.mustachejava.Mustache;
  19 +
  20 +import br.gov.ans.integracao.sei.client.Documento;
  21 +import br.gov.ans.integracao.sei.exceptions.BusinessException;
  22 +import br.gov.ans.integracao.sei.utils.Constantes;
  23 +import br.gov.ans.utils.MessageUtils;
  24 +import br.gov.ans.utils.MustacheUtils;
  25 +
  26 +public class DocumentoHelper {
  27 +
  28 + @Inject
  29 + private MessageUtils messages;
  30 +
  31 + @Inject
  32 + private InteressadoHelper interessadoHelper;
  33 +
  34 + @Inject
  35 + private Logger logger;
  36 +
  37 + @Inject
  38 + private MustacheUtils mustacheUtils;
  39 +
  40 + public void validarDocumento(Documento documento, String template) throws BusinessException, RemoteException, Exception{
  41 + if(documento == null){
  42 + throw new BusinessException(messages.getMessage("erro.dados.documento.nao.informados"));
  43 + }
  44 +
  45 + validarNumeroProcesso(documento);
  46 + validarNomeArquivo(documento);
  47 + validarNumeroInformado(documento);
  48 + validarTamanhoConteudo(documento);
  49 + validarInteressados(documento);
  50 +
  51 + if(StringUtils.isNotEmpty(template)){
  52 + processarPreenchimentoTemplate(documento, template);
  53 + }
  54 + }
  55 +
  56 + private void processarPreenchimentoTemplate(Documento documento, String template) throws RemoteException, Exception{
  57 + validarInclusaoComTemplate(documento);
  58 +
  59 + transformarConteudoDocumentoInterno(documento, template);
  60 + }
  61 +
  62 + private void validarNumeroProcesso(Documento documento) throws BusinessException{
  63 + if(StringUtils.isBlank(documento.getIdProcedimento())){
  64 + throw new BusinessException(messages.getMessage("erro.documento.sem.processo"));
  65 + }
  66 + }
  67 +
  68 + private void validarNomeArquivo(Documento documento) throws BusinessException{
  69 + if(StringUtils.length(documento.getNomeArquivo()) > 200){
  70 + throw new BusinessException(messages.getMessage("erro.tamanho.nome.documento"));
  71 + }
  72 + }
  73 +
  74 + private void validarNumeroInformado(Documento documento) throws BusinessException{
  75 + if(StringUtils.length(documento.getNumero()) > 50){
  76 + throw new BusinessException(messages.getMessage("erro.tamanho.numero.informado"));
  77 + }
  78 + }
  79 +
  80 + private void validarInteressados(Documento documento) throws BusinessException{
  81 + if(isSemInteressados(documento)){
  82 + throw new BusinessException(messages.getMessage("erro.interessado.nao.informado"));
  83 + }else{
  84 + interessadoHelper.tratarInteressados(documento.getInteressados());
  85 + }
  86 + }
  87 +
  88 + private void validarInclusaoComTemplate(Documento documento) throws BusinessException{
  89 + if(documento.getTipo().equals(Constantes.DOCUMENTO_RECEBIDO)){
  90 + throw new BusinessException(messages.getMessage("erro.template.documento.recebido"));
  91 + }
  92 + }
  93 +
  94 + private void validarTamanhoConteudo(Documento documento) throws BusinessException{
  95 + if(documento.getConteudo() == null){
  96 + return;
  97 + }
  98 +
  99 + if(calcularBytes(documento.getConteudo().length()) > Constantes.TAMANHO_MAXIMO_DOCUMENTO){
  100 + throw new BusinessException(messages.getMessage("erro.tamanho.documento"));
  101 + }
  102 + }
  103 +
  104 + private boolean isSemInteressados(Documento documento){
  105 + return ArrayUtils.isEmpty(documento.getInteressados());
  106 + }
  107 +
  108 + private double calcularBytes(int sizeBase64){
  109 + return sizeBase64 * 3.0 / 4;
  110 + }
  111 +
  112 + private void transformarConteudoDocumentoInterno(Documento documento, String template) throws RemoteException, Exception{
  113 + StringWriter writer = new StringWriter();
  114 +
  115 + try{
  116 + Mustache mustache = mustacheUtils.compile(removeExtensaoLegado(template));
  117 +
  118 + Map<String, Object> model = decodeConteudoMustache(documento.getConteudo());
  119 +
  120 + mustache.execute(writer, model);
  121 + String html = writer.toString();
  122 +
  123 + documento.setConteudo(encodeBase64(html));
  124 + }catch(JsonParseException ex){
  125 + logger.debug(documento.getConteudo());
  126 + throw new BusinessException(messages.getMessage("erro.processar.conteudo.json"));
  127 + }finally{
  128 + writer.close();
  129 + }
  130 + }
  131 +
  132 + private String removeExtensaoLegado(String template){
  133 + if(template.contains(".mustache")){
  134 + return StringUtils.remove(template, ".mustache");
  135 + }
  136 +
  137 + return template;
  138 + }
  139 +
  140 +}
src/main/java/br/gov/ans/integracao/sei/helper/InteressadoHelper.java 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +package br.gov.ans.integracao.sei.helper;
  2 +
  3 +import javax.inject.Inject;
  4 +
  5 +import br.gov.ans.integracao.sei.client.Interessado;
  6 +import br.gov.ans.integracao.sei.modelo.Contato;
  7 +
  8 +public class InteressadoHelper {
  9 + @Inject
  10 + private ContatoHelper contatoHelper;
  11 +
  12 + public void tratarInteressados(Interessado[] interessados){
  13 + for(int i=0; i < interessados.length; i++){
  14 + interessados[i] = tratarInteressado(interessados[i]);
  15 + }
  16 + }
  17 +
  18 + public Interessado tratarInteressado(Interessado interessado){
  19 + if(isInteressadoCadastradoComoNaoTemporario(interessado.getSigla())){
  20 + return getRegistroInteressadoNaoTemporarioMaisAntigo(interessado.getSigla());
  21 + }
  22 +
  23 + return interessado;
  24 + }
  25 +
  26 + private boolean isInteressadoCadastradoComoNaoTemporario(String sigla){
  27 + return contatoHelper.isContatoCadastradoComoNaoTemporario(sigla);
  28 + }
  29 +
  30 + public Interessado getRegistroInteressadoNaoTemporarioMaisAntigo(String sigla){
  31 + Contato contatoNaoTemporarioMaisAntigo = contatoHelper.getContatoNaoTemporarioMaisAntigo(sigla);
  32 +
  33 + return convertContatoParaInteressado(contatoNaoTemporarioMaisAntigo);
  34 + }
  35 +
  36 + private Interessado convertContatoParaInteressado(Contato contato){
  37 + Interessado interessado = new Interessado();
  38 +
  39 + interessado.setNome(contato.getNome());
  40 + interessado.setSigla(contato.getSigla());
  41 +
  42 + return interessado;
  43 + }
  44 +
  45 +}
src/main/java/br/gov/ans/integracao/sei/helper/PessoaHelper.java 0 → 100644
@@ -0,0 +1,199 @@ @@ -0,0 +1,199 @@
  1 +package br.gov.ans.integracao.sei.helper;
  2 +
  3 +import static br.gov.ans.integracao.sei.utils.Constantes.DATE_FORMATTER;
  4 +
  5 +import java.lang.reflect.Field;
  6 +import java.text.ParseException;
  7 +import java.util.ArrayList;
  8 +import java.util.List;
  9 +
  10 +import javax.inject.Inject;
  11 +
  12 +import org.apache.commons.lang3.ArrayUtils;
  13 +import org.apache.commons.lang3.StringUtils;
  14 +import org.apache.commons.lang3.reflect.FieldUtils;
  15 +import org.jboss.logging.Logger;
  16 +
  17 +import br.gov.ans.integracao.sei.client.Contato;
  18 +import br.gov.ans.integracao.sei.dao.CidadeDAO;
  19 +import br.gov.ans.integracao.sei.dao.ContatoDAO;
  20 +import br.gov.ans.integracao.sei.exceptions.BusinessException;
  21 +import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
  22 +import br.gov.ans.integracao.sei.modelo.Endereco;
  23 +import br.gov.ans.integracao.sei.modelo.Pessoa;
  24 +import br.gov.ans.integracao.sei.modelo.PessoaFisica;
  25 +import br.gov.ans.integracao.sei.modelo.PessoaJuridica;
  26 +import br.gov.ans.integracao.sei.modelo.enums.Sexo;
  27 +import br.gov.ans.integracao.sei.modelo.enums.TipoPessoa;
  28 +import br.gov.ans.utils.MessageUtils;
  29 +
  30 +public class PessoaHelper {
  31 +
  32 + @Inject
  33 + private ContatoDAO contatoDAO;
  34 +
  35 + @Inject
  36 + private CidadeDAO cidadeDAO;
  37 +
  38 + @Inject
  39 + private Logger logger;
  40 +
  41 + @Inject
  42 + private MessageUtils messages;
  43 +
  44 + public List<Pessoa> buildPessoa(Contato[] contatos) throws ParseException, BusinessException, IllegalAccessException, ResourceNotFoundException{
  45 + if(ArrayUtils.isNotEmpty(contatos)){
  46 + ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
  47 +
  48 + for(Contato c : contatos){
  49 + pessoas.add(buildPessoa(c));
  50 + }
  51 +
  52 + return pessoas;
  53 + }
  54 +
  55 + throw new ResourceNotFoundException(messages.getMessage("erro.nenhum.contato.encontrado"));
  56 + }
  57 +
  58 + public Pessoa buildPessoa(Contato contato) throws ParseException, BusinessException, IllegalAccessException{
  59 + TipoPessoa tipo = TipoPessoa.getByCodigo(contato.getStaNatureza());
  60 +
  61 + if(tipo.equals(TipoPessoa.FISICA)){
  62 + return buildPessoaFisica(contato);
  63 + }
  64 +
  65 + if(tipo.equals(TipoPessoa.JURIDICA)){
  66 + return buildPessoaJuridica(contato);
  67 + }
  68 +
  69 + throw new BusinessException(messages.getMessage("erro.tipo.pessoa.invalido"));
  70 + }
  71 +
  72 + public PessoaFisica buildPessoaFisica(Contato contato) throws ParseException, IllegalAccessException{
  73 + PessoaFisica pessoa = new PessoaFisica();
  74 +
  75 + pessoa.setSigla(contato.getSigla());
  76 + pessoa.setNome(contato.getNome());
  77 +
  78 + if(StringUtils.isNotBlank(contato.getStaGenero())){
  79 + pessoa.setSexo(Sexo.getByCodigo(contato.getStaGenero()));
  80 + }
  81 +
  82 + if(StringUtils.isNotBlank(contato.getDataNascimento())){
  83 + pessoa.setDataNascimento(DATE_FORMATTER.parse(contato.getDataNascimento()));
  84 + }
  85 +
  86 + pessoa.setCpf(contato.getCpf());
  87 + pessoa.setRg(contato.getRg());
  88 + pessoa.setOrgaoEmissor(contato.getOrgaoExpedidor());
  89 + pessoa.setMatricula(contato.getMatricula());
  90 + pessoa.setMatriculaOab(contato.getMatriculaOab());
  91 + pessoa.setCelular(contato.getTelefoneCelular());
  92 + pessoa.setTelefone(contato.getTelefoneFixo());
  93 + pessoa.setEmail(contato.getEmail());
  94 + pessoa.setObservacao(contato.getObservacao());
  95 + pessoa.setAtivo("S".equals(contato.getSinAtivo()));
  96 +
  97 + pessoa.setEndereco(buildEndereco(contato));
  98 +
  99 + if("S".equals(contato.getSinEnderecoAssociado())){
  100 + pessoa.setAssociado(buildAssociado(contato));
  101 + }
  102 +
  103 + return pessoa;
  104 + }
  105 +
  106 + public PessoaJuridica buildPessoaJuridica(Contato contato) throws ParseException, IllegalAccessException{
  107 + PessoaJuridica pessoa = new PessoaJuridica();
  108 +
  109 + pessoa.setSigla(contato.getSigla());
  110 + pessoa.setNome(contato.getNome());
  111 + pessoa.setCnpj(contato.getCnpj());
  112 + pessoa.setCelular(contato.getTelefoneCelular());
  113 + pessoa.setTelefone(contato.getTelefoneFixo());
  114 + pessoa.setEmail(contato.getEmail());
  115 + pessoa.setWebsite(contato.getSitioInternet());
  116 + pessoa.setObservacao(contato.getObservacao());
  117 + pessoa.setAtivo("S".equals(contato.getSinAtivo()));
  118 +
  119 + pessoa.setEndereco(buildEndereco(contato));
  120 +
  121 + if("S".equals(contato.getSinEnderecoAssociado())){
  122 + pessoa.setAssociado(buildAssociado(contato));
  123 + }
  124 +
  125 + return pessoa;
  126 + }
  127 +
  128 + private Endereco buildEndereco(Contato contato){
  129 + Endereco endereco = new Endereco();
  130 +
  131 + endereco.setLogradouro(contato.getEndereco());
  132 + endereco.setComplemento(contato.getComplemento());
  133 + endereco.setBairro(contato.getBairro());
  134 + endereco.setCEP(contato.getCep());
  135 +
  136 + if(StringUtils.isNotBlank(contato.getIdCidade())){
  137 + endereco.setCidade(getCodigoIbge(contato.getIdCidade()));
  138 + }
  139 + endereco.setUf(contato.getSiglaEstado());
  140 + endereco.setPais(contato.getNomePais());
  141 +
  142 + return endereco;
  143 + }
  144 +
  145 + private Endereco buildEnderecoAssociado(Contato contato){
  146 + Endereco endereco = new Endereco();
  147 +
  148 + endereco.setLogradouro(contato.getEndereco());
  149 + endereco.setComplemento(contato.getComplemento());
  150 + endereco.setBairro(contato.getBairro());
  151 + endereco.setCEP(contato.getCep());
  152 +
  153 + if(StringUtils.isNotBlank(contato.getIdCidade())){
  154 + endereco.setCidade(getCodigoIbge(contato.getIdCidade()));
  155 + }
  156 + endereco.setUf(contato.getSiglaEstado());
  157 + endereco.setPais(contato.getNomePais());
  158 +
  159 + return endereco;
  160 + }
  161 +
  162 + private PessoaJuridica buildAssociado(Contato contato){
  163 + PessoaJuridica pessoa = new PessoaJuridica();
  164 +
  165 + pessoa.setSigla(getSiglaContato(contato.getIdContatoAssociado()));
  166 + pessoa.setNome(contato.getNomeContatoAssociado());
  167 + pessoa.setCnpj(contato.getCnpjAssociado());
  168 +
  169 + pessoa.setEndereco(buildEnderecoAssociado(contato));
  170 +
  171 + return pessoa;
  172 + }
  173 +
  174 + private String getSiglaContato(String id){
  175 + return contatoDAO.getContatoPeloId(id).getSigla();
  176 + }
  177 +
  178 + public boolean hasAssociado(Contato contato) throws IllegalAccessException{
  179 + List<Field> fieldsList = FieldUtils.getAllFieldsList(Contato.class);
  180 +
  181 + for(Field f : fieldsList){
  182 + if(f.getName().contains("Associado")){
  183 + String field = (String) FieldUtils.readDeclaredField(contato, f.getName(), true);
  184 +
  185 + logger.warn(field);
  186 +
  187 + if(StringUtils.isNotBlank(field)){
  188 + return true;
  189 + }
  190 + }
  191 + }
  192 +
  193 + return false;
  194 + }
  195 +
  196 + public String getCodigoIbge(String idCidade){
  197 + return cidadeDAO.getCidadePeloId(idCidade).getCodigoIbge();
  198 + }
  199 +}
src/main/java/br/gov/ans/integracao/sei/helper/ProcessoHelper.java 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +package br.gov.ans.integracao.sei.helper;
  2 +
  3 +import javax.inject.Inject;
  4 +
  5 +import org.apache.commons.lang3.ArrayUtils;
  6 +
  7 +import br.gov.ans.integracao.sei.exceptions.BusinessException;
  8 +import br.gov.ans.integracao.sei.modelo.NovoProcesso;
  9 +import br.gov.ans.utils.MessageUtils;
  10 +
  11 +public class ProcessoHelper {
  12 +
  13 + @Inject
  14 + private MessageUtils messages;
  15 +
  16 + @Inject
  17 + private InteressadoHelper interessadoHelper;
  18 +
  19 + public void validarNovoProcesso(NovoProcesso novoProcesso) throws BusinessException{
  20 + if(novoProcesso == null){
  21 + throw new BusinessException(messages.getMessage("erro.novo.processo.vazio"));
  22 + }
  23 +
  24 + if(novoProcesso.getDadosProcesso() == null){
  25 + throw new BusinessException(messages.getMessage("erro.dados.processo.nao.informados"));
  26 + }
  27 +
  28 + if(isSemInteressados(novoProcesso)){
  29 + throw new BusinessException(messages.getMessage("erro.interessado.nao.informado"));
  30 + }else{
  31 + interessadoHelper.tratarInteressados(novoProcesso.getDadosProcesso().getInteressados());
  32 + }
  33 + }
  34 +
  35 + public boolean isSemInteressados(NovoProcesso processo){
  36 + return ArrayUtils.isEmpty(processo.getDadosProcesso().getInteressados());
  37 + }
  38 +}
src/main/java/br/gov/ans/integracao/sei/rest/ContatoResource.java
@@ -33,14 +33,14 @@ import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; @@ -33,14 +33,14 @@ import br.gov.ans.integracao.sei.client.SeiPortTypeProxy;
33 import br.gov.ans.integracao.sei.exceptions.BusinessException; 33 import br.gov.ans.integracao.sei.exceptions.BusinessException;
34 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; 34 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
35 import br.gov.ans.integracao.sei.exceptions.WrappedException; 35 import br.gov.ans.integracao.sei.exceptions.WrappedException;
  36 +import br.gov.ans.integracao.sei.helper.ContatoHelper;
  37 +import br.gov.ans.integracao.sei.helper.PessoaHelper;
36 import br.gov.ans.integracao.sei.modelo.Operacao; 38 import br.gov.ans.integracao.sei.modelo.Operacao;
37 import br.gov.ans.integracao.sei.modelo.Pessoa; 39 import br.gov.ans.integracao.sei.modelo.Pessoa;
38 import br.gov.ans.integracao.sei.modelo.enums.Acao; 40 import br.gov.ans.integracao.sei.modelo.enums.Acao;
39 import br.gov.ans.integracao.sei.modelo.enums.TipoContato; 41 import br.gov.ans.integracao.sei.modelo.enums.TipoContato;
40 import br.gov.ans.integracao.sei.utils.Constantes; 42 import br.gov.ans.integracao.sei.utils.Constantes;
41 -import br.gov.ans.integracao.sei.utils.ContatoHelper;  
42 import br.gov.ans.integracao.sei.utils.MessagesKeys; 43 import br.gov.ans.integracao.sei.utils.MessagesKeys;
43 -import br.gov.ans.integracao.sei.utils.PessoaHelper;  
44 import br.gov.ans.utils.MessageUtils; 44 import br.gov.ans.utils.MessageUtils;
45 45
46 @Path("/") 46 @Path("/")
src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java
@@ -56,6 +56,7 @@ import br.gov.ans.integracao.sei.dao.InclusaoDocumentoDAO; @@ -56,6 +56,7 @@ import br.gov.ans.integracao.sei.dao.InclusaoDocumentoDAO;
56 import br.gov.ans.integracao.sei.exceptions.BusinessException; 56 import br.gov.ans.integracao.sei.exceptions.BusinessException;
57 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; 57 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
58 import br.gov.ans.integracao.sei.exceptions.WrappedException; 58 import br.gov.ans.integracao.sei.exceptions.WrappedException;
  59 +import br.gov.ans.integracao.sei.helper.DocumentoHelper;
59 import br.gov.ans.integracao.sei.modelo.CancelamentoDocumento; 60 import br.gov.ans.integracao.sei.modelo.CancelamentoDocumento;
60 import br.gov.ans.integracao.sei.modelo.DocumentoResumido; 61 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
61 import br.gov.ans.integracao.sei.modelo.ExclusaoDocumento; 62 import br.gov.ans.integracao.sei.modelo.ExclusaoDocumento;
@@ -90,12 +91,12 @@ public class DocumentoResource { @@ -90,12 +91,12 @@ public class DocumentoResource {
90 @Inject 91 @Inject
91 private Logger logger; 92 private Logger logger;
92 93
93 - @Inject  
94 - private MustacheUtils mustacheUtils;  
95 -  
96 @Inject 94 @Inject
97 private MessageUtils messages; 95 private MessageUtils messages;
98 96
  97 + @Inject
  98 + private DocumentoHelper documentoHelper;
  99 +
99 @Context 100 @Context
100 private SecurityContext securityContext; 101 private SecurityContext securityContext;
101 102
@@ -316,18 +317,11 @@ public class DocumentoResource { @@ -316,18 +317,11 @@ public class DocumentoResource {
316 public Response incluirDocumento(@PathParam("unidade") String unidade, @QueryParam("template") String template, Documento documento) throws RemoteException, Exception{ 317 public Response incluirDocumento(@PathParam("unidade") String unidade, @QueryParam("template") String template, Documento documento) throws RemoteException, Exception{
317 RetornoInclusaoDocumento retorno = null; 318 RetornoInclusaoDocumento retorno = null;
318 319
319 - validarTamanhoConteudo(documento);  
320 - 320 + documentoHelper.validarDocumento(documento, template);
  321 +
321 InclusaoDocumento inclusaoDocumento = registrarInclusao(documento, unidade); 322 InclusaoDocumento inclusaoDocumento = registrarInclusao(documento, unidade);
322 323
323 try{ 324 try{
324 - if(StringUtils.isNotEmpty(template)){  
325 - validarInclusaoComTemplate(documento);  
326 - String conteudoHTML = transformarConteudoDocumentoInterno(documento.getConteudo(), template);  
327 -  
328 - documento.setConteudo(conteudoHTML);  
329 - }  
330 -  
331 logger.debug(messages.getMessage(MessagesKeys.DEBUG_NOVO_DOCUMENTO_ENVIADO)); 325 logger.debug(messages.getMessage(MessagesKeys.DEBUG_NOVO_DOCUMENTO_ENVIADO));
332 326
333 retorno = seiNativeService.incluirDocumento(Constantes.SEI_BROKER, Operacao.INCLUIR_DOCUMENTO, unidadeResource.consultarCodigo(unidade), documento); 327 retorno = seiNativeService.incluirDocumento(Constantes.SEI_BROKER, Operacao.INCLUIR_DOCUMENTO, unidadeResource.consultarCodigo(unidade), documento);
@@ -625,8 +619,6 @@ public class DocumentoResource { @@ -625,8 +619,6 @@ public class DocumentoResource {
625 public InclusaoDocumento registrarInclusao(Documento documento, String unidade) throws Exception{ 619 public InclusaoDocumento registrarInclusao(Documento documento, String unidade) throws Exception{
626 InclusaoDocumento registro = new InclusaoDocumento(documento, unidade, getSistemaResponsavel(), calcularHashDocumento(documento.getConteudo())); 620 InclusaoDocumento registro = new InclusaoDocumento(documento, unidade, getSistemaResponsavel(), calcularHashDocumento(documento.getConteudo()));
627 621
628 - validarInclusaoDocumento(registro);  
629 -  
630 try{ 622 try{
631 userTransaction.begin(); 623 userTransaction.begin();
632 624
@@ -704,47 +696,7 @@ public class DocumentoResource { @@ -704,47 +696,7 @@ public class DocumentoResource {
704 contentType = StringUtils.remove(contentType, ";"); 696 contentType = StringUtils.remove(contentType, ";");
705 return !contentType.toLowerCase().equals("application/pdf"); 697 return !contentType.toLowerCase().equals("application/pdf");
706 } 698 }
707 -  
708 - public void validarInclusaoComTemplate(Documento documento) throws BusinessException{  
709 - if(documento.getTipo().equals(Constantes.DOCUMENTO_RECEBIDO)){  
710 - throw new BusinessException(messages.getMessage("erro.template.documento.recebido"));  
711 - }  
712 - }  
713 -  
714 - public String transformarConteudoDocumentoInterno(String conteudo, String template) throws RemoteException, Exception{  
715 - StringWriter writer = new StringWriter();  
716 699
717 - try{  
718 - Mustache mustache = mustacheUtils.compile(removeExtensaoLegado(template));  
719 -  
720 - Map<String, Object> model = decodeConteudoMustache(conteudo);  
721 -  
722 - mustache.execute(writer, model);  
723 - String html = writer.toString();  
724 -  
725 - return encodeBase64(html);  
726 - }catch(JsonParseException ex){  
727 - logger.debug(conteudo);  
728 - throw new BusinessException(messages.getMessage("erro.processar.conteudo.json"));  
729 - }finally{  
730 - writer.close();  
731 - }  
732 - }  
733 -  
734 - public void validarInclusaoDocumento(InclusaoDocumento inclusao) throws BusinessException{  
735 - if(StringUtils.isBlank(inclusao.getProcesso())){  
736 - throw new BusinessException(messages.getMessage("erro.documento.sem.processo"));  
737 - }  
738 -  
739 - if(StringUtils.length(inclusao.getNome()) > 200){  
740 - throw new BusinessException(messages.getMessage("erro.tamanho.nome.documento"));  
741 - }  
742 -  
743 - if(StringUtils.length(inclusao.getNumeroInformado()) > 50){  
744 - throw new BusinessException(messages.getMessage("erro.tamanho.numero.informado"));  
745 - }  
746 - }  
747 -  
748 public URI getResourcePath(String resourceId){ 700 public URI getResourcePath(String resourceId){
749 UriBuilder builder = uriInfo.getAbsolutePathBuilder(); 701 UriBuilder builder = uriInfo.getAbsolutePathBuilder();
750 702
@@ -753,14 +705,6 @@ public class DocumentoResource { @@ -753,14 +705,6 @@ public class DocumentoResource {
753 return builder.build(); 705 return builder.build();
754 } 706 }
755 707
756 - public String removeExtensaoLegado(String template){  
757 - if(template.contains(".mustache")){  
758 - return StringUtils.remove(template, ".mustache");  
759 - }  
760 -  
761 - return template;  
762 - }  
763 -  
764 public void registrarExclusao(String numero, String unidade, String motivo) throws BusinessException, NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException{ 708 public void registrarExclusao(String numero, String unidade, String motivo) throws BusinessException, NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException{
765 try{ 709 try{
766 userTransaction.begin(); 710 userTransaction.begin();
@@ -781,18 +725,5 @@ public class DocumentoResource { @@ -781,18 +725,5 @@ public class DocumentoResource {
781 throw new BusinessException(messages.getMessage("erro.tamanho.motivo.cancelamento")); 725 throw new BusinessException(messages.getMessage("erro.tamanho.motivo.cancelamento"));
782 } 726 }
783 } 727 }
784 -  
785 - public void validarTamanhoConteudo(Documento documento) throws BusinessException{  
786 - if(documento == null || documento.getConteudo() == null){  
787 - return;  
788 - }  
789 -  
790 - if(calcularBytes(documento.getConteudo().length()) > Constantes.TAMANHO_MAXIMO_DOCUMENTO){  
791 - throw new BusinessException(messages.getMessage("erro.tamanho.documento"));  
792 - }  
793 - }  
794 -  
795 - private double calcularBytes(int sizeBase64){  
796 - return sizeBase64 * 3.0 / 4;  
797 - } 728 +
798 } 729 }
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
@@ -50,6 +50,7 @@ import br.gov.ans.integracao.sei.dao.SiparDAO; @@ -50,6 +50,7 @@ import br.gov.ans.integracao.sei.dao.SiparDAO;
50 import br.gov.ans.integracao.sei.dao.UnidadeDAO; 50 import br.gov.ans.integracao.sei.dao.UnidadeDAO;
51 import br.gov.ans.integracao.sei.exceptions.BusinessException; 51 import br.gov.ans.integracao.sei.exceptions.BusinessException;
52 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; 52 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
  53 +import br.gov.ans.integracao.sei.helper.ProcessoHelper;
53 import br.gov.ans.integracao.sei.modelo.DocumentoResumido; 54 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
54 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; 55 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
55 import br.gov.ans.integracao.sei.modelo.Motivo; 56 import br.gov.ans.integracao.sei.modelo.Motivo;
@@ -63,7 +64,6 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido; @@ -63,7 +64,6 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido;
63 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso; 64 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso;
64 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso; 65 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso;
65 import br.gov.ans.integracao.sei.utils.Constantes; 66 import br.gov.ans.integracao.sei.utils.Constantes;
66 -import br.gov.ans.integracao.sei.utils.ProcessoHelper;  
67 import br.gov.ans.integracao.sipar.dao.DocumentoSipar; 67 import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
68 import br.gov.ans.utils.MessageUtils; 68 import br.gov.ans.utils.MessageUtils;
69 69
src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java
@@ -1,158 +0,0 @@ @@ -1,158 +0,0 @@
1 -package br.gov.ans.integracao.sei.utils;  
2 -  
3 -import static br.gov.ans.integracao.sei.utils.Constantes.DATE_FORMATTER;  
4 -import static br.gov.ans.integracao.sei.utils.Constantes.NAO;  
5 -import static br.gov.ans.integracao.sei.utils.Constantes.SIM;  
6 -import static br.gov.ans.integracao.sei.utils.Util.getSOuN;  
7 -  
8 -import java.rmi.RemoteException;  
9 -import java.util.List;  
10 -  
11 -import javax.inject.Inject;  
12 -  
13 -import org.apache.commons.lang3.StringUtils;  
14 -  
15 -import br.gov.ans.integracao.sei.client.Contato;  
16 -import br.gov.ans.integracao.sei.dao.CidadeDAO;  
17 -import br.gov.ans.integracao.sei.dao.ContatoDAO;  
18 -import br.gov.ans.integracao.sei.exceptions.BusinessException;  
19 -import br.gov.ans.integracao.sei.modelo.Cidade;  
20 -import br.gov.ans.integracao.sei.modelo.Endereco;  
21 -import br.gov.ans.integracao.sei.modelo.Pessoa;  
22 -import br.gov.ans.integracao.sei.modelo.PessoaFisica;  
23 -import br.gov.ans.integracao.sei.modelo.PessoaJuridica;  
24 -import br.gov.ans.integracao.sei.modelo.enums.TipoPessoa;  
25 -  
26 -public class ContatoHelper {  
27 -  
28 - @Inject  
29 - private ContatoDAO contatoDAO;  
30 -  
31 - @Inject  
32 - private CidadeDAO cidadeDAO;  
33 -  
34 - public Contato buildContato(Pessoa pessoa) throws RemoteException, BusinessException, Exception{  
35 - if(pessoa instanceof PessoaFisica){  
36 - return buildContatoPessoaFisica((PessoaFisica) pessoa);  
37 - }else if(pessoa instanceof PessoaJuridica){  
38 - return buildContatoPessoaJuridica((PessoaJuridica) pessoa);  
39 - }  
40 -  
41 - throw new BusinessException("Tipo inválido");  
42 - }  
43 -  
44 - private Contato buildContatoPessoaFisica(PessoaFisica pessoa) throws RemoteException, BusinessException, Exception{  
45 - Contato contato = buildContatoPessoa(pessoa);  
46 -  
47 - contato.setStaNatureza(TipoPessoa.FISICA.getCodigo());  
48 -  
49 - if(pessoa.getSexo() != null){  
50 - contato.setStaGenero(pessoa.getSexo().getCodigo());  
51 - }  
52 -  
53 - contato.setCpf(pessoa.getCpf());  
54 - contato.setRg(pessoa.getRg());  
55 - contato.setOrgaoExpedidor(pessoa.getOrgaoEmissor());  
56 -  
57 - if(pessoa.getDataNascimento() != null){  
58 - contato.setDataNascimento(DATE_FORMATTER.format(pessoa.getDataNascimento()));  
59 - }  
60 -  
61 - contato.setMatricula(pessoa.getMatricula());  
62 - contato.setMatriculaOab(pessoa.getMatriculaOab());  
63 -  
64 - return contato;  
65 - }  
66 -  
67 - private Contato buildContatoPessoaJuridica(PessoaJuridica pessoa) throws RemoteException, BusinessException, Exception{  
68 - Contato contato = buildContatoPessoa(pessoa);  
69 -  
70 - contato.setStaNatureza(TipoPessoa.JURIDICA.getCodigo());  
71 - contato.setCnpj(pessoa.getCnpj());  
72 - contato.setSitioInternet(pessoa.getWebsite());  
73 -  
74 - return contato;  
75 - }  
76 -  
77 - private Contato buildContatoPessoa(Pessoa pessoa) throws RemoteException, BusinessException, Exception{  
78 - Contato contato = new Contato();  
79 -  
80 - contato.setSigla(pessoa.getSigla());  
81 - contato.setNome(pessoa.getNome());  
82 - contato.setTelefoneFixo(pessoa.getTelefone());  
83 - contato.setTelefoneCelular(pessoa.getCelular());  
84 - contato.setEmail(pessoa.getEmail());  
85 - contato.setObservacao(pessoa.getObservacao());  
86 - contato.setSinAtivo(getSOuN(pessoa.isAtivo()));  
87 -  
88 - preencherDadosAssociado(pessoa, contato);  
89 -  
90 - if(pessoa.getEndereco() != null){  
91 - preencherEndereco(pessoa.getEndereco(), contato);  
92 - }  
93 -  
94 - return contato;  
95 - }  
96 -  
97 - private void preencherEndereco(Endereco endereco, Contato contato) throws RemoteException, BusinessException, Exception{  
98 - contato.setEndereco(concatenarNumero(endereco.getLogradouro(), endereco.getNumero()));  
99 - contato.setComplemento(endereco.getComplemento());  
100 - contato.setBairro(endereco.getBairro());  
101 - contato.setCep(endereco.getCEP());  
102 -  
103 - if(StringUtils.isNotBlank(endereco.getCidade())){  
104 - Cidade cidade = getCidade(endereco.getCidade());  
105 -  
106 - contato.setIdCidade(cidade.getId().toString());  
107 - contato.setIdEstado(cidade.getEstado().getId().toString());  
108 - contato.setIdPais(cidade.getEstado().getIdPais());  
109 - }  
110 - }  
111 -  
112 - private void preencherDadosAssociado(Pessoa pessoa, Contato contato) throws RemoteException, BusinessException, Exception{  
113 - if(pessoa.getAssociado() == null){  
114 - contato.setSinEnderecoAssociado(NAO);  
115 - }else{  
116 - contato.setSinEnderecoAssociado(SIM);  
117 -  
118 - contato.setIdContatoAssociado(getIdContato(pessoa.getAssociado().getSigla())+"");  
119 - contato.setNomeContatoAssociado(pessoa.getAssociado().getNome());  
120 -  
121 - if(pessoa.getAssociado().getEndereco() != null){  
122 - preencherEndereco(pessoa.getAssociado().getEndereco(), contato);  
123 - }  
124 - }  
125 - }  
126 -  
127 - public br.gov.ans.integracao.sei.modelo.Contato getContatoNaoTemporarioMaisAntigo(String sigla){  
128 - List<br.gov.ans.integracao.sei.modelo.Contato> contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla);  
129 -  
130 - return contatosNaoTemporariosPelaSigla.get(0);  
131 - }  
132 -  
133 - public void preencherIdContato(Contato contato, String sigla){  
134 - contato.setIdContato(getIdContato(sigla)+"");  
135 - }  
136 -  
137 - public Boolean isContatoCadastradoComoNaoTemporario(String sigla){  
138 - List<br.gov.ans.integracao.sei.modelo.Contato> contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla);  
139 -  
140 - return !contatosNaoTemporariosPelaSigla.isEmpty();  
141 - }  
142 -  
143 - private Integer getIdContato(String sigla){  
144 - return contatoDAO.getContatoPelaSigla(sigla).getId();  
145 - }  
146 -  
147 - private Cidade getCidade(String ibge){  
148 - return cidadeDAO.getCidadePeloIbge(ibge);  
149 - }  
150 -  
151 - private String concatenarNumero(String logradouro, String numero){  
152 - if(StringUtils.isNotBlank(numero)){  
153 - return logradouro.trim() + ", " + numero;  
154 - }  
155 -  
156 - return logradouro;  
157 - }  
158 -}  
src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java
@@ -1,45 +0,0 @@ @@ -1,45 +0,0 @@
1 -package br.gov.ans.integracao.sei.utils;  
2 -  
3 -import javax.inject.Inject;  
4 -  
5 -import br.gov.ans.integracao.sei.client.Interessado;  
6 -import br.gov.ans.integracao.sei.modelo.Contato;  
7 -  
8 -public class InteressadoHelper {  
9 - @Inject  
10 - private ContatoHelper contatoHelper;  
11 -  
12 - public void tratarInteressados(Interessado[] interessados){  
13 - for(int i=0; i < interessados.length; i++){  
14 - interessados[i] = tratarInteressado(interessados[i]);  
15 - }  
16 - }  
17 -  
18 - public Interessado tratarInteressado(Interessado interessado){  
19 - if(isInteressadoCadastradoComoNaoTemporario(interessado.getSigla())){  
20 - return getRegistroInteressadoNaoTemporarioMaisAntigo(interessado.getSigla());  
21 - }  
22 -  
23 - return interessado;  
24 - }  
25 -  
26 - private boolean isInteressadoCadastradoComoNaoTemporario(String sigla){  
27 - return contatoHelper.isContatoCadastradoComoNaoTemporario(sigla);  
28 - }  
29 -  
30 - public Interessado getRegistroInteressadoNaoTemporarioMaisAntigo(String sigla){  
31 - Contato contatoNaoTemporarioMaisAntigo = contatoHelper.getContatoNaoTemporarioMaisAntigo(sigla);  
32 -  
33 - return convertContatoParaInteressado(contatoNaoTemporarioMaisAntigo);  
34 - }  
35 -  
36 - private Interessado convertContatoParaInteressado(Contato contato){  
37 - Interessado interessado = new Interessado();  
38 -  
39 - interessado.setNome(contato.getNome());  
40 - interessado.setSigla(contato.getSigla());  
41 -  
42 - return interessado;  
43 - }  
44 -  
45 -}  
src/main/java/br/gov/ans/integracao/sei/utils/PessoaHelper.java
@@ -1,199 +0,0 @@ @@ -1,199 +0,0 @@
1 -package br.gov.ans.integracao.sei.utils;  
2 -  
3 -import static br.gov.ans.integracao.sei.utils.Constantes.DATE_FORMATTER;  
4 -  
5 -import java.lang.reflect.Field;  
6 -import java.text.ParseException;  
7 -import java.util.ArrayList;  
8 -import java.util.List;  
9 -  
10 -import javax.inject.Inject;  
11 -  
12 -import org.apache.commons.lang3.ArrayUtils;  
13 -import org.apache.commons.lang3.StringUtils;  
14 -import org.apache.commons.lang3.reflect.FieldUtils;  
15 -import org.jboss.logging.Logger;  
16 -  
17 -import br.gov.ans.integracao.sei.client.Contato;  
18 -import br.gov.ans.integracao.sei.dao.CidadeDAO;  
19 -import br.gov.ans.integracao.sei.dao.ContatoDAO;  
20 -import br.gov.ans.integracao.sei.exceptions.BusinessException;  
21 -import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;  
22 -import br.gov.ans.integracao.sei.modelo.Endereco;  
23 -import br.gov.ans.integracao.sei.modelo.Pessoa;  
24 -import br.gov.ans.integracao.sei.modelo.PessoaFisica;  
25 -import br.gov.ans.integracao.sei.modelo.PessoaJuridica;  
26 -import br.gov.ans.integracao.sei.modelo.enums.Sexo;  
27 -import br.gov.ans.integracao.sei.modelo.enums.TipoPessoa;  
28 -import br.gov.ans.utils.MessageUtils;  
29 -  
30 -public class PessoaHelper {  
31 -  
32 - @Inject  
33 - private ContatoDAO contatoDAO;  
34 -  
35 - @Inject  
36 - private CidadeDAO cidadeDAO;  
37 -  
38 - @Inject  
39 - private Logger logger;  
40 -  
41 - @Inject  
42 - private MessageUtils messages;  
43 -  
44 - public List<Pessoa> buildPessoa(Contato[] contatos) throws ParseException, BusinessException, IllegalAccessException, ResourceNotFoundException{  
45 - if(ArrayUtils.isNotEmpty(contatos)){  
46 - ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();  
47 -  
48 - for(Contato c : contatos){  
49 - pessoas.add(buildPessoa(c));  
50 - }  
51 -  
52 - return pessoas;  
53 - }  
54 -  
55 - throw new ResourceNotFoundException(messages.getMessage("erro.nenhum.contato.encontrado"));  
56 - }  
57 -  
58 - public Pessoa buildPessoa(Contato contato) throws ParseException, BusinessException, IllegalAccessException{  
59 - TipoPessoa tipo = TipoPessoa.getByCodigo(contato.getStaNatureza());  
60 -  
61 - if(tipo.equals(TipoPessoa.FISICA)){  
62 - return buildPessoaFisica(contato);  
63 - }  
64 -  
65 - if(tipo.equals(TipoPessoa.JURIDICA)){  
66 - return buildPessoaJuridica(contato);  
67 - }  
68 -  
69 - throw new BusinessException(messages.getMessage("erro.tipo.pessoa.invalido"));  
70 - }  
71 -  
72 - public PessoaFisica buildPessoaFisica(Contato contato) throws ParseException, IllegalAccessException{  
73 - PessoaFisica pessoa = new PessoaFisica();  
74 -  
75 - pessoa.setSigla(contato.getSigla());  
76 - pessoa.setNome(contato.getNome());  
77 -  
78 - if(StringUtils.isNotBlank(contato.getStaGenero())){  
79 - pessoa.setSexo(Sexo.getByCodigo(contato.getStaGenero()));  
80 - }  
81 -  
82 - if(StringUtils.isNotBlank(contato.getDataNascimento())){  
83 - pessoa.setDataNascimento(DATE_FORMATTER.parse(contato.getDataNascimento()));  
84 - }  
85 -  
86 - pessoa.setCpf(contato.getCpf());  
87 - pessoa.setRg(contato.getRg());  
88 - pessoa.setOrgaoEmissor(contato.getOrgaoExpedidor());  
89 - pessoa.setMatricula(contato.getMatricula());  
90 - pessoa.setMatriculaOab(contato.getMatriculaOab());  
91 - pessoa.setCelular(contato.getTelefoneCelular());  
92 - pessoa.setTelefone(contato.getTelefoneFixo());  
93 - pessoa.setEmail(contato.getEmail());  
94 - pessoa.setObservacao(contato.getObservacao());  
95 - pessoa.setAtivo("S".equals(contato.getSinAtivo()));  
96 -  
97 - pessoa.setEndereco(buildEndereco(contato));  
98 -  
99 - if("S".equals(contato.getSinEnderecoAssociado())){  
100 - pessoa.setAssociado(buildAssociado(contato));  
101 - }  
102 -  
103 - return pessoa;  
104 - }  
105 -  
106 - public PessoaJuridica buildPessoaJuridica(Contato contato) throws ParseException, IllegalAccessException{  
107 - PessoaJuridica pessoa = new PessoaJuridica();  
108 -  
109 - pessoa.setSigla(contato.getSigla());  
110 - pessoa.setNome(contato.getNome());  
111 - pessoa.setCnpj(contato.getCnpj());  
112 - pessoa.setCelular(contato.getTelefoneCelular());  
113 - pessoa.setTelefone(contato.getTelefoneFixo());  
114 - pessoa.setEmail(contato.getEmail());  
115 - pessoa.setWebsite(contato.getSitioInternet());  
116 - pessoa.setObservacao(contato.getObservacao());  
117 - pessoa.setAtivo("S".equals(contato.getSinAtivo()));  
118 -  
119 - pessoa.setEndereco(buildEndereco(contato));  
120 -  
121 - if("S".equals(contato.getSinEnderecoAssociado())){  
122 - pessoa.setAssociado(buildAssociado(contato));  
123 - }  
124 -  
125 - return pessoa;  
126 - }  
127 -  
128 - private Endereco buildEndereco(Contato contato){  
129 - Endereco endereco = new Endereco();  
130 -  
131 - endereco.setLogradouro(contato.getEndereco());  
132 - endereco.setComplemento(contato.getComplemento());  
133 - endereco.setBairro(contato.getBairro());  
134 - endereco.setCEP(contato.getCep());  
135 -  
136 - if(StringUtils.isNotBlank(contato.getIdCidade())){  
137 - endereco.setCidade(getCodigoIbge(contato.getIdCidade()));  
138 - }  
139 - endereco.setUf(contato.getSiglaEstado());  
140 - endereco.setPais(contato.getNomePais());  
141 -  
142 - return endereco;  
143 - }  
144 -  
145 - private Endereco buildEnderecoAssociado(Contato contato){  
146 - Endereco endereco = new Endereco();  
147 -  
148 - endereco.setLogradouro(contato.getEndereco());  
149 - endereco.setComplemento(contato.getComplemento());  
150 - endereco.setBairro(contato.getBairro());  
151 - endereco.setCEP(contato.getCep());  
152 -  
153 - if(StringUtils.isNotBlank(contato.getIdCidade())){  
154 - endereco.setCidade(getCodigoIbge(contato.getIdCidade()));  
155 - }  
156 - endereco.setUf(contato.getSiglaEstado());  
157 - endereco.setPais(contato.getNomePais());  
158 -  
159 - return endereco;  
160 - }  
161 -  
162 - private PessoaJuridica buildAssociado(Contato contato){  
163 - PessoaJuridica pessoa = new PessoaJuridica();  
164 -  
165 - pessoa.setSigla(getSiglaContato(contato.getIdContatoAssociado()));  
166 - pessoa.setNome(contato.getNomeContatoAssociado());  
167 - pessoa.setCnpj(contato.getCnpjAssociado());  
168 -  
169 - pessoa.setEndereco(buildEnderecoAssociado(contato));  
170 -  
171 - return pessoa;  
172 - }  
173 -  
174 - private String getSiglaContato(String id){  
175 - return contatoDAO.getContatoPeloId(id).getSigla();  
176 - }  
177 -  
178 - public boolean hasAssociado(Contato contato) throws IllegalAccessException{  
179 - List<Field> fieldsList = FieldUtils.getAllFieldsList(Contato.class);  
180 -  
181 - for(Field f : fieldsList){  
182 - if(f.getName().contains("Associado")){  
183 - String field = (String) FieldUtils.readDeclaredField(contato, f.getName(), true);  
184 -  
185 - logger.warn(field);  
186 -  
187 - if(StringUtils.isNotBlank(field)){  
188 - return true;  
189 - }  
190 - }  
191 - }  
192 -  
193 - return false;  
194 - }  
195 -  
196 - public String getCodigoIbge(String idCidade){  
197 - return cidadeDAO.getCidadePeloId(idCidade).getCodigoIbge();  
198 - }  
199 -}  
src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java
@@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
1 -package br.gov.ans.integracao.sei.utils;  
2 -  
3 -import javax.inject.Inject;  
4 -  
5 -import org.apache.commons.lang3.ArrayUtils;  
6 -  
7 -import br.gov.ans.integracao.sei.exceptions.BusinessException;  
8 -import br.gov.ans.integracao.sei.modelo.NovoProcesso;  
9 -import br.gov.ans.utils.MessageUtils;  
10 -  
11 -public class ProcessoHelper {  
12 -  
13 - @Inject  
14 - private MessageUtils messages;  
15 -  
16 - @Inject  
17 - private InteressadoHelper interessadoHelper;  
18 -  
19 - public void validarNovoProcesso(NovoProcesso novoProcesso) throws BusinessException{  
20 - if(novoProcesso == null){  
21 - throw new BusinessException(messages.getMessage("erro.novo.processo.vazio"));  
22 - }  
23 -  
24 - if(novoProcesso.getDadosProcesso() == null){  
25 - throw new BusinessException(messages.getMessage("erro.dados.processo.nao.informados"));  
26 - }  
27 -  
28 - if(isSemInteressados(novoProcesso)){  
29 - throw new BusinessException(messages.getMessage("erro.interessado.nao.informado"));  
30 - }else{  
31 - interessadoHelper.tratarInteressados(novoProcesso.getDadosProcesso().getInteressados());  
32 - }  
33 - }  
34 -  
35 - public boolean isSemInteressados(NovoProcesso processo){  
36 - return ArrayUtils.isEmpty(processo.getDadosProcesso().getInteressados());  
37 - }  
38 -}  
src/main/resources/messages.properties
@@ -17,6 +17,7 @@ erro.cidade.nao.encontrada.ibge = Não há cidades para o código do IBGE informado @@ -17,6 +17,7 @@ erro.cidade.nao.encontrada.ibge = Não há cidades para o código do IBGE informado
17 erro.codigo.ibge.invalido = Código do IBGE inválido, não foram encontradas cidades relacionadas ao código {0}. 17 erro.codigo.ibge.invalido = Código do IBGE inválido, não foram encontradas cidades relacionadas ao código {0}.
18 erro.conectar.sei = Ocorreu um erro ao se conectar ao SEI, contate a equipe responsável. 18 erro.conectar.sei = Ocorreu um erro ao se conectar ao SEI, contate a equipe responsável.
19 erro.contato.nao.encontrado = Nenhum contato foi encontrado para o identificador {0}. 19 erro.contato.nao.encontrado = Nenhum contato foi encontrado para o identificador {0}.
  20 +erro.dados.documento.nao.informados = Dados do documento não informados.
20 erro.dados.processo.nao.informados = Dados do processo não informados. 21 erro.dados.processo.nao.informados = Dados do processo não informados.
21 erro.desanexar.processo = Ocorreu um erro ao desanexar o processo. 22 erro.desanexar.processo = Ocorreu um erro ao desanexar o processo.
22 erro.desbloquear.processo = Ocorreu um erro ao desbloquear o processo. 23 erro.desbloquear.processo = Ocorreu um erro ao desbloquear o processo.
src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java
@@ -8,7 +8,7 @@ public class FunctionalTest { @@ -8,7 +8,7 @@ public class FunctionalTest {
8 8
9 protected final String USUARIO = "desenv_integracao_sei"; 9 protected final String USUARIO = "desenv_integracao_sei";
10 protected final String SENHA = "integra_sei_2016"; 10 protected final String SENHA = "integra_sei_2016";
11 - protected static final Boolean DESENVOLVIMENTO = false; 11 + protected static final Boolean DESENVOLVIMENTO = true;
12 12
13 protected static final String BASIC = "Basic ZGVzZW52X2ludGVncmFjYW9fc2VpOmludGVncmFfc2VpXzIwMTY="; 13 protected static final String BASIC = "Basic ZGVzZW52X2ludGVncmFjYW9fc2VpOmludGVncmFfc2VpXzIwMTY=";
14 14