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.vendorsoftwareproduct.dao.ComponentDependencyModelDao;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentDependencyModelConvertor;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
16 import org.openecomp.types.ElementPropertyName;
18 import java.util.ArrayList;
19 import java.util.Collection;
20 import java.util.Optional;
21 import java.util.stream.Collectors;
23 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
24 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement;
25 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
28 * Created by ayalaben on 5/16/2017.
30 public class ComponentDependencyModelDaoZusammenImpl implements ComponentDependencyModelDao {
32 private ZusammenAdaptor zusammenAdaptor;
34 public ComponentDependencyModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
35 this.zusammenAdaptor = zusammenAdaptor;
39 public ComponentDependencyModelEntity get(ComponentDependencyModelEntity dependency) {
41 SessionContext context = createSessionContext();
42 ElementContext elementContext =
43 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
45 Optional<ElementInfo> componentDependencyElement =
46 zusammenAdaptor.getElementInfo(context, elementContext, new Id(dependency.getId()));
48 if (componentDependencyElement.isPresent()) {
49 ElementToComponentDependencyModelConvertor convertor = new
50 ElementToComponentDependencyModelConvertor();
52 ComponentDependencyModelEntity entity = convertor.convert(componentDependencyElement.get());
53 entity.setVspId(dependency.getVspId());
54 entity.setVersion(dependency.getVersion());
62 public void create(ComponentDependencyModelEntity dependency) {
63 ZusammenElement componentDependency =
64 buildComponentDependencyElement(dependency, Action.CREATE);
66 ZusammenElement componentDependencies =
67 buildStructuralElement(ElementType.ComponentDependencies, Action.IGNORE);
68 componentDependencies.addSubElement(componentDependency);
70 ZusammenElement vspModel = buildStructuralElement(ElementType.VspModel, Action.IGNORE);
71 vspModel.addSubElement(componentDependencies);
73 SessionContext context = createSessionContext();
74 ElementContext elementContext =
75 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
77 Element compDepsSavedElement = zusammenAdaptor
78 .saveElement(context, elementContext, vspModel, "Create component dependency model");
80 dependency.setId(compDepsSavedElement.getSubElements().iterator().next()
81 .getSubElements().iterator().next().getElementId().getValue());
85 public void update(ComponentDependencyModelEntity dependency) {
86 ZusammenElement componentDependencyElement =
87 buildComponentDependencyElement(dependency, Action.UPDATE);
89 SessionContext context = createSessionContext();
90 ElementContext elementContext =
91 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
93 zusammenAdaptor.saveElement(context, elementContext, componentDependencyElement,
94 String.format("Update component dependency model with id %s", dependency.getId()));
98 public void delete(ComponentDependencyModelEntity dependency) {
99 ZusammenElement componentDependencyElement =
100 buildElement(new Id(dependency.getId()), Action.DELETE);
102 SessionContext context = createSessionContext();
103 ElementContext elementContext =
104 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
106 zusammenAdaptor.saveElement(context, elementContext, componentDependencyElement,
107 String.format("Delete component dependency model with id %s", dependency.getId()));
111 public void registerVersioning(String versionableEntityType) {
116 public Collection<ComponentDependencyModelEntity> list(
117 ComponentDependencyModelEntity dependency) {
118 SessionContext context = createSessionContext();
119 ElementContext elementContext =
120 new ElementContext(dependency.getVspId(), dependency.getVersion().getId());
122 Optional<ElementInfo> vspModel = zusammenAdaptor
123 .getElementInfoByName(context, elementContext, null, ElementType.VspModel.name());
124 if (!vspModel.isPresent()) {
125 return new ArrayList<>();
128 ElementToComponentDependencyModelConvertor convertor =
129 new ElementToComponentDependencyModelConvertor();
130 return zusammenAdaptor.listElementsByName(context, elementContext, vspModel.get().getId(),
131 ElementType.ComponentDependencies.name()).stream()
132 .map(elementInfo -> {
133 ComponentDependencyModelEntity entity = convertor.convert(elementInfo);
134 entity.setVspId(dependency.getVspId());
135 entity.setVersion(dependency.getVersion());
136 entity.setId(elementInfo.getId().getValue());
139 .collect(Collectors.toList());
142 private ZusammenElement buildComponentDependencyElement(ComponentDependencyModelEntity compDep,
144 ZusammenElement componentDependencyElement =
145 buildElement(compDep.getId() == null ? null : new Id(compDep.getId()), action);
147 Info info = new Info();
148 info.addProperty(ElementPropertyName.elementType.name(), ElementType.ComponentDependency);
149 info.addProperty(ComponentDependencyModelPropertyName.RELATION.getVal(), compDep.getRelation());
150 info.addProperty(ComponentDependencyModelPropertyName.SOURCE_COMPONENT_ID.getVal(),
151 compDep.getSourceComponentId());
152 info.addProperty(ComponentDependencyModelPropertyName.TARGET_COMPONENT_ID.getVal(),
153 compDep.getTargetComponentId());
155 componentDependencyElement.setInfo(info);
157 return componentDependencyElement;
160 private enum ComponentDependencyModelPropertyName {
162 RELATION("relation"),
163 SOURCE_COMPONENT_ID("sourcecomponent_id"),
164 TARGET_COMPONENT_ID("targetcomponent_id");
168 ComponentDependencyModelPropertyName(String val){
172 public String getVal() {