[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / impl / ComponentDependencyModelManagerImpl.java
1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.openecomp.sdc.common.errors.CoreException;
5 import org.openecomp.sdc.common.errors.ErrorCode;
6 import org.openecomp.sdc.datatypes.error.ErrorLevel;
7 import org.openecomp.sdc.logging.api.Logger;
8 import org.openecomp.sdc.logging.api.LoggerFactory;
9 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
10 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
11 import org.openecomp.sdc.logging.types.LoggerConstants;
12 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
13 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
14 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
15 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
18 import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
19 import org.openecomp.sdc.versioning.dao.types.Version;
20
21 import java.util.Collection;
22 import java.util.List;
23
24 public class ComponentDependencyModelManagerImpl implements ComponentDependencyModelManager {
25
26   private VendorSoftwareProductDao vendorSoftwareProductDao;
27   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
28   protected static final Logger logger =
29       LoggerFactory.getLogger(ComponentDependencyModelManagerImpl.class);
30
31   private ComponentManager componentManager;
32
33   public ComponentDependencyModelManagerImpl(VendorSoftwareProductDao vendorSoftwareProductDao, ComponentManager componentManager) {
34     this.vendorSoftwareProductDao = vendorSoftwareProductDao;
35     this.componentManager = componentManager;
36   }
37
38   @Override
39   public void createComponentDependencyModel(List<ComponentDependencyModelEntity> entities,
40                                              String vspId, Version version, String user) {
41
42     mdcDataDebugMessage.debugEntryMessage("createComponentDependencyModel");
43     for(ComponentDependencyModelEntity entity : entities) {
44       if (!StringUtils.isEmpty(entity.getSourceComponentId())) {
45         componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
46             entity.getSourceComponentId(), user);
47         if (entity.getSourceComponentId().equals(entity.getTargetComponentId())) {
48           ErrorCode errorCode =
49               ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder();
50           raiseException(errorCode);
51         }
52       } else {
53           ErrorCode errorCode = ComponentDependencyModelErrorBuilder
54               .getNoSourceComponentErrorBuilder();
55           raiseException(errorCode);
56       }
57
58       if (!StringUtils.isEmpty(entity.getTargetComponentId())) {
59         componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
60             entity.getTargetComponentId(), user);
61       }
62     }
63
64     vendorSoftwareProductDao.createComponentDependencyModel(entities, vspId, version );
65
66     mdcDataDebugMessage.debugExitMessage("createComponentDependencyModel");
67   }
68
69   private void raiseException(ErrorCode errorCode) {
70     MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
71         LoggerTragetServiceName.CREATE_COMPONENT_DEPENDENCY_MODEL, ErrorLevel.ERROR.name(),
72         errorCode.id(), errorCode.message());
73     throw new CoreException(errorCode);
74   }
75
76   @Override
77   public Collection<ComponentDependencyModelEntity> list(String vspId, Version version, String
78       user) {
79
80     mdcDataDebugMessage.debugExitMessage("VSP id, version", vspId, version.toString());
81
82     return vendorSoftwareProductDao.listComponentDependencies(vspId, version);
83   }
84 }