From ce6e4752dfe47fe2dedf705cb57cac8509d6edc4 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Wed, 15 Nov 2023 13:50:52 -0500 Subject: [PATCH] added template API --- .../inteligr8/activiti/api/ExecutionApi.java | 2 +- .../alfresco/activiti/api/TemplatesApi.java | 132 ++++++++++++++++++ .../activiti/api/TemplatesCxfApi.java | 50 +++++++ .../activiti/api/TemplatesJerseyApi.java | 50 +++++++ .../activiti/model/BaseTemplateLight.java | 64 +++++++++ .../activiti/model/DocumentTemplateLight.java | 42 ++++++ .../activiti/model/EmailTemplate.java | 22 +++ .../activiti/model/EmailTemplateLight.java | 32 +++++ 8 files changed, 393 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesApi.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesCxfApi.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesJerseyApi.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/BaseTemplateLight.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/DocumentTemplateLight.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplate.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplateLight.java diff --git a/src/main/java/com/inteligr8/activiti/api/ExecutionApi.java b/src/main/java/com/inteligr8/activiti/api/ExecutionApi.java index df99322..b7c27b7 100644 --- a/src/main/java/com/inteligr8/activiti/api/ExecutionApi.java +++ b/src/main/java/com/inteligr8/activiti/api/ExecutionApi.java @@ -163,7 +163,7 @@ public interface ExecutionApi { @GET @Produces({ MediaType.APPLICATION_JSON }) - public ResultList getByAny( + ResultList getByAny( @QueryParam("id") String executionId, @QueryParam("activityId") String activityId, @QueryParam("processDefinitionKey") String processDefinitionKey, diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesApi.java new file mode 100644 index 0000000..95adc94 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesApi.java @@ -0,0 +1,132 @@ +/* + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package com.inteligr8.alfresco.activiti.api; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import com.inteligr8.activiti.model.ResultList; +import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight; +import com.inteligr8.alfresco.activiti.model.EmailTemplate; +import com.inteligr8.alfresco.activiti.model.EmailTemplateLight; + +/** + * This is an undocumented API. + * + * @author brian@inteligr8.com + */ +@Path("/app/rest") +public interface TemplatesApi { + + @GET + @Path("email-templates/system") + @Produces({ MediaType.APPLICATION_JSON }) + public ResultList getSystemEmailTemplates( + @QueryParam("tenantId") Integer tenantId); + + @GET + @Path("email-templates/custom") + @Produces({ MediaType.APPLICATION_JSON }) + public ResultList getCustomEmailTemplates( + @QueryParam("nameFilter") String nameFilter, + @QueryParam("start") Integer start, + @QueryParam("size") Integer size, + @QueryParam("sort") String sort, + @QueryParam("tenantId") Integer tenantId); + + @GET + @Path("email-templates/custom/{templateName}") + @Produces({ MediaType.APPLICATION_JSON }) + public EmailTemplate getSystemEmailTemplate( + @PathParam("templateName") String name, + @QueryParam("tenantId") Integer tenantId); + + @GET + @Path("email-templates/custom/{templateId}") + @Produces({ MediaType.APPLICATION_JSON }) + public EmailTemplate getCustomEmailTemplate( + @PathParam("templateId") int id, + @QueryParam("tenantId") Integer tenantId); + + @POST + @Path("email-templates/custom") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + public EmailTemplateLight createCustomEmailTemplate( + EmailTemplate template); + + @PUT + @Path("email-templates/custom/{templateName}") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + public EmailTemplate updateSystemEmailTemplate( + @PathParam("templateName") String name, + EmailTemplate template); + + @PUT + @Path("email-templates/custom/{templateId}") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + public EmailTemplate updateCustomEmailTemplate( + @PathParam("templateId") int id, + EmailTemplate template); + + @DELETE + @Path("email-templates/custom/{templateId}") + public void deleteCustomEmailTemplate( + @PathParam("templateId") int id, + @QueryParam("tenantId") Integer tenantId); + + + + @GET + @Path("document-templates") + @Produces({ MediaType.APPLICATION_JSON }) + public ResultList getDocumentTemplates( + @QueryParam("nameFilter") String nameFilter, + @QueryParam("start") Integer start, + @QueryParam("size") Integer size, + @QueryParam("sort") String sort, + @QueryParam("tenantId") Integer tenantId); + + default Response getDocumentTemplate( + DocumentTemplateLight template) { + return this.getDocumentTemplate(template.getCreated().toInstant().toEpochMilli()); + } + + @GET + @Path("document-templates/{templateId}/file") + @Produces({ + "application/msword", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "application/vnd.openxmlformats-officedocument.wordprocessingml.template" + }) + public Response getDocumentTemplate( + @QueryParam("version") long version); + + @DELETE + @Path("document-templates/{templateId}") + public void deleteDocumentTemplate(); + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesCxfApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesCxfApi.java new file mode 100644 index 0000000..d777c58 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesCxfApi.java @@ -0,0 +1,50 @@ +/* + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package com.inteligr8.alfresco.activiti.api; + +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight; +import com.inteligr8.alfresco.activiti.model.FileMultipartCxf; + +/** + * This is an undocumented API. + * + * @author brian@inteligr8.com + */ +@Path("/app/rest") +public interface TemplatesCxfApi extends TemplatesApi { + + @POST + @Path("admin/document-templates") + @Produces({ MediaType.APPLICATION_JSON }) + public DocumentTemplateLight createDocumentTemplate( + @QueryParam("tenantId") Integer tenantId, + FileMultipartCxf file); + + @POST + @Path("admin/document-templates/{templateId}") + @Produces({ MediaType.APPLICATION_JSON }) + public DocumentTemplateLight updateDocumentTemplate( + @PathParam("templateId") int id, + @QueryParam("tenantId") Integer tenantId, + FileMultipartCxf file); + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesJerseyApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesJerseyApi.java new file mode 100644 index 0000000..8c10666 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/TemplatesJerseyApi.java @@ -0,0 +1,50 @@ +/* + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package com.inteligr8.alfresco.activiti.api; + +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +import com.inteligr8.alfresco.activiti.model.DocumentTemplateLight; +import com.inteligr8.alfresco.activiti.model.FileMultipartJersey; + +/** + * This is an undocumented API. + * + * @author brian@inteligr8.com + */ +@Path("/app/rest") +public interface TemplatesJerseyApi extends TemplatesApi { + + @POST + @Path("admin/document-templates") + @Produces({ MediaType.APPLICATION_JSON }) + public DocumentTemplateLight createDocumentTemplate( + @QueryParam("tenantId") Integer tenantId, + FileMultipartJersey file); + + @POST + @Path("admin/document-templates/{templateId}") + @Produces({ MediaType.APPLICATION_JSON }) + public DocumentTemplateLight updateDocumentTemplate( + @PathParam("templateId") int id, + @QueryParam("tenantId") Integer tenantId, + FileMultipartJersey file); + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/BaseTemplateLight.java b/src/main/java/com/inteligr8/alfresco/activiti/model/BaseTemplateLight.java new file mode 100644 index 0000000..3220e27 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/BaseTemplateLight.java @@ -0,0 +1,64 @@ +package com.inteligr8.alfresco.activiti.model; + +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BaseTemplateLight { + + @JsonProperty + private Integer id; + @JsonProperty(required = true) + private String name; + @JsonProperty + private OffsetDateTime created; + @JsonProperty + private UserLight createdBy; + @JsonProperty + private Integer tenantId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public OffsetDateTime getCreated() { + return created; + } + + public void setCreated(OffsetDateTime created) { + this.created = created; + } + + public UserLight getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(UserLight createdBy) { + this.createdBy = createdBy; + } + + public Integer getTenantId() { + return tenantId; + } + + public void setTenantId(Integer tenantId) { + this.tenantId = tenantId; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/DocumentTemplateLight.java b/src/main/java/com/inteligr8/alfresco/activiti/model/DocumentTemplateLight.java new file mode 100644 index 0000000..e3681d6 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/DocumentTemplateLight.java @@ -0,0 +1,42 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DocumentTemplateLight extends BaseTemplateLight { + + @JsonProperty + private Integer modelId; + @JsonProperty + private String mimeType; + @JsonProperty + private String simpleType; + + public Integer getModelId() { + return modelId; + } + + public void setModelId(Integer modelId) { + this.modelId = modelId; + } + + public String getMimeType() { + return mimeType; + } + + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } + + public String getSimpleType() { + return simpleType; + } + + public void setSimpleType(String simpleType) { + this.simpleType = simpleType; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplate.java b/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplate.java new file mode 100644 index 0000000..636e195 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplate.java @@ -0,0 +1,22 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class EmailTemplate extends EmailTemplateLight { + + @JsonProperty + private String template; + + public String getTemplate() { + return template; + } + + public void setTemplate(String template) { + this.template = template; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplateLight.java b/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplateLight.java new file mode 100644 index 0000000..81d74b4 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/EmailTemplateLight.java @@ -0,0 +1,32 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class EmailTemplateLight extends BaseTemplateLight { + + @JsonProperty + private String systemTemplateId; + @JsonProperty + private String subject; + + public String getSystemTemplateId() { + return systemTemplateId; + } + + public void setSystemTemplateId(String systemTemplateId) { + this.systemTemplateId = systemTemplateId; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + +}