2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.impl;
23 import org.openecomp.core.util.UniqueValueUtil;
24 import org.openecomp.core.utilities.file.FileUtils;
25 import org.openecomp.sdc.activityLog.ActivityLogManager;
26 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
27 import org.openecomp.sdc.common.errors.CoreException;
28 import org.openecomp.sdc.datatypes.error.ErrorLevel;
29 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
30 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
31 import org.openecomp.sdc.logging.types.LoggerConstants;
32 import org.openecomp.sdc.logging.types.LoggerErrorCode;
33 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
34 import org.openecomp.sdc.vendorsoftwareproduct.ProcessManager;
35 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants;
36 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
37 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
38 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
39 import org.openecomp.sdc.vendorsoftwareproduct.errors.UploadInvalidErrorBuilder;
40 import org.openecomp.sdc.versioning.VersioningUtil;
41 import org.openecomp.sdc.versioning.dao.types.Version;
42 import org.openecomp.sdcrests.activitylog.types.ActivityType;
45 import java.io.FileOutputStream;
46 import java.io.IOException;
47 import java.io.InputStream;
48 import java.util.Collection;
50 public class ProcessManagerImpl implements ProcessManager {
51 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
52 private ActivityLogManager activityLogManager;
54 private VendorSoftwareProductDao vendorSoftwareProductDao;
56 public ProcessManagerImpl(VendorSoftwareProductDao vendorSoftwareProductDao, ActivityLogManager activityLogManager) {
57 this.vendorSoftwareProductDao = vendorSoftwareProductDao;
58 this.activityLogManager = activityLogManager;
62 public Collection<ProcessEntity> listProcesses(String vspId, Version version,
65 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
66 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
68 return vendorSoftwareProductDao.listProcesses(vspId, version, componentId);
72 public void deleteProcesses(String vspId, Version version, String componentId, String user) {
73 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
75 Collection<ProcessEntity> processes =
76 vendorSoftwareProductDao.listProcesses(vspId, version, componentId);
78 if (!processes.isEmpty()) {
79 for (ProcessEntity process : processes) {
80 deleteUniqueValue(process.getVspId(), process.getVersion(), process.getComponentId(),
84 vendorSoftwareProductDao.deleteProcesses(vspId, version, componentId);
86 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
90 public ProcessEntity createProcess(ProcessEntity process, String user) {
91 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", process.getId(),
92 process.getComponentId());
93 validateUniqueName(process.getVspId(), process.getVersion(), process.getComponentId(),
95 //process.setId(CommonMethods.nextUuId());
97 vendorSoftwareProductDao.createProcess(process);
98 createUniqueName(process.getVspId(), process.getVersion(), process.getComponentId(),
101 mdcDataDebugMessage.debugExitMessage("VSP id, component id", process.getId(),
102 process.getComponentId());
109 public ProcessEntity getProcess(String vspId, Version version, String componentId,
110 String processId, String user) {
111 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
113 ProcessEntity retrieved =
114 vendorSoftwareProductDao.getProcess(vspId, version, componentId, processId);
115 validateProcessExistence(vspId, version, componentId, processId, retrieved);
117 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
123 public void updateProcess(ProcessEntity process, String user) {
124 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", process.getId(),
125 process.getComponentId());
127 ProcessEntity retrieved = vendorSoftwareProductDao
128 .getProcess(process.getVspId(), process.getVersion(), process.getComponentId(),
130 validateProcessExistence(process.getVspId(), process.getVersion(), process.getComponentId(),
131 process.getId(), retrieved);
133 updateUniqueName(process.getVspId(), process.getVersion(), process.getComponentId(),
134 retrieved.getName(), process.getName());
135 vendorSoftwareProductDao.updateProcess(process);
137 mdcDataDebugMessage.debugExitMessage("VSP id, component id", process.getId(),
138 process.getComponentId());
142 public void deleteProcess(String vspId, Version version, String componentId, String processId,
144 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
146 ProcessEntity retrieved =
147 vendorSoftwareProductDao.getProcess(vspId, version, componentId, processId);
148 validateProcessExistence(vspId, version, componentId, processId, retrieved);
150 vendorSoftwareProductDao.deleteProcess(vspId, version, componentId, processId);
151 deleteUniqueValue(retrieved.getVspId(), retrieved.getVersion(), retrieved.getComponentId(),
152 retrieved.getName());
154 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
159 public File getProcessArtifact(String vspId, Version version, String componentId,
160 String processId, String user) {
161 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
163 ProcessEntity retrieved =
164 vendorSoftwareProductDao.getProcessArtifact(vspId, version, componentId, processId);
165 validateProcessArtifactExistence(vspId, version, componentId, processId, retrieved);
167 File file = new File(String.format("%s_%s_%s", vspId, componentId, processId));
169 FileOutputStream fos = new FileOutputStream(file);
170 fos.write(retrieved.getArtifact().array());
172 } catch (IOException exception) {
173 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
174 LoggerTragetServiceName.GET_PROCESS_ARTIFACT, ErrorLevel.ERROR.name(),
175 LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't get process artifact");
176 throw new CoreException(new UploadInvalidErrorBuilder().build());
179 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
185 public void deleteProcessArtifact(String vspId, Version version, String componentId,
186 String processId, String user) {
187 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
189 ProcessEntity retrieved =
190 vendorSoftwareProductDao.getProcessArtifact(vspId, version, componentId, processId);
191 validateProcessArtifactExistence(vspId, version, componentId, processId, retrieved);
193 vendorSoftwareProductDao.deleteProcessArtifact(vspId, version, componentId, processId);
195 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
199 public void uploadProcessArtifact(InputStream artifactFile, String artifactFileName, String vspId,
200 Version version, String componentId, String processId,
202 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
204 ProcessEntity retrieved =
205 vendorSoftwareProductDao.getProcess(vspId, version, componentId, processId);
206 validateProcessExistence(vspId, version, componentId, processId, retrieved);
208 if (artifactFile == null) {
209 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
210 LoggerTragetServiceName.UPLOAD_PROCESS_ARTIFACT, ErrorLevel.ERROR.name(),
211 LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't upload process artifact");
212 throw new CoreException(new UploadInvalidErrorBuilder().build());
217 artifact = FileUtils.toByteArray(artifactFile);
218 } catch (RuntimeException exception) {
219 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
220 LoggerTragetServiceName.UPLOAD_PROCESS_ARTIFACT, ErrorLevel.ERROR.name(),
221 LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't upload process artifact");
222 throw new CoreException(new UploadInvalidErrorBuilder().build());
225 vendorSoftwareProductDao.uploadProcessArtifact(vspId, version, componentId, processId, artifact,
227 ActivityLogEntity activityLogEntity = new ActivityLogEntity(vspId, String.valueOf(version.getMajor()+1),
228 ActivityType.UPLOAD_MONITORING_FILE.toString(), user, true, "", "");
229 activityLogManager.addActionLog(activityLogEntity, user);
231 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
235 private void validateProcessExistence(String vspId, Version version, String componentId,
236 String processId, ProcessEntity retrieved) {
237 mdcDataDebugMessage.debugEntryMessage("VSP id, component id, process id", vspId, componentId,
240 if (retrieved != null) {
243 VersioningUtil.validateEntityExistence(retrieved,
244 new ProcessEntity(vspId, version, componentId, processId),
245 VspDetails.ENTITY_TYPE);//todo retrieved is always null ??
247 mdcDataDebugMessage.debugExitMessage("VSP id, component id, process id", vspId, componentId,
251 private void validateProcessArtifactExistence(String vspId, Version version, String componentId,
252 String processId, ProcessEntity retrieved) {
253 mdcDataDebugMessage.debugEntryMessage("VSP id, component id, process id", vspId, componentId,
256 if (retrieved != null) {
257 VersioningUtil.validateEntityExistence(retrieved.getArtifact(),
258 new ProcessEntity(vspId, version, componentId, processId),
259 VspDetails.ENTITY_TYPE);
261 VersioningUtil.validateEntityExistence(retrieved,
262 new ProcessEntity(vspId, version, componentId, processId),
263 VspDetails.ENTITY_TYPE); //todo retrieved is always null ??
266 mdcDataDebugMessage.debugExitMessage("VSP id, component id, process id", vspId, componentId,
271 protected void validateUniqueName(String vspId, Version version, String componentId,
272 String processName) {
273 UniqueValueUtil.validateUniqueValue(VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME,
274 vspId, version.toString(), componentId, processName);
277 protected void createUniqueName(String vspId, Version version, String componentId,
278 String processName) {
280 .createUniqueValue(VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME, vspId,
281 version.toString(), componentId, processName);
284 protected void updateUniqueName(String vspId, Version version, String componentId,
285 String oldProcessName, String newProcessName) {
287 .updateUniqueValue(VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME, oldProcessName,
288 newProcessName, vspId, version.toString(), componentId);
291 protected void deleteUniqueValue(String vspId, Version version, String componentId,
292 String processName) {
294 .deleteUniqueValue(VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME, vspId,
295 version.toString(), componentId, processName);