1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
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.MdcDataDebugMessage;
11 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
12 import org.openecomp.sdc.logging.types.LoggerConstants;
13 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
14 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
15 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
18 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
19 import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
20 import org.openecomp.sdc.versioning.VersioningUtil;
21 import org.openecomp.sdc.versioning.dao.types.Version;
23 import java.util.Collection;
25 public class ComponentDependencyModelManagerImpl implements ComponentDependencyModelManager {
27 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
28 protected static final Logger logger =
29 LoggerFactory.getLogger(ComponentDependencyModelManagerImpl.class);
31 private ComponentManager componentManager;
32 private ComponentDependencyModelDao componentDependencyModelDao;
34 public ComponentDependencyModelManagerImpl(
35 ComponentManager componentManager, ComponentDependencyModelDao componentDependencyModelDao) {
36 this.componentManager = componentManager;
37 this.componentDependencyModelDao = componentDependencyModelDao;
40 private void raiseException(ErrorCode errorCode) {
41 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
42 LoggerTragetServiceName.CREATE_COMPONENT_DEPENDENCY_MODEL, ErrorLevel.ERROR.name(),
43 errorCode.id(), errorCode.message());
44 throw new CoreException(errorCode);
48 public Collection<ComponentDependencyModelEntity> list(String vspId, Version version) {
50 mdcDataDebugMessage.debugExitMessage("VSP id, version", vspId, version.toString());
52 return componentDependencyModelDao
53 .list(new ComponentDependencyModelEntity(vspId, version, null));
57 public ComponentDependencyModelEntity createComponentDependency(ComponentDependencyModelEntity
61 validateComponentDependency(entity);
62 entity.setId(CommonMethods.nextUuId());
63 componentDependencyModelDao.create(entity);
67 private void validateComponentDependency(ComponentDependencyModelEntity entity) {
68 if (!StringUtils.isEmpty(entity.getSourceComponentId())) {
69 componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
70 entity.getSourceComponentId());
71 if (entity.getSourceComponentId().equals(entity.getTargetComponentId())) {
73 ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder();
74 raiseException(errorCode);
77 ErrorCode errorCode = ComponentDependencyModelErrorBuilder
78 .getNoSourceComponentErrorBuilder();
79 raiseException(errorCode);
82 if (!StringUtils.isEmpty(entity.getTargetComponentId())) {
83 componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
84 entity.getTargetComponentId());
89 public void delete(String vspId, Version version, String dependencyId) {
90 mdcDataDebugMessage.debugEntryMessage("VSP id, dependencyId", vspId, dependencyId);
91 ComponentDependencyModelEntity componentDependencyEntity = getComponentDependency(vspId,
92 version, dependencyId);
93 if (componentDependencyEntity != null) {
94 componentDependencyModelDao.delete(componentDependencyEntity);
97 mdcDataDebugMessage.debugExitMessage("VSP id, dependencyId", vspId, dependencyId);
101 public void update(ComponentDependencyModelEntity entity) {
102 mdcDataDebugMessage.debugEntryMessage("VSP id, dependencyId", entity.getVspId(),
104 ComponentDependencyModelEntity componentDependencyEntity = getComponentDependency(
105 entity.getVspId(), entity.getVersion(), entity.getId());
106 validateComponentDependency(entity);
107 componentDependencyModelDao.update(entity);
111 public ComponentDependencyModelEntity get(String vspId, Version version, String dependencyId) {
112 mdcDataDebugMessage.debugEntryMessage("VSP id, dependencyId", vspId, dependencyId);
113 ComponentDependencyModelEntity componentDependency =
114 getComponentDependency(vspId, version, dependencyId);
115 return componentDependency;
118 private ComponentDependencyModelEntity getComponentDependency(String vspId, Version version,
119 String dependencyId) {
120 ComponentDependencyModelEntity retrieved = componentDependencyModelDao.get(
121 new ComponentDependencyModelEntity(vspId, version, dependencyId));
122 VersioningUtil.validateEntityExistence(retrieved, new ComponentDependencyModelEntity(
123 vspId, version, dependencyId), VspDetails.ENTITY_TYPE);