Commit dc14e6943d0d1034fd177ea0e08ba1e5e1ebf97b

Authored by andre guimaraes
1 parent 3597c7de

Melhorias no tratamento de exceção, novo resource com serviços relacionados ao S…

…IPAR, algumas melhorias em serviços existentes e documentação.
Showing 26 changed files with 781 additions and 222 deletions   Show diff stats
.settings/org.eclipse.wst.common.component
1 1 <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
2   - <wb-module deploy-name="sei-broker-2.3">
  2 + <wb-module deploy-name="sei-broker-2.2">
3 3 <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
4 4 <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
5 5 <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
... ...
src/main/java/br/gov/ans/dao/DAO.java
... ... @@ -53,6 +53,10 @@ public class DAO&lt;T&gt; implements Serializable{
53 53 em.remove(em.merge(t));
54 54 }
55 55  
  56 + public T findById(Serializable id){
  57 + return (T)em.find(classe, id);
  58 + }
  59 +
56 60 @Transactional
57 61 @SuppressWarnings({ "unchecked", "rawtypes" })
58 62 public Long count() {
... ...
src/main/java/br/gov/ans/exceptions/ResourceConflictException.java 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +package br.gov.ans.exceptions;
  2 +
  3 +import javax.ejb.ApplicationException;
  4 +
  5 +@ApplicationException
  6 +public class ResourceConflictException extends Exception{
  7 +
  8 + private static final long serialVersionUID = 1L;
  9 +
  10 + private String message;
  11 +
  12 + public ResourceConflictException(String message) {
  13 + this.message = message;
  14 + }
  15 +
  16 + public String getMessage() {
  17 + return message;
  18 + }
  19 +
  20 + public void setMessage(String message) {
  21 + this.message = message;
  22 + }
  23 +}
... ...
src/main/java/br/gov/ans/exceptions/handlers/EJBExceptionHandler.java 0 → 100644
... ... @@ -0,0 +1,40 @@
  1 +package br.gov.ans.exceptions.handlers;
  2 +
  3 +import static br.gov.ans.utils.HttpHeadersUtil.getAcceptType;
  4 +
  5 +import javax.ejb.EJBException;
  6 +import javax.inject.Inject;
  7 +import javax.ws.rs.core.Context;
  8 +import javax.ws.rs.core.HttpHeaders;
  9 +import javax.ws.rs.core.Response;
  10 +import javax.ws.rs.core.Response.Status;
  11 +import javax.ws.rs.ext.ExceptionMapper;
  12 +import javax.ws.rs.ext.Provider;
  13 +
  14 +import org.jboss.logging.Logger;
  15 +
  16 +import br.gov.ans.exceptions.ErrorMessage;
  17 +import br.gov.ans.utils.MessageUtils;
  18 +
  19 +@Provider
  20 +public class EJBExceptionHandler implements ExceptionMapper<EJBException>{
  21 +
  22 + @Inject
  23 + private Logger logger;
  24 +
  25 + @Context
  26 + private HttpHeaders headers;
  27 +
  28 + @Inject
  29 + private MessageUtils messages;
  30 +
  31 + public Response toResponse(EJBException ex) {
  32 + logger.error(ex, ex);
  33 +
  34 + return Response.status(Status.INTERNAL_SERVER_ERROR)
  35 + .entity(new ErrorMessage(messages.getMessage("erro.inesperado"),String.valueOf(Status.INTERNAL_SERVER_ERROR.getStatusCode())))
  36 + .type(getAcceptType(headers))
  37 + .build();
  38 + }
  39 +
  40 +}
... ...
src/main/java/br/gov/ans/exceptions/handlers/PersistenceExceptionHandler.java 0 → 100644
... ... @@ -0,0 +1,40 @@
  1 +package br.gov.ans.exceptions.handlers;
  2 +
  3 +import static br.gov.ans.utils.HttpHeadersUtil.getAcceptType;
  4 +
  5 +import javax.inject.Inject;
  6 +import javax.persistence.PersistenceException;
  7 +import javax.ws.rs.core.Context;
  8 +import javax.ws.rs.core.HttpHeaders;
  9 +import javax.ws.rs.core.Response;
  10 +import javax.ws.rs.core.Response.Status;
  11 +import javax.ws.rs.ext.ExceptionMapper;
  12 +import javax.ws.rs.ext.Provider;
  13 +
  14 +import org.jboss.logging.Logger;
  15 +
  16 +import br.gov.ans.exceptions.ErrorMessage;
  17 +import br.gov.ans.utils.MessageUtils;
  18 +
  19 +@Provider
  20 +public class PersistenceExceptionHandler implements ExceptionMapper<PersistenceException>{
  21 +
  22 + @Inject
  23 + private Logger logger;
  24 +
  25 + @Context
  26 + private HttpHeaders headers;
  27 +
  28 + @Inject
  29 + private MessageUtils messages;
  30 +
  31 + public Response toResponse(PersistenceException ex) {
  32 + logger.error(ex, ex);
  33 +
  34 + return Response.status(Status.INTERNAL_SERVER_ERROR)
  35 + .entity(new ErrorMessage(messages.getMessage("erro.inesperado"),String.valueOf(Status.INTERNAL_SERVER_ERROR.getStatusCode())))
  36 + .type(getAcceptType(headers))
  37 + .build();
  38 + }
  39 +
  40 +}
... ...
src/main/java/br/gov/ans/exceptions/handlers/ResourceConflictExceptionHandler.java 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +package br.gov.ans.exceptions.handlers;
  2 +
  3 +import static br.gov.ans.utils.HttpHeadersUtil.getAcceptType;
  4 +
  5 +import javax.inject.Inject;
  6 +import javax.ws.rs.core.Context;
  7 +import javax.ws.rs.core.HttpHeaders;
  8 +import javax.ws.rs.core.Response;
  9 +import javax.ws.rs.core.Response.Status;
  10 +import javax.ws.rs.ext.ExceptionMapper;
  11 +import javax.ws.rs.ext.Provider;
  12 +
  13 +import org.jboss.logging.Logger;
  14 +
  15 +import br.gov.ans.exceptions.ErrorMessage;
  16 +import br.gov.ans.exceptions.ResourceConflictException;
  17 +
  18 +@Provider
  19 +public class ResourceConflictExceptionHandler implements ExceptionMapper<ResourceConflictException>{
  20 +
  21 + @Inject
  22 + private Logger logger;
  23 +
  24 + @Context
  25 + private HttpHeaders headers;
  26 +
  27 + public Response toResponse(ResourceConflictException ex) {
  28 + logger.error(ex, ex);
  29 +
  30 + return Response.status(Status.CONFLICT)
  31 + .entity(new ErrorMessage(ex.getMessage(),String.valueOf(Status.CONFLICT.getStatusCode())))
  32 + .type(getAcceptType(headers))
  33 + .build();
  34 + }
  35 +}
... ...
src/main/java/br/gov/ans/integracao/sei/client/SeiPortTypeProxy.java
... ... @@ -336,25 +336,17 @@ public class SeiPortTypeProxy implements br.gov.ans.integracao.sei.client.SeiPor
336 336 identificacaoServico, idUnidade, idArquivoExtensao);
337 337 }
338 338  
339   - public java.lang.String enviarProcesso(java.lang.String siglaSistema,
340   - java.lang.String identificacaoServico, java.lang.String idUnidade,
341   - java.lang.String protocoloProcedimento,
342   - java.lang.String[] unidadesDestino,
343   - java.lang.String sinManterAbertoUnidade,
344   - java.lang.String sinRemoverAnotacao,
345   - java.lang.String sinEnviarEmailNotificacao,
346   - java.lang.String dataRetornoProgramado,
347   - java.lang.String diasRetornoProgramado,
348   - java.lang.String sinDiasUteisRetornoProgramado,
  339 + public java.lang.String enviarProcesso(java.lang.String siglaSistema, java.lang.String identificacaoServico,
  340 + java.lang.String idUnidade, java.lang.String protocoloProcedimento, java.lang.String[] unidadesDestino,
  341 + java.lang.String sinManterAbertoUnidade, java.lang.String sinRemoverAnotacao,
  342 + java.lang.String sinEnviarEmailNotificacao, java.lang.String dataRetornoProgramado,
  343 + java.lang.String diasRetornoProgramado, java.lang.String sinDiasUteisRetornoProgramado,
349 344 java.lang.String sinReabrir) throws java.rmi.RemoteException {
350 345 if (seiPortType == null)
351 346 _initSeiPortTypeProxy();
352   - return seiPortType.enviarProcesso(siglaSistema, identificacaoServico,
353   - idUnidade, protocoloProcedimento, unidadesDestino,
354   - sinManterAbertoUnidade, sinRemoverAnotacao,
355   - sinEnviarEmailNotificacao, dataRetornoProgramado,
356   - diasRetornoProgramado, sinDiasUteisRetornoProgramado,
357   - sinReabrir);
  347 + return seiPortType.enviarProcesso(siglaSistema, identificacaoServico, idUnidade, protocoloProcedimento,
  348 + unidadesDestino, sinManterAbertoUnidade, sinRemoverAnotacao, sinEnviarEmailNotificacao,
  349 + dataRetornoProgramado, diasRetornoProgramado, sinDiasUteisRetornoProgramado, sinReabrir);
358 350 }
359 351  
360 352 public br.gov.ans.integracao.sei.client.Usuario[] listarUsuarios(
... ...
src/main/java/br/gov/ans/integracao/sei/dao/DocumentoSiparDAO.java
... ... @@ -1,33 +0,0 @@
1   -package br.gov.ans.integracao.sei.dao;
2   -
3   -import java.util.HashMap;
4   -import java.util.List;
5   -import java.util.Map;
6   -
7   -import javax.inject.Inject;
8   -
9   -import br.gov.ans.dao.DAO;
10   -import br.gov.ans.integracao.sei.modelo.DocumentoSipar;
11   -
12   -public class DocumentoSiparDAO {
13   -
14   - @SuppressWarnings("cdi-ambiguous-dependency")
15   - @Inject
16   - private DAO<DocumentoSipar> dao;
17   -
18   - public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){
19   -
20   - Map<String, Object> params = new HashMap<String, Object>();
21   - params.put("numeroDocumento", numeroDocumento);
22   - params.put("anoDocumento", anoDocumento);
23   - params.put("digitoDocumento", digitoDocumento);
24   -
25   - List<DocumentoSipar> resultado = dao.executeNamedQuery("documentoPorNumeroAnoDigito", params);
26   -
27   - if(resultado.isEmpty()){
28   - return null;
29   - }
30   -
31   - return resultado.get(0);
32   - }
33   -}
src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +package br.gov.ans.integracao.sei.dao;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import javax.ejb.Stateless;
  8 +import javax.inject.Inject;
  9 +
  10 +import br.gov.ans.dao.DAO;
  11 +import br.gov.ans.integracao.sipar.dao.ControleMigracao;
  12 +import br.gov.ans.integracao.sipar.dao.ControleMigracaoId;
  13 +import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
  14 +
  15 +@Stateless
  16 +public class SiparDAO {
  17 +
  18 + @SuppressWarnings("cdi-ambiguous-dependency")
  19 + @Inject
  20 + private DAO<DocumentoSipar> daoDocumento;
  21 +
  22 + @Inject
  23 + private DAO<ControleMigracao> daoMigracao;
  24 +
  25 + public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){
  26 +
  27 + Map<String, Object> params = new HashMap<String, Object>();
  28 + params.put("numeroDocumento", numeroDocumento);
  29 + params.put("anoDocumento", anoDocumento);
  30 + params.put("digitoDocumento", digitoDocumento);
  31 +
  32 + List<DocumentoSipar> resultado = daoDocumento.executeNamedQuery("documentoPorNumeroAnoDigito", params);
  33 +
  34 + if(resultado.isEmpty()){
  35 + return null;
  36 + }
  37 +
  38 + return resultado.get(0);
  39 + }
  40 +
  41 + public ControleMigracao buscaProcessoImportado(ControleMigracaoId id){
  42 + return daoMigracao.findById(id);
  43 + }
  44 +
  45 + public void merge(ControleMigracao controleMigracao){
  46 + daoMigracao.merge(controleMigracao);
  47 + }
  48 +
  49 +}
... ...
src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoSipar.java
... ... @@ -1,130 +0,0 @@
1   -package br.gov.ans.integracao.sei.modelo;
2   -
3   -import java.util.Date;
4   -
5   -import javax.persistence.Entity;
6   -import javax.persistence.EntityResult;
7   -import javax.persistence.FieldResult;
8   -import javax.persistence.Id;
9   -import javax.persistence.NamedNativeQuery;
10   -import javax.persistence.SqlResultSetMapping;
11   -
12   -@Entity
13   -@SqlResultSetMapping(name="DocumentoSiparMapping", entities={
14   - @EntityResult(entityClass = DocumentoSipar.class,
15   - fields = {
16   - @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"),
17   - @FieldResult(name = "operadora", column = "CO_OPERADORA"),
18   - @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"),
19   - @FieldResult(name = "registro", column = "DT_REGISTRO"),
20   - @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"),
21   - @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"),
22   - @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"),
23   - @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"),
24   - @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"),
25   - @FieldResult(name = "assunto", column = "CO_ASSUNTO")
26   - })
27   -})
28   -@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping",
29   -query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, "
30   - + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO "
31   - + "FROM DBPSIPAR.TB_DOCUMENTO TB "
32   - + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO "
33   - + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO "
34   - + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento "
35   - + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento "
36   - + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento")
37   -public class DocumentoSipar {
38   - @Id
39   - private String digito;
40   - private String operadora;
41   - private Date emissao;
42   - private Date registro;
43   - private String tipo;
44   - private String resumo;
45   - private Long orgaoPosse;
46   - private Long orgaoOrigem;
47   - private Long orgaoRegistro;
48   - private Long assunto;
49   -
50   - public String getDigito() {
51   - return digito;
52   - }
53   -
54   - public void setDigito(String digito) {
55   - this.digito = digito;
56   - }
57   -
58   - public Long getAssunto() {
59   - return assunto;
60   - }
61   -
62   - public void setAssunto(Long assunto) {
63   - this.assunto = assunto;
64   - }
65   -
66   - public String getOperadora() {
67   - return operadora;
68   - }
69   -
70   - public void setOperadora(String operadora) {
71   - this.operadora = operadora;
72   - }
73   -
74   - public Date getEmissao() {
75   - return emissao;
76   - }
77   -
78   - public void setEmissao(Date emissao) {
79   - this.emissao = emissao;
80   - }
81   -
82   - public String getTipo() {
83   - return tipo;
84   - }
85   -
86   - public void setTipo(String tipo) {
87   - this.tipo = tipo;
88   - }
89   -
90   - public String getResumo() {
91   - return resumo;
92   - }
93   -
94   - public void setResumo(String resumo) {
95   - this.resumo = resumo;
96   - }
97   -
98   - public Long getOrgaoPosse() {
99   - return orgaoPosse;
100   - }
101   -
102   - public void setOrgaoPosse(Long orgaoPosse) {
103   - this.orgaoPosse = orgaoPosse;
104   - }
105   -
106   - public Long getOrgaoOrigem() {
107   - return orgaoOrigem;
108   - }
109   -
110   - public void setOrgaoOrigem(Long orgaoOrigem) {
111   - this.orgaoOrigem = orgaoOrigem;
112   - }
113   -
114   - public Long getOrgaoRegistro() {
115   - return orgaoRegistro;
116   - }
117   -
118   - public void setOrgaoRegistro(Long orgaoRegistro) {
119   - this.orgaoRegistro = orgaoRegistro;
120   - }
121   -
122   - public Date getRegistro() {
123   - return registro;
124   - }
125   -
126   - public void setRegistro(Date registro) {
127   - this.registro = registro;
128   - }
129   -
130   -}
src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java
... ... @@ -3,6 +3,7 @@ package br.gov.ans.integracao.sei.modelo;
3 3 import javax.xml.bind.annotation.XmlRootElement;
4 4  
5 5 import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento;
  6 +import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
6 7  
7 8 @XmlRootElement
8 9 public class ResultadoConsultaDocumento {
... ...
src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java
... ... @@ -3,6 +3,7 @@ package br.gov.ans.integracao.sei.modelo;
3 3 import javax.xml.bind.annotation.XmlRootElement;
4 4  
5 5 import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento;
  6 +import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
6 7  
7 8 @XmlRootElement
8 9 public class ResultadoConsultaProcesso {
... ...
src/main/java/br/gov/ans/integracao/sei/modelo/Tipo.java
... ... @@ -8,8 +8,8 @@ import javax.persistence.SqlResultSetMapping;
8 8 import javax.xml.bind.annotation.XmlRootElement;
9 9  
10 10 @Entity
11   -@SqlResultSetMapping(name = "TipoMapping", entities = { @EntityResult(entityClass = Tipo.class, fields = {
12   - @FieldResult(name = "codigo", column = "tipoCodigo"), @FieldResult(name = "nome", column = "tipoNome") }) })
  11 +//@SqlResultSetMapping(name = "TipoMapping", entities = { @EntityResult(entityClass = Tipo.class, fields = {
  12 +// @FieldResult(name = "codigo", column = "tipoCodigo"), @FieldResult(name = "nome", column = "tipoNome") }) })
13 13 @XmlRootElement
14 14 public class Tipo {
15 15 @Id
... ...
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
... ... @@ -47,10 +47,9 @@ import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento;
47 47 import br.gov.ans.integracao.sei.client.SeiPortTypeProxy;
48 48 import br.gov.ans.integracao.sei.client.TipoProcedimento;
49 49 import br.gov.ans.integracao.sei.dao.DocumentoDAO;
50   -import br.gov.ans.integracao.sei.dao.DocumentoSiparDAO;
  50 +import br.gov.ans.integracao.sei.dao.SiparDAO;
51 51 import br.gov.ans.integracao.sei.dao.ProcessoDAO;
52 52 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
53   -import br.gov.ans.integracao.sei.modelo.DocumentoSipar;
54 53 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
55 54 import br.gov.ans.integracao.sei.modelo.Motivo;
56 55 import br.gov.ans.integracao.sei.modelo.NovoAndamento;
... ... @@ -63,6 +62,7 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido;
63 62 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso;
64 63 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso;
65 64 import br.gov.ans.integracao.sei.utils.Constantes;
  65 +import br.gov.ans.integracao.sipar.dao.DocumentoSipar;
66 66 import br.gov.ans.utils.MessageUtils;
67 67  
68 68  
... ... @@ -70,7 +70,7 @@ import br.gov.ans.utils.MessageUtils;
70 70 public class ProcessoResource {
71 71  
72 72 @Inject
73   - private DocumentoSiparDAO documentoSiparDAO;
  73 + private SiparDAO documentoSiparDAO;
74 74  
75 75 @Inject
76 76 private ProcessoDAO processoDAO;
... ...
src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java 0 → 100644
... ... @@ -0,0 +1,233 @@
  1 +package br.gov.ans.integracao.sei.rest;
  2 +
  3 +import java.net.URI;
  4 +import java.util.Date;
  5 +
  6 +import javax.inject.Inject;
  7 +import javax.ws.rs.Consumes;
  8 +import javax.ws.rs.DELETE;
  9 +import javax.ws.rs.POST;
  10 +import javax.ws.rs.Path;
  11 +import javax.ws.rs.PathParam;
  12 +import javax.ws.rs.core.Context;
  13 +import javax.ws.rs.core.MediaType;
  14 +import javax.ws.rs.core.Response;
  15 +import javax.ws.rs.core.Response.Status;
  16 +import javax.ws.rs.core.UriBuilder;
  17 +import javax.ws.rs.core.UriInfo;
  18 +
  19 +import org.jboss.logging.Logger;
  20 +
  21 +import br.gov.ans.exceptions.BusinessException;
  22 +import br.gov.ans.exceptions.ResourceConflictException;
  23 +import br.gov.ans.exceptions.ResourceNotFoundException;
  24 +import br.gov.ans.integracao.sei.dao.SiparDAO;
  25 +import br.gov.ans.integracao.sipar.dao.ControleMigracao;
  26 +import br.gov.ans.integracao.sipar.dao.ControleMigracaoId;
  27 +import br.gov.ans.utils.MessageUtils;
  28 +
  29 +@Path("/sipar")
  30 +public class SiparResource {
  31 +
  32 + @Inject
  33 + private SiparDAO dao;
  34 +
  35 + @Inject
  36 + private MessageUtils messages;
  37 +
  38 + @Inject
  39 + private Logger logger;
  40 +
  41 + @Context
  42 + private UriInfo uriInfo;
  43 +
  44 + private static int TRUE = 1;
  45 + private static int FALSE = 0;
  46 +
  47 + /**
  48 + * @api {put} /sipar/importados Importar Processo SIPAR
  49 + * @apiName importarProcesso
  50 + * @apiGroup SIPAR
  51 + * @apiVersion 2.0.0
  52 + *
  53 + * @apiDescription Marca um processo físico (SIPAR) como importado para um processo eletrônico (SEI).
  54 + *
  55 + * @apiParam (Path Parameter) {String} processo Número do processo físico existente no SIPAR contendo 17 dígitos e iniciado com 33902. Ex. 33902111111111111
  56 + *
  57 + * @apiExample {curl} Exemplo de requisição:
  58 + * curl -i http://<host>/sei-broker/service/sipar/importados
  59 + *
  60 + * @apiSuccessExample {json} Success-Response:
  61 + * HTTP/1.1 204 No Content
  62 + *
  63 + * @apiErrorExample {json} Error-Response:
  64 + * HTTP/1.1 500 Internal Server Error
  65 + * {
  66 + * "error":"Mensagem de erro."
  67 + * "code":"código do erro"
  68 + * }
  69 + *
  70 + *
  71 + * @apiErrorExample {json} Error-Response:
  72 + * HTTP/1.1 400 Bad Request
  73 + * {
  74 + * "error":"Mensagem de erro."
  75 + * "code":"código do erro"
  76 + * }
  77 + *
  78 + *
  79 + * @apiErrorExample {json} Error-Response:
  80 + * HTTP/1.1 409 Conflict
  81 + * {
  82 + * "error":"Mensagem de erro."
  83 + * "code":"código do erro"
  84 + * }
  85 + */
  86 + @POST
  87 + @Path("/importados")
  88 + @Consumes({MediaType.TEXT_PLAIN})
  89 + public Response importarProcesso(String processo) throws Exception{
  90 + String numero, ano, digito;
  91 +
  92 + try{
  93 + numero = extraiNumero(processo);
  94 + ano = extraiAno(processo);
  95 + digito = extraiDigitoVerificador(processo);
  96 + }catch(Exception ex){
  97 + logger.error(messages.getMessage("erro.numero.sipar"), ex);
  98 + throw new BusinessException(messages.getMessage("erro.numero.sipar",processo));
  99 + }
  100 +
  101 + isProcessoSipar(numero, ano, digito);
  102 +
  103 + if(isProcessoImportado(numero, ano)){
  104 + throw new ResourceConflictException(messages.getMessage("erro.processo.sipar.importado",processo));
  105 + }
  106 +
  107 + importarProcesso(numero, ano);
  108 +
  109 + return Response.created(getResourcePath(processo)).build();
  110 +
  111 + }
  112 +
  113 + /**
  114 + * @api {put} /processos-fisicos/{processo}/desmigracao 2.Desmigra Processo
  115 + * @apiName desmigra
  116 + * @apiGroup SIPAR
  117 + * @apiVersion 1.0.0
  118 + *
  119 + * @apiDescription Desmigra um processo iniciado no SIPAR e transferido para o SEI, permitindo novamente a anexação e tramitação no SIPAR.
  120 + *
  121 + * @apiParam (Path Parameter) {String} processo Número do processo físico existente no SIPAR contendo 17 dígitos e iniciado com 33902. Ex. 33902111111111111
  122 + *
  123 + * @apiExample {curl} Exemplo de requisição:
  124 + * curl -i http://<host>/sipar-broker/service/processos-fisicos/33902111111111111/desmigracao
  125 + *
  126 + * @apiSuccessExample {json} Success-Response:
  127 + * HTTP/1.1 204 No Content
  128 + *
  129 + * @apiErrorExample {json} Error-Response:
  130 + * HTTP/1.1 500 Internal Server Error
  131 + * {
  132 + * "error":"Mensagem de erro."
  133 + * "code":"código do erro"
  134 + * }
  135 + *
  136 + *
  137 + * @apiErrorExample {json} Error-Response:
  138 + * HTTP/1.1 400 Bad Request
  139 + * {
  140 + * "error":"Mensagem de erro."
  141 + * "code":"código do erro"
  142 + * }
  143 + *
  144 + *
  145 + * @apiErrorExample {json} Error-Response:
  146 + * HTTP/1.1 409 Conflict
  147 + * {
  148 + * "error":"Mensagem de erro."
  149 + * "code":"código do erro"
  150 + * }
  151 + */
  152 + @DELETE
  153 + @Path("/importados/{processo:\\d+}")
  154 + public Response cancelarImportacaoProcesso(@PathParam("processo") String processo) throws Exception{
  155 + String numero, ano, digito;
  156 +
  157 + try{
  158 + numero = extraiNumero(processo);
  159 + ano = extraiAno(processo);
  160 + digito = extraiDigitoVerificador(processo);
  161 + }catch(Exception ex){
  162 + logger.error(messages.getMessage("erro.numero.sipar"), ex);
  163 + throw new BusinessException(messages.getMessage("erro.numero.sipar",processo));
  164 + }
  165 +
  166 + if(!isProcessoImportado(numero, ano)){
  167 + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.importado",processo));
  168 + }
  169 +
  170 + cancelarImportacaoProcesso(numero, ano);
  171 +
  172 + return Response.noContent().build();
  173 +
  174 + }
  175 +
  176 + private void importarProcesso(String numeroDocumento, String anoDocumento){
  177 + ControleMigracao controle = new ControleMigracao();
  178 + controle.setId(getControleMigracaoID(numeroDocumento, anoDocumento));
  179 + controle.setMigrado(TRUE);
  180 + controle.setDataUltimaAlteracao(new Date());
  181 +
  182 + dao.merge(controle);
  183 + }
  184 +
  185 + private void cancelarImportacaoProcesso(String numeroDocumento, String anoDocumento){
  186 + ControleMigracao controle = new ControleMigracao();
  187 + controle.setId(getControleMigracaoID(numeroDocumento, anoDocumento));
  188 + controle.setMigrado(FALSE);
  189 + controle.setDataUltimaAlteracao(new Date());
  190 +
  191 + dao.merge(controle);
  192 + }
  193 +
  194 + private ControleMigracaoId getControleMigracaoID(String numeroDocumento, String anoDocumento){
  195 + return new ControleMigracaoId(numeroDocumento, anoDocumento);
  196 + }
  197 +
  198 + private String extraiNumero(String processo) {
  199 + return processo.substring(0,(processo.length() - 6));
  200 + }
  201 +
  202 + private String extraiAno(String processo) {
  203 + return processo.substring((processo.length() - 6), (processo.length() - 2));
  204 + }
  205 +
  206 + private String extraiDigitoVerificador(String processo) {
  207 + return processo.substring((processo.length() - 2), processo.length());
  208 + }
  209 +
  210 + public boolean isProcessoImportado(String numeroDocumento, String anoDocumento){
  211 + ControleMigracao processoMigrado = dao.buscaProcessoImportado(getControleMigracaoID(numeroDocumento, anoDocumento));
  212 +
  213 + if(processoMigrado != null && processoMigrado.isProcessoMigrado()){
  214 + return true;
  215 + }
  216 +
  217 + return false;
  218 + }
  219 +
  220 + public void isProcessoSipar(String numeroDocumento, String anoDocumento, String digitoDocumento) throws ResourceNotFoundException{
  221 + if(dao.getDocumento(numeroDocumento, anoDocumento, digitoDocumento) == null){
  222 + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.pertence.sipar"));
  223 + }
  224 + }
  225 +
  226 + public URI getResourcePath(String resourceId){
  227 + UriBuilder builder = uriInfo.getAbsolutePathBuilder();
  228 +
  229 + builder.path(resourceId);
  230 +
  231 + return builder.build();
  232 + }
  233 +}
... ...
src/main/java/br/gov/ans/integracao/sei/rest/TipoConferenciaResource.java
... ... @@ -14,6 +14,7 @@ import br.gov.ans.integracao.sei.client.TipoConferencia;
14 14 import br.gov.ans.integracao.sei.modelo.Operacao;
15 15 import br.gov.ans.integracao.sei.utils.Constantes;
16 16  
  17 +@Path("/")
17 18 public class TipoConferenciaResource {
18 19  
19 20 @Inject
... ...
src/main/java/br/gov/ans/integracao/sei/rest/UsuarioResource.java
... ... @@ -10,10 +10,10 @@ import java.util.List;
10 10  
11 11 import javax.inject.Inject;
12 12 import javax.ws.rs.Consumes;
  13 +import javax.ws.rs.DELETE;
13 14 import javax.ws.rs.GET;
14 15 import javax.ws.rs.NotFoundException;
15 16 import javax.ws.rs.POST;
16   -import javax.ws.rs.PUT;
17 17 import javax.ws.rs.Path;
18 18 import javax.ws.rs.PathParam;
19 19 import javax.ws.rs.Produces;
... ... @@ -49,7 +49,9 @@ public class UsuarioResource {
49 49 * @apiName listarUsuarios
50 50 * @apiGroup Usuario
51 51 * @apiVersion 2.0.0
52   - *
  52 + *
  53 + * @apiPermission RO_SEI_BROKER
  54 + *
53 55 * @apiDescription Este método realiza uma consulta aos usuários cadastrados que possuem o perfil "Básico".
54 56 *
55 57 * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI.
... ... @@ -81,7 +83,9 @@ public class UsuarioResource {
81 83 * @apiName buscarUsuario
82 84 * @apiGroup Usuario
83 85 * @apiVersion 2.0.0
84   - *
  86 + *
  87 + * @apiPermission RO_SEI_BROKER
  88 + *
85 89 * @apiDescription Este método realiza a uma busca pelo login do usuário.
86 90 *
87 91 * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI.
... ... @@ -111,7 +115,9 @@ public class UsuarioResource {
111 115 * @apiName atribuirProcesso
112 116 * @apiGroup Usuario
113 117 * @apiVersion 2.0.0
114   - *
  118 + *
  119 + * @apiPermission RO_SEI_BROKER
  120 + *
115 121 * @apiDescription Este método atribui o processo a um usuário.
116 122 *
117 123 * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI
... ... @@ -155,7 +161,9 @@ public class UsuarioResource {
155 161 * @apiName incluirUsuario
156 162 * @apiGroup Usuario
157 163 * @apiVersion 2.0.0
158   - *
  164 + *
  165 + * @apiPermission RO_SEI_BROKER_ADM
  166 + *
159 167 * @apiDescription Este método realiza a inclusão de novos usuários ou alterarações nos usuários existentes.
160 168 *
161 169 * @apiParam (Request Body) {String} codigo Código que deseja atribuir ao usuário
... ... @@ -191,11 +199,13 @@ public class UsuarioResource {
191 199  
192 200  
193 201 /**
194   - * @api {post} /usuarios/excluir Excluir usuário
  202 + * @api {delete} /usuarios/:login Excluir usuário
195 203 * @apiName excluirUsuario
196 204 * @apiGroup Usuario
197 205 * @apiVersion 2.0.0
198   - *
  206 + *
  207 + * @apiPermission RO_SEI_BROKER_ADM
  208 + *
199 209 * @apiDescription Este método realiza a exclusão de usuários.
200 210 *
201 211 * @apiParam {String} codigo Código que deseja atribuir ao usuário
... ... @@ -203,7 +213,7 @@ public class UsuarioResource {
203 213 * @apiParam {String} login Login que será atribuído ao usuário
204 214 *
205 215 * @apiExample Exemplo de requisição:
206   - * endpoint: http://<host>/sei-broker/service/usuarios/excluir
  216 + * endpoint: [DELETE] http://<host>/sei-broker/service/usuarios/andre.guimaraes
207 217 *
208 218 * body:
209 219 * {
... ... @@ -221,21 +231,23 @@ public class UsuarioResource {
221 231 * "code":"código do erro"
222 232 * }
223 233 */
224   - @POST
225   - @Path("/usuarios/excluir")
  234 + @DELETE
  235 + @Path("/usuarios/{login}")
226 236 @Consumes({MediaType.APPLICATION_JSON})
227 237 @Produces(MediaType.APPLICATION_JSON)
228   - public Boolean excluirUsuario(Usuario usuario) throws Exception{
  238 + public Boolean excluirUsuario(@PathParam("login") String login,Usuario usuario) throws Exception{
229 239 return manterUsuario(Acao.EXCLUIR, usuario);
230 240 }
231 241  
232 242  
233 243 /**
234   - * @api {put} /usuarios/desativar Desativar usuário
  244 + * @api {delete} /usuarios/ativos Desativar usuário
235 245 * @apiName desativarUsuario
236 246 * @apiGroup Usuario
237 247 * @apiVersion 2.0.0
238   - *
  248 + *
  249 + * @apiPermission RO_SEI_BROKER_ADM
  250 + *
239 251 * @apiDescription Este método desativa usuários.
240 252 *
241 253 * @apiParam {String} codigo Código que deseja atribuir ao usuário
... ... @@ -243,7 +255,7 @@ public class UsuarioResource {
243 255 * @apiParam {String} login Login que será atribuído ao usuário
244 256 *
245 257 * @apiExample Exemplo de requisição:
246   - * endpoint: http://<host>/sei-broker/service/usuarios/desativar
  258 + * endpoint: [DELETE] http://<host>/sei-broker/service/usuarios/ativos/andre.guimaraes
247 259 *
248 260 * body:
249 261 * {
... ... @@ -261,21 +273,23 @@ public class UsuarioResource {
261 273 * "code":"código do erro"
262 274 * }
263 275 */
264   - @PUT
265   - @Path("/usuarios/desativar")
  276 + @DELETE
  277 + @Path("/usuarios/ativos/{login}")
266 278 @Consumes({MediaType.APPLICATION_JSON})
267 279 @Produces(MediaType.APPLICATION_JSON)
268   - public Boolean desativarUsuario(Usuario usuario) throws Exception{
  280 + public Boolean desativarUsuario(@PathParam("login") String login,Usuario usuario) throws Exception{
269 281 return manterUsuario(Acao.DESATIVAR, usuario);
270 282 }
271 283  
272 284  
273 285 /**
274   - * @api {put} /usuarios/ativar Ativar usuário
  286 + * @api {post} /usuarios/ativos Ativar usuário
275 287 * @apiName ativarUsuario
276 288 * @apiGroup Usuario
277 289 * @apiVersion 2.0.0
278   - *
  290 + *
  291 + * @apiPermission RO_SEI_BROKER_ADM
  292 + *
279 293 * @apiDescription Este método reativa usuários.
280 294 *
281 295 * @apiParam {String} codigo Código que deseja atribuir ao usuário
... ... @@ -283,7 +297,7 @@ public class UsuarioResource {
283 297 * @apiParam {String} login Login que será atribuído ao usuário
284 298 *
285 299 * @apiExample Exemplo de requisição:
286   - * endpoint: http://<host>/sei-broker/service/usuarios/ativar
  300 + * endpoint: http://<host>/sei-broker/service/usuarios/ativos
287 301 *
288 302 * body:
289 303 * {
... ... @@ -301,8 +315,8 @@ public class UsuarioResource {
301 315 * "code":"código do erro"
302 316 * }
303 317 */
304   - @PUT
305   - @Path("/usuarios/ativar")
  318 + @POST
  319 + @Path("/usuarios/ativos")
306 320 @Consumes({MediaType.APPLICATION_JSON})
307 321 @Produces(MediaType.APPLICATION_JSON)
308 322 public Boolean ativarUsuario(Usuario usuario) throws Exception{
... ...
src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracao.java 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +package br.gov.ans.integracao.sipar.dao;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.Column;
  7 +import javax.persistence.EmbeddedId;
  8 +import javax.persistence.Entity;
  9 +import javax.persistence.Table;
  10 +import javax.persistence.Temporal;
  11 +import javax.persistence.TemporalType;
  12 +
  13 +@Entity
  14 +@Table(schema="DBPSIPAR", name="TB_CONTROLE_MIGRACAO_SIPAR_SEI")
  15 +public class ControleMigracao implements Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + @EmbeddedId
  20 + private ControleMigracaoId id;
  21 +
  22 + @Temporal(TemporalType.TIMESTAMP)
  23 + @Column(name = "DT_ULTIMA_ALTERACAO_CONTROLE")
  24 + private Date dataUltimaAlteracao;
  25 +
  26 + @Column(name="LG_DOCUMENTO_MIGRACAO_SEI")
  27 + private Integer migrado;
  28 +
  29 + public ControleMigracaoId getId() {
  30 + return id;
  31 + }
  32 +
  33 + public void setId(ControleMigracaoId id) {
  34 + this.id = id;
  35 + }
  36 +
  37 + public Date getDataUltimaAlteracao() {
  38 + return dataUltimaAlteracao;
  39 + }
  40 +
  41 + public void setDataUltimaAlteracao(Date dataUltimaAlteracao) {
  42 + this.dataUltimaAlteracao = dataUltimaAlteracao;
  43 + }
  44 +
  45 + public Integer getMigrado() {
  46 + return migrado;
  47 + }
  48 +
  49 + public void setMigrado(Integer migrado) {
  50 + this.migrado = migrado;
  51 + }
  52 +
  53 + public boolean isProcessoMigrado() {
  54 + return this.migrado == 1 ? true : false;
  55 + }
  56 +}
... ...
src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracaoId.java 0 → 100644
... ... @@ -0,0 +1,61 @@
  1 +package br.gov.ans.integracao.sipar.dao;
  2 +
  3 +import java.io.Serializable;
  4 +
  5 +import javax.persistence.Column;
  6 +import javax.persistence.Embeddable;
  7 +
  8 +@Embeddable
  9 +public class ControleMigracaoId implements Serializable {
  10 +
  11 + private static final long serialVersionUID = 1L;
  12 +
  13 + @Column(name = "CD_SEQ_DOCUMENTO")
  14 + private String numero;
  15 +
  16 + @Column(name = "NR_ANO_DOCUMENTO")
  17 + private String ano;
  18 +
  19 + public ControleMigracaoId() {
  20 + }
  21 +
  22 + public ControleMigracaoId(String numero, String ano) {
  23 + this.numero = numero;
  24 + this.ano = ano;
  25 + }
  26 +
  27 + public String getNumero() {
  28 + return numero;
  29 + }
  30 +
  31 + public void setNumero(String numero) {
  32 + this.numero = numero;
  33 + }
  34 +
  35 + public String getAno() {
  36 + return ano;
  37 + }
  38 +
  39 + public void setAno(String ano) {
  40 + this.ano = ano;
  41 + }
  42 +
  43 + @Override
  44 + public boolean equals(Object obj) {
  45 + if (obj instanceof ControleMigracao) {
  46 + ControleMigracao controleMigracao = (ControleMigracao) obj;
  47 + return (this.numero != null && this.numero.equals(controleMigracao.getId().getNumero()) &&
  48 + this.ano != null && this.ano.equals(controleMigracao.getId().getAno()));
  49 + }
  50 + return false;
  51 + }
  52 +
  53 + @Override
  54 + public int hashCode() {
  55 + final int numeroPrimo = 31;
  56 + int resultado = 1;
  57 + resultado = (numeroPrimo * resultado) + ((this.numero == null) ? 0 : this.numero.hashCode());
  58 + resultado = (numeroPrimo * resultado) + ((this.ano == null) ? 0 : this.ano.hashCode());
  59 + return resultado;
  60 + }
  61 +}
... ...
src/main/java/br/gov/ans/integracao/sipar/dao/DocumentoSipar.java 0 → 100644
... ... @@ -0,0 +1,130 @@
  1 +package br.gov.ans.integracao.sipar.dao;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.EntityResult;
  7 +import javax.persistence.FieldResult;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.NamedNativeQuery;
  10 +import javax.persistence.SqlResultSetMapping;
  11 +
  12 +@Entity
  13 +@SqlResultSetMapping(name="DocumentoSiparMapping", entities={
  14 + @EntityResult(entityClass = DocumentoSipar.class,
  15 + fields = {
  16 + @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"),
  17 + @FieldResult(name = "operadora", column = "CO_OPERADORA"),
  18 + @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"),
  19 + @FieldResult(name = "registro", column = "DT_REGISTRO"),
  20 + @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"),
  21 + @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"),
  22 + @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"),
  23 + @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"),
  24 + @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"),
  25 + @FieldResult(name = "assunto", column = "CO_ASSUNTO")
  26 + })
  27 +})
  28 +@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping",
  29 +query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, "
  30 + + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO "
  31 + + "FROM DBPSIPAR.TB_DOCUMENTO TB "
  32 + + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO "
  33 + + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO "
  34 + + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento "
  35 + + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento "
  36 + + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento")
  37 +public class DocumentoSipar {
  38 + @Id
  39 + private String digito;
  40 + private String operadora;
  41 + private Date emissao;
  42 + private Date registro;
  43 + private String tipo;
  44 + private String resumo;
  45 + private Long orgaoPosse;
  46 + private Long orgaoOrigem;
  47 + private Long orgaoRegistro;
  48 + private Long assunto;
  49 +
  50 + public String getDigito() {
  51 + return digito;
  52 + }
  53 +
  54 + public void setDigito(String digito) {
  55 + this.digito = digito;
  56 + }
  57 +
  58 + public Long getAssunto() {
  59 + return assunto;
  60 + }
  61 +
  62 + public void setAssunto(Long assunto) {
  63 + this.assunto = assunto;
  64 + }
  65 +
  66 + public String getOperadora() {
  67 + return operadora;
  68 + }
  69 +
  70 + public void setOperadora(String operadora) {
  71 + this.operadora = operadora;
  72 + }
  73 +
  74 + public Date getEmissao() {
  75 + return emissao;
  76 + }
  77 +
  78 + public void setEmissao(Date emissao) {
  79 + this.emissao = emissao;
  80 + }
  81 +
  82 + public String getTipo() {
  83 + return tipo;
  84 + }
  85 +
  86 + public void setTipo(String tipo) {
  87 + this.tipo = tipo;
  88 + }
  89 +
  90 + public String getResumo() {
  91 + return resumo;
  92 + }
  93 +
  94 + public void setResumo(String resumo) {
  95 + this.resumo = resumo;
  96 + }
  97 +
  98 + public Long getOrgaoPosse() {
  99 + return orgaoPosse;
  100 + }
  101 +
  102 + public void setOrgaoPosse(Long orgaoPosse) {
  103 + this.orgaoPosse = orgaoPosse;
  104 + }
  105 +
  106 + public Long getOrgaoOrigem() {
  107 + return orgaoOrigem;
  108 + }
  109 +
  110 + public void setOrgaoOrigem(Long orgaoOrigem) {
  111 + this.orgaoOrigem = orgaoOrigem;
  112 + }
  113 +
  114 + public Long getOrgaoRegistro() {
  115 + return orgaoRegistro;
  116 + }
  117 +
  118 + public void setOrgaoRegistro(Long orgaoRegistro) {
  119 + this.orgaoRegistro = orgaoRegistro;
  120 + }
  121 +
  122 + public Date getRegistro() {
  123 + return registro;
  124 + }
  125 +
  126 + public void setRegistro(Date registro) {
  127 + this.registro = registro;
  128 + }
  129 +
  130 +}
... ...
src/main/resources/META-INF/persistence.xml
... ... @@ -7,7 +7,7 @@
7 7  
8 8 <jta-data-source>jdbc/sei-broker</jta-data-source>
9 9  
10   - <class>br.gov.ans.integracao.sei.modelo.DocumentoSipar</class>
  10 + <class>br.gov.ans.integracao.sipar.dao.DocumentoSipar</class>
11 11 <class>br.gov.ans.integracao.sei.modelo.InclusaoDocumento</class>
12 12 <class>br.gov.ans.modelo.LogIntegracaoSistemica</class>
13 13  
... ...
src/main/resources/messages.properties
... ... @@ -32,9 +32,12 @@ erro.persistir.confirmacao.inclusao.documento = Ocorreu um erro ao persistir a c
32 32 erro.processar.conteudo.json = Erro ao processar o conteudo JSON, verifique a formação do JSON e se o envio foi realizado em Base64.
33 33 erro.processo.anexado.nao.infomado = Número do processo a anexar não informado.
34 34 erro.processo.incluir.bloco = Não foi possivel incluir o processo no bloco.
  35 +erro.processo.nao.importado = O processo {0} não foi encontrado nos registros de importação.
35 36 erro.processo.nao.pertence.sei = O processo {0} não pertence ao SEI.
  37 +erro.processo.nao.pertence.sipar = O processo {0} não pertence ao SIPAR.
36 38 erro.processo.relacionado.nao.infomado = É necessário informar o número do processo relacionado.
37 39 erro.processo.sem.documentos = Nenhum documento anexado ao processo {0}.
  40 +erro.processo.sipar.importado = O processo {0} já foi importado para o SEI.
38 41 erro.registrar.exclusao.documento = Erro ao registrar a exclusão do documento {0}.
39 42 erro.registro.inclusao = Ocorreu um erro ao persistir o registro de inclusão.
40 43 erro.relacionar.processo = Ocorreu um erro ao relacionar os processos.
... ...
src/test/java/br/gov/ans/integracao/sei/testes/Base64Decoder.java
... ... @@ -5,7 +5,7 @@ import org.apache.commons.codec.binary.Base64;
5 5  
6 6 public class Base64Decoder {
7 7 public static void main(String[] args) {
8   - String base64 = "eyJudW1lcm9Qcm9jZXNzbyI6IjMzOTEwMDAwMTIzMjAxNzkzIiwKInJhemFvU29jaWFsIjoiQU1JTCBBU1NJU1TKTkNJQSBNyURJQ0EgSU5URVJOQUNJT05BTCBTLkEuIiwKImNucGpPcGVyYWRvcmEiOiIyOTMwOTEyNzAwMDE3OSIsCiJudW1lcm9SZWdpc3Ryb0FucyI6IjMyNjMwNSIsCiJkYXRhUHJvdG9jb2xvIjoiMDEvMDIvMjAxNyIsCiJtZXNJbmljaW9BcGxpY2FjYW8iOiIwNS8yMDE3IiwKImFub0luaWNpb0FwbGljYWNhbyI6IjA0LzIwMTgifQo=";
  8 + String base64 = "PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PlRFU1RFVEVTVEU8L2JvZHk+PC9odG1sPg==";
9 9  
10 10 System.out.println(new String(Base64.decodeBase64(base64)));
11 11 }
... ...
src/test/java/br/gov/ans/integracao/sei/testes/Base64Encoder.java
1 1 package br.gov.ans.integracao.sei.testes;
2 2  
  3 +import java.io.File;
  4 +import java.io.FileInputStream;
  5 +import java.io.IOException;
  6 +
3 7 import org.apache.commons.codec.binary.Base64;
4 8  
5 9 public class Base64Encoder {
6 10  
7   - public static void main(String[] args) {
8   - String string = "{\"conteudo\":\"tentativa 1 &#x000D; tentativa 2 &#13; tentativa 3 \\r tentativa 4 \\n fim! \"}";
9   - System.out.println(string);
10   - System.out.println(Base64.encodeBase64String(string.getBytes()));
  11 + public static void main(String[] args) throws IOException {
  12 + String string = "{\"content\":\"tentativa 1 &#x000D; tentativa 2 &#13; tentativa 3 \\r tentativa 4 \\n fim! <br> teste da tag \"}";
  13 +
  14 +// System.out.println(string);
  15 +
  16 +// System.out.println(Base64.encodeBase64String(string.getBytes()));
  17 + Base64Encoder encoder = new Base64Encoder();
  18 +
  19 + System.out.println(encoder.getBase64("0693609.pdf"));
  20 + System.out.println(encoder.getMD5("0693609.pdf"));
  21 + System.out.println(Base64.encodeBase64String("{\"regAns\":\"363022\",\"razaoSocial\":\"BRADESCO SAUDE E ASSISTENCIA S.A\",\"emailCadop\":\"teste@teste.com\",\"nuCnpj\":\"0000000000\",\"noCargoRepr\":\"Diretor\",\"noRepresentante\":\"André Guimarães\",\"anoInicio\":\"2016\",\"anoFinal\":\"2017\",\"numeroDocumento\":\"00000000\"}".getBytes()));
  22 + }
  23 +
  24 + public String getBase64(String arquivo){
  25 + ClassLoader classLoader = getClass().getClassLoader();
  26 +
  27 + File file = new File(classLoader.getResource(arquivo).getFile());
  28 +
  29 + byte[] bytes = new byte[(int) file.length()];
  30 +
  31 + try {
  32 + FileInputStream fileInputStream = new FileInputStream(file);
  33 + fileInputStream.read(bytes);
  34 + } catch (Exception e) {
  35 + e.printStackTrace();
  36 + }
  37 +
  38 + return Base64.encodeBase64String(bytes);
11 39 }
12 40  
  41 + public String getMD5(String arquivo) throws IOException{
  42 + ClassLoader classLoader = getClass().getClassLoader();
  43 + FileInputStream fis = new FileInputStream(new File(classLoader.getResource(arquivo).getFile()));
  44 + String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
  45 + fis.close();
  46 +
  47 + return md5;
  48 + }
13 49 }
  50 +
... ...
src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java
... ... @@ -6,8 +6,8 @@ import com.jayway.restassured.RestAssured;
6 6  
7 7 public class FunctionalTest {
8 8  
9   - protected final String USUARIO = "desenv_integracao_sei";
10   - protected final String SENHA = "integra_sei_2016";
  9 + protected final String USUARIO = "andre.guimaraes";
  10 + protected final String SENHA = "Merda de senha!";
11 11 protected static final Boolean DESENVOLVIMENTO = false;
12 12  
13 13 @BeforeClass
... ...
src/test/java/br/gov/ans/integracao/sei/testes/SeiBrokerTest.java
... ... @@ -105,12 +105,12 @@ public class SeiBrokerTest extends FunctionalTest{
105 105  
106 106 @Test
107 107 public void AG_consultarDocumentosPorInteressadosTest(){
108   - given().auth().basic(USUARIO, SENHA).accept("application/json").when().get("/363022/documentos").then().statusCode(200);
  108 + given().auth().basic(USUARIO, SENHA).accept("application/json").when().get("/interessados/363022/documentos").then().statusCode(200);
109 109 }
110 110  
111 111 @Test
112   - public void AH_consultarProcessosPorInteressadosTest(){
113   - given().auth().basic(USUARIO, SENHA).accept("application/json").when().get("/363022/processos").then().statusCode(200);
  112 + public void AH_consultarProcessos(){
  113 + given().auth().basic(USUARIO, SENHA).accept("application/json").when().get("/processos").then().statusCode(200);
114 114 }
115 115  
116 116 @Test
... ... @@ -143,7 +143,7 @@ public class SeiBrokerTest extends FunctionalTest{
143 143 given().auth().basic(USUARIO, SENHA).accept("application/json").when().get("/unidades/cotec/codigo").then().statusCode(200);
144 144 }
145 145  
146   - @Test
  146 +// @Test
147 147 public void AP_cancelarDocumentoTest(){
148 148 given()
149 149 .auth()
... ... @@ -381,7 +381,7 @@ public class SeiBrokerTest extends FunctionalTest{
381 381 response.then().statusCode(200);
382 382 }
383 383  
384   -// @Test
  384 +//// @Test
385 385 // public void BL_incluirDocumentoPorArquivoTest() {
386 386 // Response response = given()
387 387 // .auth()
... ... @@ -561,8 +561,10 @@ public class SeiBrokerTest extends FunctionalTest{
561 561 i.setNome("BRADESCO SAUDE E ASSISTENCIA S.A");
562 562 i.setSigla("363022");
563 563 documento.setInteressados(new Interessado[]{i});
564   -
565   - documento.setConteudo(Base64.encodeBase64String("<BR><BR>Tendo em vista que o processo foi criado indevidamente pelo sistema de integração do ressarcimento ao SUS, considera-se encerrado o processo eletrônico, sendo vedada qualquer juntada de novos documentos eletrônicos por meio do SEI.<BR>".getBytes()));
  564 +
  565 + documento.setConteudo("PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PlRFU1RFVEVTVEU8L2JvZHk+PC9odG1sPg==");
  566 +
  567 +// documento.setConteudo(Base64.encodeBase64String("<BR><BR>Tendo em vista que o processo foi criado indevidamente pelo sistema de integração do ressarcimento ao SUS, considera-se encerrado o processo eletrônico, sendo vedada qualquer juntada de novos documentos eletrônicos por meio do SEI.<BR>".getBytes()));
566 568  
567 569 return documento;
568 570 }
... ...