1 package org.onap.sdc.workflow.api.impl;
3 import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
5 import org.onap.sdc.workflow.api.WorkflowVersionController;
6 import org.onap.sdc.workflow.api.types.CollectionWrapper;
7 import org.onap.sdc.workflow.api.types.VersionRequestDto;
8 import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
9 import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
10 import org.onap.sdc.workflow.services.WorkflowVersionManager;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.beans.factory.annotation.Qualifier;
13 import org.springframework.core.io.InputStreamResource;
14 import org.springframework.core.io.Resource;
15 import org.springframework.http.HttpHeaders;
16 import org.springframework.http.HttpStatus;
17 import org.springframework.http.MediaType;
18 import org.springframework.http.ResponseEntity;
19 import org.springframework.web.bind.annotation.PathVariable;
20 import org.springframework.web.bind.annotation.RequestBody;
21 import org.springframework.web.bind.annotation.RequestHeader;
22 import org.springframework.web.bind.annotation.RequestParam;
23 import org.springframework.web.bind.annotation.RestController;
24 import org.springframework.web.multipart.MultipartFile;
26 @RestController("workflowsVersionController")
27 public class WorkflowVersionControllerImpl implements WorkflowVersionController {
29 private final WorkflowVersionManager workflowVersionManager;
32 public WorkflowVersionControllerImpl(@Qualifier("workflowVersionManager") WorkflowVersionManager workflowVersionManager) {
33 this.workflowVersionManager = workflowVersionManager;
37 public CollectionWrapper<WorkflowVersion> list(@PathVariable("workflowId") String workflowId,
38 @RequestHeader(USER_ID_HEADER_PARAM) String user) {
39 return new CollectionWrapper<>(workflowVersionManager.list(workflowId));
43 public ResponseEntity<WorkflowVersion> create(@PathVariable("workflowId") String workflowId,@RequestBody VersionRequestDto versionRequest,
44 @RequestHeader(USER_ID_HEADER_PARAM) String user) {
46 WorkflowVersion createdVersion = workflowVersionManager.create(workflowId, versionRequest);
47 return new ResponseEntity<>(createdVersion, HttpStatus.CREATED);
51 public WorkflowVersion get(@PathVariable("workflowId") String workflowId,@PathVariable("versionId") String versionId,
52 @RequestHeader(USER_ID_HEADER_PARAM) String user) {
53 return workflowVersionManager.get(workflowId,versionId);
57 public void update(@RequestBody WorkflowVersion version,@PathVariable("workflowId") String workflowId,
58 @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
60 version.setId(versionId);
61 workflowVersionManager.update(workflowId,version);
65 public void createArtifact(@RequestBody MultipartFile fileToUpload, @PathVariable("workflowId") String workflowId,
66 @PathVariable("versionId") String versionId,@RequestHeader(USER_ID_HEADER_PARAM) String user) {
68 workflowVersionManager.uploadArtifact(workflowId,new WorkflowVersion(versionId),fileToUpload);
73 public ResponseEntity<Resource> getArtifact(@PathVariable("workflowId") String workflowId,
74 @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
75 WorkflowVersion requestedVersion = new WorkflowVersion(versionId);
76 ArtifactEntity artifact = workflowVersionManager.getArtifact(workflowId, requestedVersion);
78 return ResponseEntity.ok()
79 .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + artifact.getFileName())
80 .contentType(MediaType.APPLICATION_OCTET_STREAM)
81 .body(new InputStreamResource(artifact.getArtifactData()));
85 public void deleteArtifact(@PathVariable("workflowId") String workflowId, @PathVariable("versionId") String versionId,
86 @RequestHeader(USER_ID_HEADER_PARAM) String user) {