596ce5010fe33ef68e170341c7c87966e52b8b8a
[sdc.git] /
1 /*
2  * Copyright © 2016-2017 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.vendorsoftwareproduct.impl;
18
19 import org.apache.commons.lang3.StringUtils;
20 import org.openecomp.core.utilities.CommonMethods;
21 import org.openecomp.sdc.common.errors.CoreException;
22 import org.openecomp.sdc.common.errors.ErrorCode;
23 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
24 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
25 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao;
26 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
27 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
28 import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
29 import org.openecomp.sdc.versioning.VersioningUtil;
30 import org.openecomp.sdc.versioning.dao.types.Version;
31
32 import java.util.Collection;
33
34 public class ComponentDependencyModelManagerImpl implements ComponentDependencyModelManager {
35
36   private ComponentManager componentManager;
37   private ComponentDependencyModelDao componentDependencyModelDao;
38
39   public ComponentDependencyModelManagerImpl(
40       ComponentManager componentManager, ComponentDependencyModelDao componentDependencyModelDao) {
41     this.componentManager = componentManager;
42     this.componentDependencyModelDao = componentDependencyModelDao;
43   }
44
45   @Override
46   public Collection<ComponentDependencyModelEntity> list(String vspId, Version version) {
47     return componentDependencyModelDao
48         .list(new ComponentDependencyModelEntity(vspId, version, null));
49   }
50
51   @Override
52   public ComponentDependencyModelEntity createComponentDependency(ComponentDependencyModelEntity
53                                                                       entity, String vspId,
54                                                                   Version version) {
55
56     validateComponentDependency(entity);
57     entity.setId(CommonMethods.nextUuId());
58     componentDependencyModelDao.create(entity);
59     return entity;
60   }
61
62   private void validateComponentDependency(ComponentDependencyModelEntity entity) {
63     if (!StringUtils.isEmpty(entity.getSourceComponentId())) {
64       componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
65           entity.getSourceComponentId());
66       if (entity.getSourceComponentId().equals(entity.getTargetComponentId())) {
67         ErrorCode errorCode =
68             ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder();
69         throw new CoreException(errorCode);
70       }
71     } else {
72       ErrorCode errorCode = ComponentDependencyModelErrorBuilder
73           .getNoSourceComponentErrorBuilder();
74       throw new CoreException(errorCode);
75     }
76
77     if (!StringUtils.isEmpty(entity.getTargetComponentId())) {
78       componentManager.validateComponentExistence(entity.getVspId(), entity.getVersion(),
79           entity.getTargetComponentId());
80     }
81   }
82
83   @Override
84   public void delete(String vspId, Version version, String dependencyId) {
85     ComponentDependencyModelEntity componentDependencyEntity = getComponentDependency(vspId,
86         version, dependencyId);
87     if (componentDependencyEntity != null) {
88       componentDependencyModelDao.delete(componentDependencyEntity);
89     }
90   }
91
92   @Override
93   public void update(ComponentDependencyModelEntity entity) {
94     getComponentDependency(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     return getComponentDependency(vspId, version, dependencyId);
102   }
103
104   private ComponentDependencyModelEntity getComponentDependency(String vspId, Version version,
105                                                                 String dependencyId) {
106     ComponentDependencyModelEntity retrieved = componentDependencyModelDao.get(
107         new ComponentDependencyModelEntity(vspId, version, dependencyId));
108     VersioningUtil.validateEntityExistence(retrieved, new ComponentDependencyModelEntity(
109         vspId, version, dependencyId), VspDetails.ENTITY_TYPE);
110     return retrieved;
111   }
112 }