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.core.zusammen.api.ZusammenUtil;
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.type.ComponentDependencyModelEntity;
17 import org.openecomp.sdc.versioning.dao.types.Version;
19 import java.util.Collection;
20 import java.util.Optional;
21 import java.util.stream.Collectors;
24 * Created by ayalaben on 5/16/2017.
26 public class ComponentDependencyModelDaoZusammenImpl implements ComponentDependencyModelDao {
28 private static final Logger logger =
29 LoggerFactory.getLogger(OrchestrationTemplateCandidateDaoZusammenImpl.class);
31 private ZusammenAdaptor zusammenAdaptor;
33 public ComponentDependencyModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
34 this.zusammenAdaptor = zusammenAdaptor;
38 public ComponentDependencyModelEntity get(ComponentDependencyModelEntity entity) {
40 SessionContext context = ZusammenUtil.createSessionContext();
41 Id itemId = new Id(entity.getVspId()); // entity.getId()?
42 ElementContext elementContext = new ElementContext(itemId,
43 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
44 VspZusammenUtil.getVersionTag(entity.getVersion()));
46 Optional<ElementInfo> componentDependencyElement =
47 zusammenAdaptor.getElementInfo(context, elementContext, new Id(entity.getId()));
49 if (componentDependencyElement.isPresent()) {
50 addComponentDependencyData(entity, componentDependencyElement.get());
58 public void create(ComponentDependencyModelEntity entity) {
60 ZusammenElement componentDependencies =
61 VspZusammenUtil.buildStructuralElement(StructureElement.ComponentDependencies, null);
63 ZusammenElement componentDependency = buildComponentDependencyElement(entity);
64 componentDependency.setAction(Action.CREATE);
66 Id itemId = new Id(entity.getVspId());
67 SessionContext context = ZusammenUtil.createSessionContext();
68 ElementContext elementContext = new ElementContext(itemId,
69 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
71 Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext,
72 VspZusammenUtil.aggregateElements(componentDependencies, componentDependency),
73 "Create component dependency model");
75 savedElement.ifPresent(element ->
76 entity.setId(element.getSubElements().iterator().next().getElementId().getValue()));
80 public void update(ComponentDependencyModelEntity entity) {
81 ZusammenElement componentDependencyElement = buildComponentDependencyElement(entity);
82 componentDependencyElement.setAction(Action.UPDATE);
84 Id itemId = new Id(entity.getVspId());
85 SessionContext context = ZusammenUtil.createSessionContext();
86 ElementContext elementContext = new ElementContext(itemId,
87 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
89 zusammenAdaptor.saveElement(context, elementContext,
90 componentDependencyElement,
91 String.format("Update component dependency model with id %s", entity.getId()));
95 public void delete(ComponentDependencyModelEntity entity) {
96 ZusammenElement componentDependencyElement = new ZusammenElement();
97 componentDependencyElement.setElementId(new Id(entity.getId()));
98 componentDependencyElement.setAction(Action.DELETE);
100 Id itemId = new Id(entity.getVspId());
101 SessionContext context = ZusammenUtil.createSessionContext();
102 ElementContext elementContext = new ElementContext(itemId,
103 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
106 zusammenAdaptor.saveElement(context, elementContext,
107 componentDependencyElement,
108 String.format("Delete component dependency model with id %s", entity.getId()));
112 public void deleteAll(String vspId, Version version) {
113 ZusammenElement componentDependenciesElement =
115 .buildStructuralElement(StructureElement.ComponentDependencies, Action.DELETE);
117 SessionContext context = ZusammenUtil.createSessionContext();
118 Id itemId = new Id(vspId);
119 zusammenAdaptor.saveElement(context, new ElementContext(itemId,
120 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
121 componentDependenciesElement, "Delete all component dependencies");
125 public void registerVersioning(String versionableEntityType) {
130 public Collection<ComponentDependencyModelEntity> list(ComponentDependencyModelEntity entity) {
132 Id itemId = new Id(entity.getVspId());
133 SessionContext context = ZusammenUtil.createSessionContext();
134 ElementContext elementContext = new ElementContext(itemId,
135 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
136 VspZusammenUtil.getVersionTag(entity.getVersion()));
138 return zusammenAdaptor.listElementsByName(context, elementContext,
139 null, StructureElement.ComponentDependencies.name())
140 .stream().map(elementInfo -> mapElementInfoToComponentDependencyModel(entity.getVspId(),
141 entity.getVersion(), elementInfo))
142 .collect(Collectors.toList());
145 private static ComponentDependencyModelEntity mapElementInfoToComponentDependencyModel(
146 String vspId, Version version,
147 ElementInfo elementInfo) {
148 ComponentDependencyModelEntity componentDependencyModelEntity =
149 new ComponentDependencyModelEntity(vspId, version, elementInfo.getId().getValue());
150 componentDependencyModelEntity.setSourceComponentId(elementInfo.getInfo()
151 .getProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name()));
152 componentDependencyModelEntity.setTargetComponentId(elementInfo.getInfo()
153 .getProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name()));
154 componentDependencyModelEntity.setRelation(elementInfo.getInfo()
155 .getProperty(ComponentDependencyModelPropertyName.relation.name()));
157 return componentDependencyModelEntity;
161 private ZusammenElement buildComponentDependencyElement(ComponentDependencyModelEntity entity) {
162 ZusammenElement componentDependencyElement = new ZusammenElement();
164 if (entity.getId() != null) {
165 componentDependencyElement.setElementId(new Id(entity.getId()));
168 Info info = new Info();
169 info.addProperty(ComponentDependencyModelPropertyName.id.name(), entity.getId());
170 info.addProperty(ComponentDependencyModelPropertyName.relation.name(), entity.getRelation());
171 info.addProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name(),
172 entity.getSourceComponentId());
173 info.addProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name(),
174 entity.getTargetComponentId());
176 componentDependencyElement.setInfo(info);
178 return componentDependencyElement;
181 private void addComponentDependencyData(ComponentDependencyModelEntity componentDependency,
182 ElementInfo componentDependencyElement) {
183 componentDependency.setId(componentDependencyElement.getInfo()
184 .getProperty(ComponentDependencyModelPropertyName.id.name()));
185 componentDependency.setRelation(componentDependencyElement.getInfo()
186 .getProperty(ComponentDependencyModelPropertyName.id.name()));
187 componentDependency.setSourceComponentId(componentDependencyElement.getInfo()
188 .getProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name()));
189 componentDependency.setTargetComponentId(componentDependencyElement.getInfo()
190 .getProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name()));
194 private enum ComponentDependencyModelPropertyName {