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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 33 import br.gov.ans.integracao.sei.exceptions.BusinessException;
34 34 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
35 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 38 import br.gov.ans.integracao.sei.modelo.Operacao;
37 39 import br.gov.ans.integracao.sei.modelo.Pessoa;
38 40 import br.gov.ans.integracao.sei.modelo.enums.Acao;
39 41 import br.gov.ans.integracao.sei.modelo.enums.TipoContato;
40 42 import br.gov.ans.integracao.sei.utils.Constantes;
41   -import br.gov.ans.integracao.sei.utils.ContatoHelper;
42 43 import br.gov.ans.integracao.sei.utils.MessagesKeys;
43   -import br.gov.ans.integracao.sei.utils.PessoaHelper;
44 44 import br.gov.ans.utils.MessageUtils;
45 45  
46 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 56 import br.gov.ans.integracao.sei.exceptions.BusinessException;
57 57 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
58 58 import br.gov.ans.integracao.sei.exceptions.WrappedException;
  59 +import br.gov.ans.integracao.sei.helper.DocumentoHelper;
59 60 import br.gov.ans.integracao.sei.modelo.CancelamentoDocumento;
60 61 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
61 62 import br.gov.ans.integracao.sei.modelo.ExclusaoDocumento;
... ... @@ -90,12 +91,12 @@ public class DocumentoResource {
90 91 @Inject
91 92 private Logger logger;
92 93  
93   - @Inject
94   - private MustacheUtils mustacheUtils;
95   -
96 94 @Inject
97 95 private MessageUtils messages;
98 96  
  97 + @Inject
  98 + private DocumentoHelper documentoHelper;
  99 +
99 100 @Context
100 101 private SecurityContext securityContext;
101 102  
... ... @@ -316,18 +317,11 @@ public class DocumentoResource {
316 317 public Response incluirDocumento(@PathParam("unidade") String unidade, @QueryParam("template") String template, Documento documento) throws RemoteException, Exception{
317 318 RetornoInclusaoDocumento retorno = null;
318 319  
319   - validarTamanhoConteudo(documento);
320   -
  320 + documentoHelper.validarDocumento(documento, template);
  321 +
321 322 InclusaoDocumento inclusaoDocumento = registrarInclusao(documento, unidade);
322 323  
323 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 325 logger.debug(messages.getMessage(MessagesKeys.DEBUG_NOVO_DOCUMENTO_ENVIADO));
332 326  
333 327 retorno = seiNativeService.incluirDocumento(Constantes.SEI_BROKER, Operacao.INCLUIR_DOCUMENTO, unidadeResource.consultarCodigo(unidade), documento);
... ... @@ -625,8 +619,6 @@ public class DocumentoResource {
625 619 public InclusaoDocumento registrarInclusao(Documento documento, String unidade) throws Exception{
626 620 InclusaoDocumento registro = new InclusaoDocumento(documento, unidade, getSistemaResponsavel(), calcularHashDocumento(documento.getConteudo()));
627 621  
628   - validarInclusaoDocumento(registro);
629   -
630 622 try{
631 623 userTransaction.begin();
632 624  
... ... @@ -704,47 +696,7 @@ public class DocumentoResource {
704 696 contentType = StringUtils.remove(contentType, ";");
705 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 700 public URI getResourcePath(String resourceId){
749 701 UriBuilder builder = uriInfo.getAbsolutePathBuilder();
750 702  
... ... @@ -753,14 +705,6 @@ public class DocumentoResource {
753 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 708 public void registrarExclusao(String numero, String unidade, String motivo) throws BusinessException, NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException{
765 709 try{
766 710 userTransaction.begin();
... ... @@ -781,18 +725,5 @@ public class DocumentoResource {
781 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 50 import br.gov.ans.integracao.sei.dao.UnidadeDAO;
51 51 import br.gov.ans.integracao.sei.exceptions.BusinessException;
52 52 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
  53 +import br.gov.ans.integracao.sei.helper.ProcessoHelper;
53 54 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
54 55 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
55 56 import br.gov.ans.integracao.sei.modelo.Motivo;
... ... @@ -63,7 +64,6 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido;
63 64 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso;
64 65 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso;
65 66 import br.gov.ans.integracao.sei.utils.Constantes;
66   -import br.gov.ans.integracao.sei.utils.ProcessoHelper;
67 67 import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
68 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   -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   -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   -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   -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 17 erro.codigo.ibge.invalido = Código do IBGE inválido, não foram encontradas cidades relacionadas ao código {0}.
18 18 erro.conectar.sei = Ocorreu um erro ao se conectar ao SEI, contate a equipe responsável.
19 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 21 erro.dados.processo.nao.informados = Dados do processo não informados.
21 22 erro.desanexar.processo = Ocorreu um erro ao desanexar o processo.
22 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 8  
9 9 protected final String USUARIO = "desenv_integracao_sei";
10 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 13 protected static final String BASIC = "Basic ZGVzZW52X2ludGVncmFjYW9fc2VpOmludGVncmFfc2VpXzIwMTY=";
14 14  
... ...