81bbe356c37d1b1437d60827d789c7d73a1236c1
[sdc.git] /
1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.openecomp.core.utilities.CommonMethods;
5 import org.openecomp.sdc.common.errors.CoreException;
6 import org.openecomp.sdc.common.errors.ErrorCode;
7 import org.openecomp.sdc.datatypes.error.ErrorLevel;
8 import org.openecomp.sdc.logging.api.Logger;
9 import org.openecomp.sdc.logging.api.LoggerFactory;
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.dao.ComponentDependencyModelDao;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
18 import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
19 import org.openecomp.sdc.versioning.VersioningUtil;
20 import org.openecomp.sdc.versioning.dao.types.Version;
21
22 import java.util.Collection;
23
24 public class ComponentDependencyModelManagerImpl implements ComponentDependencyModelManager {
25   protected static final Logger logger =
26       LoggerFactory.getLogger(ComponentDependencyModelManagerImpl.class);
27
28   private ComponentManager componentManager;
29   private ComponentDependencyModelDao componentDependencyModelDao;
30
31   public ComponentDependencyModelManagerImpl(
32       ComponentManager componentManager, ComponentDependencyModelDao componentDependencyModelDao) {
33     this.componentManager = componentManager;
34     this.componentDependencyModelDao = componentDependencyModelDao;
35   }
36
37   private void raiseException(ErrorCode errorCode) {
38     MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
39         LoggerTragetServiceName.CREATE_COMPONENT_DEPENDENCY_MODEL, ErrorLevel.ERROR.name(),
40         errorCode.id(), errorCode.message());
41     throw new CoreException(errorCode);
42   }
43
44   @Override
45   public Collection<ComponentDependencyModelEntity> list(String vspId, Version version) {
46     return componentDependencyModelDao
47         .list(new ComponentDependencyModelEntity(vspId, version, null));
48   }
49
50   @Override
51   public ComponentDependencyModelEntity createComponentDependency(ComponentDependencyModelEntity
52                                                                       entity, String vspId,
53                                                                   Version version) {
54
55     validateComponentDependency(entity);
56     entity.setId(CommonMethods.nextUuId());
57     componentDependencyModelDao.create(entity);
58     return entity;
59   }
60
61   private void validateComponentDependency(ComponentDependencyModelEntity entity) {
62     if (!StringUtils.isEmpty(entity.getSourceComponentId())) {
63       componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
64           entity.getSourceComponentId());
65       if (entity.getSourceComponentId().equals(entity.getTargetComponentId())) {
66         ErrorCode errorCode =
67             ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder();
68         raiseException(errorCode);
69       }
70     } else {
71       ErrorCode errorCode = ComponentDependencyModelErrorBuilder
72           .getNoSourceComponentErrorBuilder();
73       raiseException(errorCode);
74     }
75
76     if (!StringUtils.isEmpty(entity.getTargetComponentId())) {
77       componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
78           entity.getTargetComponentId());
79     }
80   }
81
82   @Override
83   public void delete(String vspId, Version version, String dependencyId) {
84     ComponentDependencyModelEntity componentDependencyEntity = getComponentDependency(vspId,
85         version, dependencyId);
86     if (componentDependencyEntity != null) {
87       componentDependencyModelDao.delete(componentDependencyEntity);
88     }
89   }
90
91   @Override
92   public void update(ComponentDependencyModelEntity entity) {
93     ComponentDependencyModelEntity componentDependencyEntity = getComponentDependency(
94         entity.getVspId(), entity.getVersion(), entity.getId());
95     validateComponentDependency(entity);
96     componentDependencyModelDao.update(entity);
97   }
98
99   @Override
100   public ComponentDependencyModelEntity get(String vspId, Version version, String dependencyId) {
101     ComponentDependencyModelEntity componentDependency =
102         getComponentDependency(vspId, version, dependencyId);
103     return componentDependency;
104   }
105
106   private ComponentDependencyModelEntity getComponentDependency(String vspId, Version version,
107                                                                 String dependencyId) {
108     ComponentDependencyModelEntity retrieved = componentDependencyModelDao.get(
109         new ComponentDependencyModelEntity(vspId, version, dependencyId));
110     VersioningUtil.validateEntityExistence(retrieved, new ComponentDependencyModelEntity(
111         vspId, version, dependencyId), VspDetails.ENTITY_TYPE);
112     return retrieved;
113   }
114 }