Commit b759774e03d10d3f5a172629642ef0ad0e67563f
1 parent
d8ea19a6
Exists in
master
Novo reource para restauração de template e pom.xml com deploy automatizado pelo Maven
Showing
8 changed files
with
251 additions
and
29 deletions
Show diff stats
.tern-project
1 | -{"ide":{},"libs":["ecma5","browser"],"plugins":{"guess-types":{},"angular":{}}} | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +{ | ||
3 | + "libs": [ | ||
4 | + "ecma5", | ||
5 | + "browser" | ||
6 | + ], | ||
7 | + "plugins": { | ||
8 | + "guess-types": { | ||
9 | + | ||
10 | + }, | ||
11 | + "angular": { | ||
12 | + | ||
13 | + } | ||
14 | + } | ||
15 | +} | ||
3 | \ No newline at end of file | 16 | \ No newline at end of file |
pom.xml
@@ -3,24 +3,66 @@ | @@ -3,24 +3,66 @@ | ||
3 | <modelVersion>4.0.0</modelVersion> | 3 | <modelVersion>4.0.0</modelVersion> |
4 | <groupId>br.gov.ans</groupId> | 4 | <groupId>br.gov.ans</groupId> |
5 | <artifactId>templates-broker</artifactId> | 5 | <artifactId>templates-broker</artifactId> |
6 | - <version>1.0</version> | 6 | + <version>1.2</version> |
7 | <packaging>war</packaging> | 7 | <packaging>war</packaging> |
8 | <name>templates-broker</name> | 8 | <name>templates-broker</name> |
9 | <description>Sistema de gerenciamento de templates.</description> | 9 | <description>Sistema de gerenciamento de templates.</description> |
10 | 10 | ||
11 | - <!-- CONFIGURAR VERSÃO DO JAVA PARA 1.8 --> | ||
12 | <build> | 11 | <build> |
13 | - <plugins> | ||
14 | - <plugin> | ||
15 | - <groupId>org.apache.maven.plugins</groupId> | ||
16 | - <artifactId>maven-compiler-plugin</artifactId> | ||
17 | - <version>3.1</version> | ||
18 | - <configuration> | ||
19 | - <source>1.8</source> | ||
20 | - <target>1.8</target> | ||
21 | - </configuration> | ||
22 | - </plugin> | ||
23 | - </plugins> | 12 | + <plugins> |
13 | + <plugin> | ||
14 | + <groupId>org.wildfly.plugins</groupId> | ||
15 | + <artifactId>wildfly-maven-plugin</artifactId> | ||
16 | + <version>1.0.2.Final</version> | ||
17 | + <configuration> | ||
18 | + <timeout>60000</timeout> | ||
19 | + <username>${username}</username> | ||
20 | + <password>${password}</password> | ||
21 | + <hostname>${hostname}</hostname> | ||
22 | + <port>${port}</port> | ||
23 | + </configuration> | ||
24 | + | ||
25 | + <executions> | ||
26 | + <!-- Remover war implantado --> | ||
27 | + <execution> | ||
28 | + <id>remover-pacote-impantado</id> | ||
29 | + <phase>install</phase> | ||
30 | + <goals> | ||
31 | + <goal>undeploy</goal> | ||
32 | + </goals> | ||
33 | + <configuration> | ||
34 | + <domain> | ||
35 | + <serverGroups> | ||
36 | + <server-group>${domain.group}</server-group> | ||
37 | + </serverGroups> | ||
38 | + </domain> | ||
39 | + <ignoreMissingDeployment>true</ignoreMissingDeployment> | ||
40 | + <match-pattern>${project.name}.*</match-pattern> | ||
41 | + <matchPatternStrategy>fail</matchPatternStrategy> | ||
42 | + </configuration> | ||
43 | + </execution> | ||
44 | + | ||
45 | + <!-- Implantar war --> | ||
46 | + <execution> | ||
47 | + <id>implantar-novo-pacote</id> | ||
48 | + <phase>install</phase> | ||
49 | + <goals> | ||
50 | + <goal>deploy</goal> | ||
51 | + </goals> | ||
52 | + <configuration> | ||
53 | + <runtimeName>${project.name}</runtimeName> | ||
54 | + <deployEnabled>true</deployEnabled> | ||
55 | + <force>true</force> | ||
56 | + <domain> | ||
57 | + <server-groups> | ||
58 | + <server-group>${domain.group}</server-group> | ||
59 | + </server-groups> | ||
60 | + </domain> | ||
61 | + </configuration> | ||
62 | + </execution> | ||
63 | + </executions> | ||
64 | + </plugin> | ||
65 | + </plugins> | ||
24 | </build> | 66 | </build> |
25 | 67 | ||
26 | <dependencies> | 68 | <dependencies> |
src/main/java/br/gov/ans/templates/dao/TemplatesDAO.java
@@ -48,6 +48,29 @@ public class TemplatesDAO { | @@ -48,6 +48,29 @@ public class TemplatesDAO { | ||
48 | return query.getResultList(); | 48 | return query.getResultList(); |
49 | } | 49 | } |
50 | 50 | ||
51 | + @SuppressWarnings("unchecked") | ||
52 | + public List<Template> getTemplatesExcluidos(String filtro, Integer pagina, Integer qtdRegistros){ | ||
53 | + HashMap<String, Object> parametros = new HashMap<String, Object>(); | ||
54 | + StringBuilder sql = new StringBuilder("SELECT t FROM Template t "); | ||
55 | + | ||
56 | + if(StringUtils.isNotBlank(filtro)){ | ||
57 | + sql.append("WHERE upper(t.nome) LIKE upper(:filtro) "); | ||
58 | + parametros.put("filtro", "%"+filtro+"%"); | ||
59 | + } | ||
60 | + | ||
61 | + sql.append(AndOrWhere(sql) + " t.dataExclusao is not null "); | ||
62 | + | ||
63 | + sql.append("order by nome asc "); | ||
64 | + | ||
65 | + Query query = em.createQuery(sql.toString()); | ||
66 | + | ||
67 | + setParametrosQuery(query, parametros); | ||
68 | + | ||
69 | + setPaginacaoQuery(query, pagina, qtdRegistros); | ||
70 | + | ||
71 | + return query.getResultList(); | ||
72 | + } | ||
73 | + | ||
51 | public Long countTemplates(String filtro){ | 74 | public Long countTemplates(String filtro){ |
52 | HashMap<String, Object> parametros = new HashMap<String, Object>(); | 75 | HashMap<String, Object> parametros = new HashMap<String, Object>(); |
53 | StringBuilder sql = new StringBuilder("SELECT count(t) FROM Template t "); | 76 | StringBuilder sql = new StringBuilder("SELECT count(t) FROM Template t "); |
@@ -66,6 +89,24 @@ public class TemplatesDAO { | @@ -66,6 +89,24 @@ public class TemplatesDAO { | ||
66 | return (Long) query.getSingleResult(); | 89 | return (Long) query.getSingleResult(); |
67 | } | 90 | } |
68 | 91 | ||
92 | + public Long countTemplatesExcluidos(String filtro){ | ||
93 | + HashMap<String, Object> parametros = new HashMap<String, Object>(); | ||
94 | + StringBuilder sql = new StringBuilder("SELECT count(t) FROM Template t "); | ||
95 | + | ||
96 | + if(StringUtils.isNotBlank(filtro)){ | ||
97 | + sql.append("WHERE upper(t.nome) LIKE upper(:filtro) "); | ||
98 | + parametros.put("filtro", "%"+filtro+"%"); | ||
99 | + } | ||
100 | + | ||
101 | + sql.append(AndOrWhere(sql) + " t.dataExclusao is not null "); | ||
102 | + | ||
103 | + Query query = em.createQuery(sql.toString()); | ||
104 | + | ||
105 | + setParametrosQuery(query, parametros); | ||
106 | + | ||
107 | + return (Long) query.getSingleResult(); | ||
108 | + } | ||
109 | + | ||
69 | public Template getTemplate(String nome){ | 110 | public Template getTemplate(String nome){ |
70 | HashMap<String, Object> params = new HashMap<String, Object>(); | 111 | HashMap<String, Object> params = new HashMap<String, Object>(); |
71 | params.put("nome", nome); | 112 | params.put("nome", nome); |
@@ -79,6 +120,19 @@ public class TemplatesDAO { | @@ -79,6 +120,19 @@ public class TemplatesDAO { | ||
79 | return resultado.get(0); | 120 | return resultado.get(0); |
80 | } | 121 | } |
81 | 122 | ||
123 | + public Template getTemplateExcluido(String nome){ | ||
124 | + HashMap<String, Object> params = new HashMap<String, Object>(); | ||
125 | + params.put("nome", nome); | ||
126 | + | ||
127 | + List<Template> resultado = dao.executeNamedQuery("Template.recuperarTemplateExcluidoPeloNome", params); | ||
128 | + | ||
129 | + if(resultado.size() < 1){ | ||
130 | + return null; | ||
131 | + } | ||
132 | + | ||
133 | + return resultado.get(0); | ||
134 | + } | ||
135 | + | ||
82 | public String AndOrWhere(StringBuilder sql){ | 136 | public String AndOrWhere(StringBuilder sql){ |
83 | if(sql.toString().contains("WHERE")){ | 137 | if(sql.toString().contains("WHERE")){ |
84 | return "AND"; | 138 | return "AND"; |
src/main/java/br/gov/ans/templates/modelo/Template.java
@@ -29,7 +29,8 @@ import org.hibernate.annotations.Type; | @@ -29,7 +29,8 @@ import org.hibernate.annotations.Type; | ||
29 | @XmlRootElement | 29 | @XmlRootElement |
30 | @Entity | 30 | @Entity |
31 | @Table(schema="ANS_GERAL",name="TB_TEMPLATE_DOCUMENTO") | 31 | @Table(schema="ANS_GERAL",name="TB_TEMPLATE_DOCUMENTO") |
32 | -@NamedQueries({@NamedQuery(name = "Template.recuperarPeloNome", query = "SELECT t FROM Template t WHERE upper(t.nome) = upper(:nome) AND t.dataExclusao is null")}) | 32 | +@NamedQueries({@NamedQuery(name = "Template.recuperarPeloNome", query = "SELECT t FROM Template t WHERE upper(t.nome) = upper(:nome) AND t.dataExclusao is null"), |
33 | + @NamedQuery(name = "Template.recuperarTemplateExcluidoPeloNome", query = "SELECT t FROM Template t WHERE upper(t.nome) = upper(:nome) AND t.dataExclusao is not null")}) | ||
33 | public class Template implements Serializable{ | 34 | public class Template implements Serializable{ |
34 | 35 | ||
35 | private static final long serialVersionUID = 1L; | 36 | private static final long serialVersionUID = 1L; |
src/main/java/br/gov/ans/templates/rest/TemplateResource.java
@@ -81,7 +81,7 @@ public class TemplateResource { | @@ -81,7 +81,7 @@ public class TemplateResource { | ||
81 | * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. | 81 | * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. |
82 | * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template | 82 | * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template |
83 | * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. | 83 | * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. |
84 | - * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template � restrita. | 84 | + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. |
85 | * | 85 | * |
86 | * @apiSuccessExample {json} Success-Response: | 86 | * @apiSuccessExample {json} Success-Response: |
87 | * HTTP/1.1 200 OK | 87 | * HTTP/1.1 200 OK |
@@ -139,7 +139,7 @@ public class TemplateResource { | @@ -139,7 +139,7 @@ public class TemplateResource { | ||
139 | * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template. | 139 | * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template. |
140 | * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template. | 140 | * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template. |
141 | * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template. | 141 | * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template. |
142 | - * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template � restrita. | 142 | + * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template é restrita. |
143 | * | 143 | * |
144 | * @apiSuccessExample {json} Success-Response: | 144 | * @apiSuccessExample {json} Success-Response: |
145 | * HTTP/1.1 200 OK | 145 | * HTTP/1.1 200 OK |
@@ -222,10 +222,10 @@ public class TemplateResource { | @@ -222,10 +222,10 @@ public class TemplateResource { | ||
222 | * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. | 222 | * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. |
223 | * @apiParam (Request Body) {String} nome Identificador do template. | 223 | * @apiParam (Request Body) {String} nome Identificador do template. |
224 | * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. | 224 | * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. |
225 | - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template � restrita. | 225 | + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. |
226 | * | 226 | * |
227 | * @apiExample Exemplo de requisição: | 227 | * @apiExample Exemplo de requisição: |
228 | - * endpoint: [PUT] http://<host>/templates-broker/service/templates/confirmacao-cadastro | 228 | + * endpoint: [POST] http://<host>/templates-broker/service/templates/confirmacao-cadastro |
229 | * | 229 | * |
230 | * body: | 230 | * body: |
231 | * { | 231 | * { |
@@ -286,7 +286,7 @@ public class TemplateResource { | @@ -286,7 +286,7 @@ public class TemplateResource { | ||
286 | * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. | 286 | * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. |
287 | * @apiParam (Request Body) {String} nome Identificador do template. | 287 | * @apiParam (Request Body) {String} nome Identificador do template. |
288 | * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. | 288 | * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. |
289 | - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template � restrita. | 289 | + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. |
290 | * | 290 | * |
291 | * @apiExample Exemplo de requisição: | 291 | * @apiExample Exemplo de requisição: |
292 | * endpoint: [PUT] http://<host>/templates-broker/service/templates/confirmacao-cadastro | 292 | * endpoint: [PUT] http://<host>/templates-broker/service/templates/confirmacao-cadastro |
@@ -610,6 +610,118 @@ public class TemplateResource { | @@ -610,6 +610,118 @@ public class TemplateResource { | ||
610 | return Response.ok().entity(entity).build(); | 610 | return Response.ok().entity(entity).build(); |
611 | } | 611 | } |
612 | 612 | ||
613 | + | ||
614 | + /** | ||
615 | + * @api {delete} /templates/excluidos/:template Recuperar template | ||
616 | + * @apiName undeleteTemplate | ||
617 | + * @apiGroup Template | ||
618 | + * @apiVersion 1.0.0 | ||
619 | + * @apiPermission RO_ADMIN_TEMPLATE | ||
620 | + * | ||
621 | + * @apiDescription Recupera um template excluído. | ||
622 | + * | ||
623 | + * @apiParam (Path Parameters) {String} template Identificador do template | ||
624 | + * | ||
625 | + * @apiExample Exemplo de requisição: | ||
626 | + * curl -X DELETE http://<host>/templates-broker/service/templates/excluidos/admp-template-novo-usuario | ||
627 | + * | ||
628 | + * @apiSuccessExample {json} Success-Response: | ||
629 | + * HTTP/1.1 200 OK | ||
630 | + * | ||
631 | + * @apiErrorExample {json} Error-Response: | ||
632 | + * HTTP/1.1 500 Internal Server Error | ||
633 | + * { | ||
634 | + * "error":"Mensagem de erro." | ||
635 | + * "code":"código do erro" | ||
636 | + * } | ||
637 | + */ | ||
638 | + @DELETE | ||
639 | + @Path("excluidos/{template}") | ||
640 | + @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) | ||
641 | + public Response undeleteTemplate(@PathParam("template") String nomeTemplate) throws ResourceNotFoundException{ | ||
642 | + Template template = getTemplateExcluido(nomeTemplate); | ||
643 | + | ||
644 | + template.setDataExclusao(null); | ||
645 | + | ||
646 | + daoTemplate.merge(template); | ||
647 | + | ||
648 | + return Response.ok().build(); | ||
649 | + } | ||
650 | + | ||
651 | + /** | ||
652 | + * @api {get} /templates Listar templates excluídos | ||
653 | + * @apiName listTemplatesExcluidos | ||
654 | + * @apiGroup Template | ||
655 | + * @apiVersion 1.0.0 | ||
656 | + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE | ||
657 | + * | ||
658 | + * @apiDescription Consulta os templates que foram excluídos. | ||
659 | + * | ||
660 | + * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates. | ||
661 | + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos | ||
662 | + * @apiParam (Query Parameters) {String} [pag = 1] Número da página | ||
663 | + * | ||
664 | + * @apiExample Exemplo de requisição: | ||
665 | + * curl -i http://<host>/templates-broker/service/templates | ||
666 | + * | ||
667 | + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados. | ||
668 | + * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template. | ||
669 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. | ||
670 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template. | ||
671 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de exclusao do template. | ||
672 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template. | ||
673 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. | ||
674 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template | ||
675 | + * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. | ||
676 | + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. | ||
677 | + * | ||
678 | + * @apiSuccessExample {json} Success-Response: | ||
679 | + * HTTP/1.1 200 OK | ||
680 | + * { | ||
681 | + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", | ||
682 | + * "dataCadastro": "2017-03-14T16:57:47.405-03:00", | ||
683 | + * "descricao": "Template de confirmação de cadastro.", | ||
684 | + * "exemplo": "{"fulano":"André Guimarães"}", | ||
685 | + * "nome": "confirmacao-cadastro", | ||
686 | + * "responsavel": "andre.guimaraes", | ||
687 | + * "restrito": false, | ||
688 | + * "dataExclusao":"2017-08-14T16:57:47.405-03:00" | ||
689 | + * } | ||
690 | + * | ||
691 | + * @apiErrorExample {json} Error-Response: | ||
692 | + * HTTP/1.1 500 Internal Server Error | ||
693 | + * { | ||
694 | + * "error":"Mensagem de erro." | ||
695 | + * "code":"código do erro" | ||
696 | + * } | ||
697 | + */ | ||
698 | + @GET | ||
699 | + @Path("excluidos") | ||
700 | + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) | ||
701 | + public Response listTemplatesExcluidos(@QueryParam("filtro") String filtro, @QueryParam("pag") String pagina, @QueryParam("itens") String tamanhoPagina) throws BusinessException, ResourceNotFoundException{ | ||
702 | + List<Template> templates = daoTemplate.getTemplatesExcluidos(filtro, pagina == null? null:parseInt(pagina), tamanhoPagina == null? null : parseInt(tamanhoPagina)); | ||
703 | + | ||
704 | + if(templates.isEmpty()){ | ||
705 | + throw new ResourceNotFoundException(messages.getMessage("templates.nao.encontrados.filtro",filtro)); | ||
706 | + } | ||
707 | + | ||
708 | + GenericEntity<List<Template>> entity = new GenericEntity<List<Template>>(templates){}; | ||
709 | + | ||
710 | + Long totalRegistros = daoTemplate.countTemplatesExcluidos(filtro); | ||
711 | + | ||
712 | + return Response.ok().entity(entity).header("total_registros", totalRegistros).build(); | ||
713 | + } | ||
714 | + | ||
715 | + public Template getTemplateExcluido(String nomeTemplate) throws ResourceNotFoundException{ | ||
716 | + Template template = daoTemplate.getTemplateExcluido(nomeTemplate); | ||
717 | + | ||
718 | + if(template == null){ | ||
719 | + throw new ResourceNotFoundException(messages.getMessage("erro.template.nao.encontrado", nomeTemplate)); | ||
720 | + } | ||
721 | + | ||
722 | + return template; | ||
723 | + } | ||
724 | + | ||
613 | public void registrarHistoricoVersao(Template template){ | 725 | public void registrarHistoricoVersao(Template template){ |
614 | Versao versao = new Versao(template); | 726 | Versao versao = new Versao(template); |
615 | 727 |
src/main/java/br/gov/ans/templates/util/TemplatesUtils.java
@@ -22,7 +22,7 @@ public class TemplatesUtils { | @@ -22,7 +22,7 @@ public class TemplatesUtils { | ||
22 | try{ | 22 | try{ |
23 | return Integer.parseInt(valor); | 23 | return Integer.parseInt(valor); |
24 | }catch(Exception e){ | 24 | }catch(Exception e){ |
25 | - throw new BusinessException("O valor '"+valor+"' não pode ser convertido para int."); | 25 | + throw new BusinessException("O valor '"+valor+"' não pode ser convertido para int."); |
26 | } | 26 | } |
27 | } | 27 | } |
28 | } | 28 | } |
src/main/webapp/api-docs/api_data.js
@@ -434,7 +434,7 @@ define({ "api": [ | @@ -434,7 +434,7 @@ define({ "api": [ | ||
434 | "type": "String", | 434 | "type": "String", |
435 | "optional": false, | 435 | "optional": false, |
436 | "field": "restrito", | 436 | "field": "restrito", |
437 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 437 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
438 | } | 438 | } |
439 | ] | 439 | ] |
440 | } | 440 | } |
@@ -604,7 +604,7 @@ define({ "api": [ | @@ -604,7 +604,7 @@ define({ "api": [ | ||
604 | "type": "String", | 604 | "type": "String", |
605 | "optional": false, | 605 | "optional": false, |
606 | "field": "restrito", | 606 | "field": "restrito", |
607 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 607 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
608 | } | 608 | } |
609 | ] | 609 | ] |
610 | } | 610 | } |
@@ -803,7 +803,7 @@ define({ "api": [ | @@ -803,7 +803,7 @@ define({ "api": [ | ||
803 | "type": "Boolean", | 803 | "type": "Boolean", |
804 | "optional": false, | 804 | "optional": false, |
805 | "field": "template.restrito", | 805 | "field": "template.restrito", |
806 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 806 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
807 | } | 807 | } |
808 | ] | 808 | ] |
809 | }, | 809 | }, |
@@ -1047,7 +1047,7 @@ define({ "api": [ | @@ -1047,7 +1047,7 @@ define({ "api": [ | ||
1047 | "type": "Boolean", | 1047 | "type": "Boolean", |
1048 | "optional": false, | 1048 | "optional": false, |
1049 | "field": "resultado.template.restrito", | 1049 | "field": "resultado.template.restrito", |
1050 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 1050 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
1051 | } | 1051 | } |
1052 | ] | 1052 | ] |
1053 | }, | 1053 | }, |
src/main/webapp/api-docs/api_data.json
@@ -434,7 +434,7 @@ | @@ -434,7 +434,7 @@ | ||
434 | "type": "String", | 434 | "type": "String", |
435 | "optional": false, | 435 | "optional": false, |
436 | "field": "restrito", | 436 | "field": "restrito", |
437 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 437 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
438 | } | 438 | } |
439 | ] | 439 | ] |
440 | } | 440 | } |
@@ -604,7 +604,7 @@ | @@ -604,7 +604,7 @@ | ||
604 | "type": "String", | 604 | "type": "String", |
605 | "optional": false, | 605 | "optional": false, |
606 | "field": "restrito", | 606 | "field": "restrito", |
607 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 607 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
608 | } | 608 | } |
609 | ] | 609 | ] |
610 | } | 610 | } |
@@ -803,7 +803,7 @@ | @@ -803,7 +803,7 @@ | ||
803 | "type": "Boolean", | 803 | "type": "Boolean", |
804 | "optional": false, | 804 | "optional": false, |
805 | "field": "template.restrito", | 805 | "field": "template.restrito", |
806 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 806 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
807 | } | 807 | } |
808 | ] | 808 | ] |
809 | }, | 809 | }, |
@@ -1047,7 +1047,7 @@ | @@ -1047,7 +1047,7 @@ | ||
1047 | "type": "Boolean", | 1047 | "type": "Boolean", |
1048 | "optional": false, | 1048 | "optional": false, |
1049 | "field": "resultado.template.restrito", | 1049 | "field": "resultado.template.restrito", |
1050 | - "description": "<p>Flag identificando se a atualização deste template � restrita.</p>" | 1050 | + "description": "<p>Flag identificando se a atualização deste template é restrita.</p>" |
1051 | } | 1051 | } |
1052 | ] | 1052 | ] |
1053 | }, | 1053 | }, |