6e7f9cdbc2b8516cd771b22734b946a7748e2781
[sdc.git] /
1 package org.openecomp.sdcrests.vsp.rest.services;
2
3 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
4 import org.openecomp.core.enrichment.types.MonitoringUploadType;
5 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
6 import org.openecomp.sdc.common.errors.Messages;
7 import org.openecomp.sdc.logging.api.Logger;
8 import org.openecomp.sdc.logging.api.LoggerFactory;
9 import org.openecomp.sdc.logging.context.MdcUtil;
10 import org.openecomp.sdc.logging.messages.AuditMessages;
11 import org.openecomp.sdc.logging.types.LoggerServiceName;
12 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
13 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
14 import org.openecomp.sdc.vendorsoftwareproduct.MonitoringUploadsManager;
15 import org.openecomp.sdc.vendorsoftwareproduct.MonitoringUploadsManagerFactory;
16 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.MonitoringUploadStatus;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.MonitoringUploadStatusDto;
19 import org.openecomp.sdcrests.vsp.rest.ComponentMonitoringUploads;
20 import org.openecomp.sdcrests.vsp.rest.mapping.MapMonitoringUploadStatusToDto;
21 import org.springframework.context.annotation.Scope;
22 import org.springframework.stereotype.Service;
23
24 import javax.inject.Named;
25 import javax.ws.rs.core.Response;
26 import java.io.InputStream;
27
28 /**
29  * @author katyr
30  * @since June 26, 2017
31  */
32
33 @Named
34 @Service("componentMonitoringUploads")
35 @Scope(value = "prototype")
36 //@Validated
37 public class ComponentMonitoringUploadsImpl implements ComponentMonitoringUploads {
38   private MonitoringUploadsManager
39       monitoringUploadsManager = MonitoringUploadsManagerFactory.getInstance().createInterface();
40   private ComponentManager componentManager =
41       ComponentManagerFactory.getInstance().createInterface();
42   private static final Logger logger =
43       LoggerFactory.getLogger(ComponentMonitoringUploadsImpl.class);
44
45   @Override
46   public Response upload(Attachment attachment,
47                          String vspId, String versionId, String componentId, String type,
48                          String user) throws Exception {
49     MdcUtil.initMdc(LoggerServiceName.Upload_Monitoring_Artifact.toString());
50     logger.audit(AuditMessages.AUDIT_MSG + String.format(AuditMessages
51         .UPLOAD_MONITORING_FILE, type, vspId, componentId));
52
53     Version version = new Version(versionId);
54     componentManager.validateComponentExistence(vspId, version, componentId);
55
56     MonitoringUploadType monitoringUploadType = getMonitoringUploadType(vspId, componentId, type);
57     monitoringUploadsManager.upload(attachment.getObject(InputStream.class),
58         attachment.getContentDisposition().getParameter("filename"), vspId, version, componentId,
59         monitoringUploadType);
60     return Response.ok().build();
61   }
62
63   private MonitoringUploadType getMonitoringUploadType(String vspId, String componentId,
64                                                        String type) throws Exception {
65     MonitoringUploadType monitoringUploadType;
66     try {
67       monitoringUploadType = MonitoringUploadType.valueOf(type);
68     } catch (IllegalArgumentException exception) {
69       String errorWithParameters = ErrorMessagesFormatBuilder
70           .getErrorWithParameters(Messages.ILLEGAL_MONITORING_ARTIFACT_TYPE.getErrorMessage(),
71               componentId, vspId);
72       throw new Exception(errorWithParameters, exception);
73     }
74     return monitoringUploadType;
75   }
76
77   @Override
78   public Response delete(String vspId, String versionId, String componentId,
79                          String type, String user) throws Exception {
80     MdcUtil.initMdc(LoggerServiceName.Delete_Monitoring_Artifact.toString());
81
82     MonitoringUploadType monitoringUploadType = getMonitoringUploadType(vspId, componentId, type);
83
84     Version version = new Version(versionId);
85     componentManager.validateComponentExistence(vspId, version, componentId);
86     monitoringUploadsManager.delete(vspId, version, componentId, monitoringUploadType);
87     return Response.ok().build();
88   }
89
90   @Override
91   public Response list(String vspId, String versionId, String componentId,
92                        String user) {
93     MdcUtil.initMdc(LoggerServiceName.List_Monitoring_Artifacts.toString());
94
95     Version version = new Version(versionId);
96     componentManager.validateComponentExistence(vspId, version, componentId);
97
98     MonitoringUploadStatus response =
99         monitoringUploadsManager.listFilenames(vspId, version, componentId);
100
101     MonitoringUploadStatusDto returnEntity =
102         new MapMonitoringUploadStatusToDto()
103             .applyMapping(response, MonitoringUploadStatusDto.class);
104     return Response.status(Response.Status.OK).entity(returnEntity).build();
105   }
106 }