Removed reference to MDC for logging
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / vendor-software-products-rest / vendor-software-products-rest-services / src / main / java / org / openecomp / sdcrests / vsp / rest / services / ComponentProcessesImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdcrests.vsp.rest.services;
22
23 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
24 import org.openecomp.sdc.activitylog.ActivityLogManager;
25 import org.openecomp.sdc.activitylog.ActivityLogManagerFactory;
26 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
27 import org.openecomp.sdc.activitylog.dao.type.ActivityType;
28 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
29 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
30 import org.openecomp.sdc.vendorsoftwareproduct.ProcessManager;
31 import org.openecomp.sdc.vendorsoftwareproduct.ProcessManagerFactory;
32 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
33 import org.openecomp.sdc.versioning.dao.types.Version;
34 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessEntityDto;
35 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessRequestDto;
36 import org.openecomp.sdcrests.vsp.rest.ComponentProcesses;
37 import org.openecomp.sdcrests.vsp.rest.mapping.MapProcessEntityToProcessEntityDto;
38 import org.openecomp.sdcrests.vsp.rest.mapping.MapProcessRequestDtoToProcessEntity;
39 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
40 import org.openecomp.sdcrests.wrappers.StringWrapperResponse;
41 import org.springframework.context.annotation.Scope;
42 import org.springframework.stereotype.Service;
43
44 import javax.inject.Named;
45 import javax.ws.rs.core.Response;
46 import java.io.File;
47 import java.io.InputStream;
48 import java.util.Collection;
49
50 @Named
51 @Service("componentProcesses")
52 @Scope(value = "prototype")
53 public class ComponentProcessesImpl implements ComponentProcesses {
54
55   private ProcessManager processManager = ProcessManagerFactory.getInstance().createInterface();
56   private ComponentManager componentManager =
57       ComponentManagerFactory.getInstance().createInterface();
58   private ActivityLogManager activityLogManager =
59       ActivityLogManagerFactory.getInstance().createInterface();
60
61   @Override
62   public Response list(String vspId, String versionId, String componentId, String user) {
63
64     Version version = new Version(versionId);
65     validateComponentExistence(vspId, version, componentId, user);
66     Collection<ProcessEntity> processes = processManager.listProcesses(vspId, version, componentId);
67
68     MapProcessEntityToProcessEntityDto mapper = new MapProcessEntityToProcessEntityDto();
69     GenericCollectionWrapper<ProcessEntityDto> results = new GenericCollectionWrapper<>();
70     for (ProcessEntity process : processes) {
71       results.add(mapper.applyMapping(process, ProcessEntityDto.class));
72     }
73
74     return Response.ok(results).build();
75   }
76
77   @Override
78   public Response deleteList(String vspId, String versionId, String componentId, String user) {
79
80     Version version = new Version(versionId);
81     validateComponentExistence(vspId, version, componentId, user);
82     processManager.deleteProcesses(vspId, version, componentId);
83
84     return Response.ok().build();
85   }
86
87   @Override
88   public Response create(ProcessRequestDto request, String vspId, String versionId,
89                          String componentId, String user) {
90
91     ProcessEntity process =
92         new MapProcessRequestDtoToProcessEntity().applyMapping(request, ProcessEntity.class);
93     process.setVspId(vspId);
94     process.setVersion(new Version(versionId));
95     process.setComponentId(componentId);
96
97     validateComponentExistence(vspId, process.getVersion(), componentId, user);
98     ProcessEntity createdProcess = processManager.createProcess(process);
99
100     return Response
101         .ok(createdProcess != null ? new StringWrapperResponse(createdProcess.getId()) : null)
102         .build();
103   }
104
105   @Override
106   public Response get(String vspId, String versionId, String componentId, String processId,
107                       String user) {
108
109     Version version = new Version(versionId);
110     validateComponentExistence(vspId, version, componentId, user);
111     ProcessEntity process = processManager.getProcess(vspId, version, componentId, processId);
112     ProcessEntityDto result =
113         new MapProcessEntityToProcessEntityDto().applyMapping(process, ProcessEntityDto.class);
114     return Response.ok(result).build();
115   }
116
117   @Override
118   public Response delete(String vspId, String versionId, String componentId, String processId,
119                          String user) {
120
121     Version version = new Version(versionId);
122     validateComponentExistence(vspId, version, componentId, user);
123     processManager.deleteProcess(vspId, version, componentId, processId);
124     return Response.ok().build();
125   }
126
127   @Override
128   public Response update(ProcessRequestDto request, String vspId, String versionId,
129                          String componentId,
130                          String processId, String user) {
131
132     ProcessEntity process =
133         new MapProcessRequestDtoToProcessEntity().applyMapping(request, ProcessEntity.class);
134     process.setVspId(vspId);
135     process.setVersion(new Version(versionId));
136     process.setComponentId(componentId);
137     process.setId(processId);
138     validateComponentExistence(vspId, process.getVersion(), componentId, user);
139     processManager.updateProcess(process);
140     return Response.ok().build();
141   }
142
143   @Override
144   public Response getUploadedFile(String vspId, String versionId, String componentId,
145                                   String processId, String user) {
146
147     Version vspVersion = new Version(versionId);
148     validateComponentExistence(vspId, vspVersion, componentId, user);
149     File file = processManager.getProcessArtifact(vspId, vspVersion, componentId, processId);
150
151     Response.ResponseBuilder response = Response.ok(file);
152     if (file == null) {
153       return Response.status(Response.Status.NOT_FOUND).build();
154     }
155     response.header("Content-Disposition", "attachment; filename=" + file.getName());
156     return response.build();
157   }
158
159   @Override
160   public Response deleteUploadedFile(String vspId, String versionId, String componentId,
161                                      String processId,
162                                      String user) {
163
164     Version version = new Version(versionId);
165     validateComponentExistence(vspId, version, componentId, user);
166     processManager.deleteProcessArtifact(vspId, version, componentId, processId);
167     return Response.ok().build();
168   }
169
170   @Override
171   public Response uploadFile(Attachment attachment, String vspId, String versionId,
172                              String componentId,
173                              String processId, String user) {
174
175     Version version = new Version(versionId);
176     validateComponentExistence(vspId, version, componentId, user);
177     processManager.uploadProcessArtifact(attachment.getObject(InputStream.class),
178         attachment.getContentDisposition().getParameter("filename"), vspId, version, componentId,
179         processId);
180
181
182     activityLogManager.logActivity(new ActivityLogEntity(vspId, version,
183         ActivityType.Upload_Artifact, user, true, "", ""));
184
185     return Response.ok().build();
186   }
187
188
189   private void validateComponentExistence(String vspId, Version version, String componentId,
190                                           String user) {
191     if (componentId == null) {
192       return;
193     }
194     componentManager.validateComponentExistence(vspId, version, componentId);
195   }
196 }