2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.sdc.workflow.api;
19 import static org.onap.sdc.workflow.api.RestParams.USER_ID_HEADER;
20 import static org.onap.sdc.workflow.services.ActivitySpecConstant.VERSION_ID_DEFAULT_VALUE;
22 import io.swagger.annotations.Api;
23 import io.swagger.annotations.ApiImplicitParam;
24 import io.swagger.annotations.ApiOperation;
25 import io.swagger.annotations.ApiParam;
26 import java.util.stream.Collectors;
27 import javax.validation.Valid;
28 import org.onap.sdc.workflow.api.mappers.ActivitySpecDtoMapper;
29 import org.onap.sdc.workflow.api.types.CollectionResponse;
30 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecActionRequest;
31 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecCreateResponse;
32 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecDataResponse;
33 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecRequest;
34 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecResponse;
35 import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity;
36 import org.onap.sdc.workflow.services.ActivitySpecManager;
37 import org.springframework.beans.factory.annotation.Autowired;
38 import org.springframework.beans.factory.annotation.Qualifier;
39 import org.springframework.http.HttpStatus;
40 import org.springframework.http.ResponseEntity;
41 import org.springframework.validation.annotation.Validated;
42 import org.springframework.web.bind.annotation.GetMapping;
43 import org.springframework.web.bind.annotation.PathVariable;
44 import org.springframework.web.bind.annotation.PostMapping;
45 import org.springframework.web.bind.annotation.PutMapping;
46 import org.springframework.web.bind.annotation.RequestBody;
47 import org.springframework.web.bind.annotation.RequestMapping;
48 import org.springframework.web.bind.annotation.RequestParam;
49 import org.springframework.web.bind.annotation.RestController;
51 @RequestMapping(value = "/v1.0/activity-spec")
52 @Api("Activity Specs")
53 @RestController("activitySpecController")
55 public class ActivitySpecController {
57 private final ActivitySpecManager activitySpecManager;
58 private final ActivitySpecDtoMapper activitySpecDtoMapper;
61 public ActivitySpecController(@Qualifier("activitySpecManager") ActivitySpecManager activitySpecManager,
62 ActivitySpecDtoMapper activitySpecDtoMapper) {
63 this.activitySpecManager = activitySpecManager;
64 this.activitySpecDtoMapper = activitySpecDtoMapper;
68 @ApiOperation(value = "List activity specs", responseContainer = "List")
69 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
70 public CollectionResponse<ActivitySpecResponse> list(@ApiParam(value = "List activity specs based on status filter",
71 allowableValues = "Draft,Certified,Deprecated,Deleted") @RequestParam(name = "status", required = false)
72 String versionStatus) {
73 return new CollectionResponse<>(
74 activitySpecManager.list(versionStatus).stream().map(activitySpecDtoMapper::toActivitySpecResponse)
75 .collect(Collectors.toList()));
79 @ApiOperation(value = "Create Activity Spec")
80 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
81 public ResponseEntity<ActivitySpecCreateResponse> create(@Valid @RequestBody ActivitySpecRequest request) {
82 ActivitySpecEntity activitySpec =
83 activitySpecManager.createActivitySpec(activitySpecDtoMapper.fromActivitySpecRequest(request));
84 return new ResponseEntity<>(new ActivitySpecCreateResponse(activitySpec.getId(),activitySpec.getVersionId()),
88 @GetMapping("/{id}/versions/{versionId}")
89 @ApiOperation(value = "Get Activity Spec")
90 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
91 public ActivitySpecDataResponse get(@ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
92 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
94 return activitySpecDtoMapper.toActivitySpecDataResponse(
95 activitySpecManager.get(new ActivitySpecEntity(activitySpecId, versionId)));
98 @PutMapping("/{id}/versions/{versionId}")
99 @ApiOperation(value = "Update Activity Spec")
100 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
101 public void update(@Valid @RequestBody ActivitySpecRequest request,
102 @ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
103 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
105 ActivitySpecEntity activitySpec = activitySpecDtoMapper.fromActivitySpecRequest(request);
106 activitySpec.setId(activitySpecId);
107 activitySpec.setVersionId(versionId);
109 activitySpecManager.update(activitySpec);
112 @PutMapping("/{id}/versions/{versionId}/actions")
113 @ApiOperation(value = "Actions on a activity spec",
114 notes = "Performs one of the following actions on a activity spec: |" + "CERTIFY: Certifies activity spec.|"
115 + "DEPRECATE: Deprecates activity spec.|" + "DELETE: Deletes activity spec.")
116 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
117 public void actOn(@Valid @RequestBody ActivitySpecActionRequest request,
118 @ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
119 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
122 .actOnAction(new ActivitySpecEntity(activitySpecId, versionId), request.getAction());