From 421ed48f3ebc6fb3b15a50a1cf0c93e7796e8414 Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Sun, 11 Jul 2021 18:45:23 -0700 Subject: [PATCH] Added template model service --- .../tenant/model/AbstractProcedure.java | 10 +- .../controller/ProcedureController.java | 10 ++ .../controller/TemplateController.java | 97 ++++++++++++++ .../management/model/Template.java | 13 +- .../model/request/TemplateRequest.java | 28 ++++ .../repository/TemplateRepository.java | 9 ++ .../repository/TemplateRepositoryDao.java | 27 ++++ .../management/service/ProcedureService.java | 25 +++- .../management/service/TemplateService.java | 122 ++++++++++++++++++ 9 files changed, 325 insertions(+), 16 deletions(-) create mode 100644 trackerforce-management/src/main/java/com/trackerforce/management/controller/TemplateController.java create mode 100644 trackerforce-management/src/main/java/com/trackerforce/management/model/request/TemplateRequest.java create mode 100644 trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepository.java create mode 100644 trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepositoryDao.java create mode 100644 trackerforce-management/src/main/java/com/trackerforce/management/service/TemplateService.java diff --git a/trackerforce-common-tenancy/src/main/java/com/trackerforce/common/tenant/model/AbstractProcedure.java b/trackerforce-common-tenancy/src/main/java/com/trackerforce/common/tenant/model/AbstractProcedure.java index ede519a..81a70c0 100644 --- a/trackerforce-common-tenancy/src/main/java/com/trackerforce/common/tenant/model/AbstractProcedure.java +++ b/trackerforce-common-tenancy/src/main/java/com/trackerforce/common/tenant/model/AbstractProcedure.java @@ -1,7 +1,6 @@ package com.trackerforce.common.tenant.model; -import java.util.Collections; -import java.util.List; +import java.util.LinkedList; import org.springframework.data.mongodb.core.mapping.DBRef; @@ -20,13 +19,16 @@ public abstract class AbstractProcedure extends AbstractBusinessDocument { protected String procedureMngmtId; @DBRef - protected List tasks = Collections.emptyList(); + protected LinkedList tasks; public String getName() { return name; } - public List getTasks() { + public LinkedList getTasks() { + if (tasks == null) + tasks = new LinkedList<>(); + return tasks; } diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/controller/ProcedureController.java b/trackerforce-management/src/main/java/com/trackerforce/management/controller/ProcedureController.java index e9c7e3b..23dee4c 100644 --- a/trackerforce-management/src/main/java/com/trackerforce/management/controller/ProcedureController.java +++ b/trackerforce-management/src/main/java/com/trackerforce/management/controller/ProcedureController.java @@ -1,5 +1,6 @@ package com.trackerforce.management.controller; +import java.util.LinkedList; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; @@ -17,6 +18,7 @@ import com.trackerforce.common.model.response.ErrorResponse; import com.trackerforce.common.service.exception.ServiceException; +import com.trackerforce.common.tenant.model.AbstractTask; import com.trackerforce.management.model.Task; import com.trackerforce.management.model.request.ProcedureRequest; import com.trackerforce.management.service.ProcedureService; @@ -64,6 +66,14 @@ public ResponseEntity update( } } + @PostMapping(value = "/v1/{id}/task/reorder") + public ResponseEntity> reorderTask( + @PathVariable(value="id") String id, + @RequestParam(required = true) int from, + @RequestParam(required = true) int to) { + return ResponseEntity.ok(procedureService.reorderTask(id, from, to)); + } + @PostMapping(value = "/v1/{id}/task/add/{taskId}") public ResponseEntity addTask( @PathVariable(value="id") String id, diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/controller/TemplateController.java b/trackerforce-management/src/main/java/com/trackerforce/management/controller/TemplateController.java new file mode 100644 index 0000000..95859c4 --- /dev/null +++ b/trackerforce-management/src/main/java/com/trackerforce/management/controller/TemplateController.java @@ -0,0 +1,97 @@ +package com.trackerforce.management.controller; + +import java.util.LinkedList; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.trackerforce.common.model.response.ErrorResponse; +import com.trackerforce.common.service.exception.ServiceException; +import com.trackerforce.common.tenant.model.AbstractProcedure; +import com.trackerforce.management.model.Procedure; +import com.trackerforce.management.model.request.TemplateRequest; +import com.trackerforce.management.service.TemplateService; + +@CrossOrigin(allowedHeaders = { "X-Tenant" }) +@RestController +@RequestMapping("management/template") +public class TemplateController { + + @Autowired + private TemplateService templateService; + + @PostMapping(value = "/v1/create") + public ResponseEntity create(@RequestBody TemplateRequest templateRequest) { + try { + return ResponseEntity.ok(templateService.create(templateRequest)); + } catch (ServiceException e) { + return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage())); + } + } + + @GetMapping(value = "/v1/") + public ResponseEntity> findAll( + @RequestParam(required = false) String description, + @RequestParam(required = false) String sortBy, + @RequestParam(required = false) String output, + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size) { + return ResponseEntity.ok(templateService.findAllProjectedBy(description, sortBy, output, page, size)); + } + + @GetMapping(value = "/v1/{id}") + public ResponseEntity findOne(@PathVariable(value="id") String id, String output) { + return ResponseEntity.ok(templateService.findByIdProjectedBy(id, output)); + } + + @PatchMapping(value = "/v1/{id}") + public ResponseEntity update( + @PathVariable(value="id") String id, + @RequestBody Map updates) { + try { + return ResponseEntity.ok(templateService.update(id, updates)); + } catch (ServiceException e) { + return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage())); + } + } + + @PostMapping(value = "/v1/{id}/procedure/reorder") + public ResponseEntity> reorderProcedure( + @PathVariable(value="id") String id, + @RequestParam(required = true) int from, + @RequestParam(required = true) int to) { + return ResponseEntity.ok(templateService.reorderProcedure(id, from, to)); + } + + @PostMapping(value = "/v1/{id}/procedure/add/{procedureId}") + public ResponseEntity addProcedure( + @PathVariable(value="id") String id, + @PathVariable(value="procedureId") String procedureId) { + return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, true)); + } + + @PostMapping(value = "/v1/{id}/procedure/remove/{procedureId}") + public ResponseEntity removeProcedure( + @PathVariable(value="id") String id, + @PathVariable(value="procedureId") String procedureId) { + return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, false)); + } + + @DeleteMapping(value = "/v1/{id}") + public ResponseEntity delete(@PathVariable(value="id") String id) { + templateService.delete(id); + return ResponseEntity.ok().build(); + } + +} diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/model/Template.java b/trackerforce-management/src/main/java/com/trackerforce/management/model/Template.java index 223483b..24de2cb 100644 --- a/trackerforce-management/src/main/java/com/trackerforce/management/model/Template.java +++ b/trackerforce-management/src/main/java/com/trackerforce/management/model/Template.java @@ -1,6 +1,6 @@ package com.trackerforce.management.model; -import java.util.List; +import java.util.LinkedList; import org.springframework.data.mongodb.core.mapping.Document; @@ -12,7 +12,7 @@ public class Template extends AbstractBusinessDocument { private String name; - private List procedures; + private LinkedList procedures; public String getName() { return name; @@ -22,12 +22,11 @@ public void setName(String name) { this.name = name; } - public List getProcedures() { + public LinkedList getProcedures() { + if (procedures == null) + procedures = new LinkedList<>(); + return procedures; } - - public void setProcedures(List procedures) { - this.procedures = procedures; - } } diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/model/request/TemplateRequest.java b/trackerforce-management/src/main/java/com/trackerforce/management/model/request/TemplateRequest.java new file mode 100644 index 0000000..f60c292 --- /dev/null +++ b/trackerforce-management/src/main/java/com/trackerforce/management/model/request/TemplateRequest.java @@ -0,0 +1,28 @@ +package com.trackerforce.management.model.request; + +import com.trackerforce.common.tenant.model.ComponentHelper; +import com.trackerforce.management.model.Template; + +public class TemplateRequest { + + private Template template; + + private ComponentHelper helper; + + public Template getTemplate() { + return template; + } + + public void setTemplate(Template procedure) { + this.template = procedure; + } + + public ComponentHelper getHelper() { + return helper; + } + + public void setHelper(ComponentHelper helper) { + this.helper = helper; + } + +} diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepository.java b/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepository.java new file mode 100644 index 0000000..7d6d4fa --- /dev/null +++ b/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepository.java @@ -0,0 +1,9 @@ +package com.trackerforce.management.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import com.trackerforce.management.model.Template; + +public interface TemplateRepository extends MongoRepository { + +} diff --git a/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepositoryDao.java b/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepositoryDao.java new file mode 100644 index 0000000..cffa72e --- /dev/null +++ b/trackerforce-management/src/main/java/com/trackerforce/management/repository/TemplateRepositoryDao.java @@ -0,0 +1,27 @@ +package com.trackerforce.management.repository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import com.trackerforce.common.tenant.repository.AbstractProjectedDao; +import com.trackerforce.management.model.Template; + +@Repository +public class TemplateRepositoryDao extends AbstractProjectedDao