1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
4 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
5 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
6 import com.amdocs.zusammen.datatypes.Id;
7 import com.amdocs.zusammen.datatypes.SessionContext;
8 import com.amdocs.zusammen.datatypes.item.Action;
9 import com.amdocs.zusammen.datatypes.item.ElementContext;
10 import com.amdocs.zusammen.datatypes.item.Info;
11 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
12 import org.openecomp.sdc.datatypes.model.ElementType;
13 import org.openecomp.sdc.logging.api.Logger;
14 import org.openecomp.sdc.logging.api.LoggerFactory;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentDependencyModelConvertor;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
18 import org.openecomp.types.ElementPropertyName;
20 import java.util.ArrayList;
21 import java.util.Collection;
22 import java.util.Optional;
23 import java.util.stream.Collectors;
25 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
26 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement;
27 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
30 * Created by ayalaben on 5/16/2017.
32 public class ComponentDependencyModelDaoZusammenImpl implements ComponentDependencyModelDao {
34 private static final Logger logger =
35 LoggerFactory.getLogger(OrchestrationTemplateCandidateDaoZusammenImpl.class);
37 private ZusammenAdaptor zusammenAdaptor;
39 public ComponentDependencyModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
40 this.zusammenAdaptor = zusammenAdaptor;
44 public ComponentDependencyModelEntity get(ComponentDependencyModelEntity dependency) {
46 SessionContext context = createSessionContext();
47 ElementContext elementContext =
48 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
50 Optional<ElementInfo> componentDependencyElement =
51 zusammenAdaptor.getElementInfo(context, elementContext, new Id(dependency.getId()));
53 if (componentDependencyElement.isPresent()) {
54 ElementToComponentDependencyModelConvertor convertor = new
55 ElementToComponentDependencyModelConvertor();
57 ComponentDependencyModelEntity entity = convertor.convert(componentDependencyElement.get());
58 entity.setVspId(dependency.getVspId());
59 entity.setVersion(dependency.getVersion());
67 public void create(ComponentDependencyModelEntity dependency) {
68 ZusammenElement componentDependency =
69 buildComponentDependencyElement(dependency, Action.CREATE);
71 ZusammenElement componentDependencies =
72 buildStructuralElement(ElementType.ComponentDependencies, Action.IGNORE);
73 componentDependencies.addSubElement(componentDependency);
75 ZusammenElement vspModel = buildStructuralElement(ElementType.VspModel, Action.IGNORE);
76 vspModel.addSubElement(componentDependencies);
78 SessionContext context = createSessionContext();
79 ElementContext elementContext =
80 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
82 Element compDepsSavedElement = zusammenAdaptor
83 .saveElement(context, elementContext, vspModel, "Create component dependency model");
85 dependency.setId(compDepsSavedElement.getSubElements().iterator().next()
86 .getSubElements().iterator().next().getElementId().getValue());
90 public void update(ComponentDependencyModelEntity dependency) {
91 ZusammenElement componentDependencyElement =
92 buildComponentDependencyElement(dependency, Action.UPDATE);
94 SessionContext context = createSessionContext();
95 ElementContext elementContext =
96 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
98 zusammenAdaptor.saveElement(context, elementContext, componentDependencyElement,
99 String.format("Update component dependency model with id %s", dependency.getId()));
103 public void delete(ComponentDependencyModelEntity dependency) {
104 ZusammenElement componentDependencyElement =
105 buildElement(new Id(dependency.getId()), Action.DELETE);
107 SessionContext context = createSessionContext();
108 ElementContext elementContext =
109 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
111 zusammenAdaptor.saveElement(context, elementContext, componentDependencyElement,
112 String.format("Delete component dependency model with id %s", dependency.getId()));
116 public void registerVersioning(String versionableEntityType) {
121 public Collection<ComponentDependencyModelEntity> list(
122 ComponentDependencyModelEntity dependency) {
123 SessionContext context = createSessionContext();
124 ElementContext elementContext =
125 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
127 Optional<ElementInfo> vspModel = zusammenAdaptor
128 .getElementInfoByName(context, elementContext, null, ElementType.VspModel.name());
129 if (!vspModel.isPresent()) {
130 return new ArrayList<>();
133 ElementToComponentDependencyModelConvertor convertor =
134 new ElementToComponentDependencyModelConvertor();
135 return zusammenAdaptor.listElementsByName(context, elementContext, vspModel.get().getId(),
136 ElementType.ComponentDependencies.name()).stream()
137 .map(elementInfo -> {
138 ComponentDependencyModelEntity entity = convertor.convert(elementInfo);
139 entity.setVspId(dependency.getVspId());
140 entity.setVersion(dependency.getVersion());
141 entity.setId(elementInfo.getId().getValue());
144 .collect(Collectors.toList());
147 private ZusammenElement buildComponentDependencyElement(ComponentDependencyModelEntity compDep,
149 ZusammenElement componentDependencyElement =
150 buildElement(compDep.getId() == null ? null : new Id(compDep.getId()), action);
152 Info info = new Info();
153 info.addProperty(ElementPropertyName.elementType.name(), ElementType.ComponentDependency);
154 //info.addProperty(ComponentDependencyModelPropertyName.id.name(), entity.getId());
155 info.addProperty(ComponentDependencyModelPropertyName.relation.name(), compDep.getRelation());
156 info.addProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name(),
157 compDep.getSourceComponentId());
158 info.addProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name(),
159 compDep.getTargetComponentId());
161 componentDependencyElement.setInfo(info);
163 return componentDependencyElement;
166 private enum ComponentDependencyModelPropertyName {