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.Objects;
27 import java.util.stream.Collectors;
28 import javax.validation.Valid;
29 import org.onap.sdc.workflow.api.mappers.ActivitySpecDtoMapper;
30 import org.onap.sdc.workflow.api.types.CollectionResponse;
31 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecActionRequest;
32 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecCreateResponse;
33 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecDataResponse;
34 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecRequest;
35 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecResponse;
36 import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity;
37 import org.onap.sdc.workflow.services.ActivitySpecManager;
38 import org.openecomp.sdc.versioning.dao.types.Version;
39 import org.springframework.beans.factory.annotation.Autowired;
40 import org.springframework.beans.factory.annotation.Qualifier;
41 import org.springframework.http.HttpStatus;
42 import org.springframework.http.ResponseEntity;
43 import org.springframework.validation.annotation.Validated;
44 import org.springframework.web.bind.annotation.GetMapping;
45 import org.springframework.web.bind.annotation.PathVariable;
46 import org.springframework.web.bind.annotation.PostMapping;
47 import org.springframework.web.bind.annotation.PutMapping;
48 import org.springframework.web.bind.annotation.RequestBody;
49 import org.springframework.web.bind.annotation.RequestMapping;
50 import org.springframework.web.bind.annotation.RequestParam;
51 import org.springframework.web.bind.annotation.RestController;
53 @RequestMapping(value = "/v1.0/activity-spec")
54 @Api("Activity Specs")
55 @RestController("activitySpecController")
57 public class ActivitySpecController {
59 private final ActivitySpecManager activitySpecManager;
60 private final ActivitySpecDtoMapper activitySpecDtoMapper;
63 public ActivitySpecController(@Qualifier("activitySpecManager") ActivitySpecManager activitySpecManager,
64 ActivitySpecDtoMapper activitySpecDtoMapper) {
65 this.activitySpecManager = activitySpecManager;
66 this.activitySpecDtoMapper = activitySpecDtoMapper;
70 @ApiOperation(value = "List activity specs", responseContainer = "List")
71 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
72 public CollectionResponse<ActivitySpecResponse> list(@ApiParam(value = "List activity specs based on status filter",
73 allowableValues = "Draft,Certified,Deprecated,Deleted") @RequestParam(name = "status", required = false)
74 String versionStatus) {
75 return new CollectionResponse<>(
76 activitySpecManager.list(versionStatus).stream().map(activitySpecDtoMapper::toActivitySpecResponse)
77 .collect(Collectors.toList()));
81 @ApiOperation(value = "Create Activity Spec")
82 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
83 public ResponseEntity<ActivitySpecCreateResponse> create(@Valid @RequestBody ActivitySpecRequest request) {
84 ActivitySpecEntity activitySpec =
85 activitySpecManager.createActivitySpec(activitySpecDtoMapper.fromActivitySpecRequest(request));
86 return new ResponseEntity<>(new ActivitySpecCreateResponse(activitySpec.getId(),
87 Objects.nonNull(activitySpec.getVersion()) ? activitySpec.getVersion().getId() : null),
91 @GetMapping("/{id}/versions/{versionId}")
92 @ApiOperation(value = "Get Activity Spec")
93 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
94 public ActivitySpecDataResponse get(@ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
95 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
97 return activitySpecDtoMapper.toActivitySpecDataResponse(
98 activitySpecManager.get(new ActivitySpecEntity(activitySpecId, new Version(versionId))));
101 @PutMapping("/{id}/versions/{versionId}")
102 @ApiOperation(value = "Update Activity Spec")
103 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
104 public void update(@Valid @RequestBody ActivitySpecRequest request,
105 @ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
106 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
108 ActivitySpecEntity activitySpec = activitySpecDtoMapper.fromActivitySpecRequest(request);
109 activitySpec.setId(activitySpecId);
110 activitySpec.setVersion(new Version(versionId));
112 activitySpecManager.update(activitySpec);
115 @PutMapping("/{id}/versions/{versionId}/actions")
116 @ApiOperation(value = "Actions on a activity spec",
117 notes = "Performs one of the following actions on a activity spec: |" + "CERTIFY: Certifies activity spec.|"
118 + "DEPRECATE: Deprecates activity spec.|" + "DELETE: Deletes activity spec.")
119 @ApiImplicitParam(name = USER_ID_HEADER, required = true, dataType = "string", paramType = "header")
120 public void actOn(@Valid @RequestBody ActivitySpecActionRequest request,
121 @ApiParam(value = "Activity Spec Id") @PathVariable("id") String activitySpecId,
122 @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId")
125 .actOnAction(new ActivitySpecEntity(activitySpecId, new Version(versionId)), request.getAction());