0570ac8532cdf649b3e48509d6a51c920612e46e
[sdc/sdc-workflow-designer.git] /
1 package org.onap.sdc.workflow.api.impl;
2
3 import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
4
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;
25
26 @RestController("workflowsVersionController")
27 public class WorkflowVersionControllerImpl implements WorkflowVersionController {
28
29     private final WorkflowVersionManager workflowVersionManager;
30
31     @Autowired
32     public WorkflowVersionControllerImpl(@Qualifier("workflowVersionManager") WorkflowVersionManager workflowVersionManager) {
33         this.workflowVersionManager = workflowVersionManager;
34     }
35
36     @Override
37     public CollectionWrapper<WorkflowVersion> list(@PathVariable("workflowId") String workflowId,
38                       @RequestHeader(USER_ID_HEADER_PARAM) String user) {
39         return new CollectionWrapper<>(workflowVersionManager.list(workflowId));
40     }
41
42     @Override
43     public ResponseEntity<WorkflowVersion> create(@PathVariable("workflowId") String workflowId,@RequestBody VersionRequestDto versionRequest,
44             @RequestHeader(USER_ID_HEADER_PARAM) String user) {
45
46         WorkflowVersion createdVersion = workflowVersionManager.create(workflowId, versionRequest);
47         return new ResponseEntity<>(createdVersion, HttpStatus.CREATED);
48     }
49
50     @Override
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);
54     }
55
56     @Override
57     public void update(@RequestBody WorkflowVersion version,@PathVariable("workflowId") String workflowId,
58             @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
59
60         version.setId(versionId);
61         workflowVersionManager.update(workflowId,version);
62     }
63
64     @Override
65     public void createArtifact(@RequestBody MultipartFile fileToUpload, @PathVariable("workflowId") String workflowId,
66             @PathVariable("versionId") String versionId,@RequestHeader(USER_ID_HEADER_PARAM) String user) {
67
68             workflowVersionManager.uploadArtifact(workflowId,new WorkflowVersion(versionId),fileToUpload);
69
70     }
71
72     @Override
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);
77
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()));
82     }
83
84     @Override
85     public void deleteArtifact(@PathVariable("workflowId") String workflowId, @PathVariable("versionId") String versionId,
86             @RequestHeader(USER_ID_HEADER_PARAM) String user) {
87
88     }
89 }