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.utilities.file.FileUtils;
12 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
13 import org.openecomp.core.zusammen.api.ZusammenUtil;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
16 import org.openecomp.sdc.versioning.dao.types.Version;
17 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
19 import java.io.ByteArrayInputStream;
20 import java.util.Collection;
21 import java.util.Collections;
22 import java.util.Optional;
23 import java.util.stream.Collectors;
25 public class NetworkDaoZusammenImpl implements NetworkDao {
27 private ZusammenAdaptor zusammenAdaptor;
29 public NetworkDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
30 this.zusammenAdaptor = zusammenAdaptor;
34 public void registerVersioning(String versionableEntityType) {
39 public Collection<NetworkEntity> list(NetworkEntity network) {
40 SessionContext context = ZusammenUtil.createSessionContext();
41 Id itemId = new Id(network.getVspId());
42 ElementContext elementContext = new ElementContext(itemId,
43 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
44 VspZusammenUtil.getVersionTag(network.getVersion()));
46 return zusammenAdaptor
47 .listElementsByName(context, elementContext, null, StructureElement.Networks.name())
48 .stream().map(elementInfo ->
49 mapElementInfoToNetwork(network.getVspId(), network.getVersion(), elementInfo))
50 .collect(Collectors.toList());
53 private NetworkEntity mapElementInfoToNetwork(String vspId, Version version,
54 ElementInfo elementInfo) {
55 NetworkEntity networkEntity =
56 new NetworkEntity(vspId, version, elementInfo.getId().getValue());
57 networkEntity.setCompositionData(
58 elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name()));
63 public void create(NetworkEntity network) {
64 ZusammenElement networkElement = buildNetworkElement(network, Action.CREATE);
65 ZusammenElement networksElement =
66 VspZusammenUtil.buildStructuralElement(StructureElement.Networks, null);
67 networksElement.setSubElements(Collections.singletonList(networkElement));
69 SessionContext context = ZusammenUtil.createSessionContext();
70 Id itemId = new Id(network.getVspId());
71 ElementContext elementContext = new ElementContext(itemId,
72 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
73 Optional<Element> savedElement =
74 zusammenAdaptor.saveElement(context, elementContext, networksElement, "Create network");
75 savedElement.ifPresent(element ->
76 network.setId(element.getSubElements().iterator().next().getElementId().getValue()));
80 public void update(NetworkEntity network) {
81 ZusammenElement networkElement = buildNetworkElement(network, Action.UPDATE);
83 SessionContext context = ZusammenUtil.createSessionContext();
84 Id itemId = new Id(network.getVspId());
85 ElementContext elementContext = new ElementContext(itemId,
86 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
87 zusammenAdaptor.saveElement(context, elementContext, networkElement,
88 String.format("Update network with id %s", network.getId()));
92 public NetworkEntity get(NetworkEntity network) {
93 SessionContext context = ZusammenUtil.createSessionContext();
94 Id itemId = new Id(network.getVspId());
95 ElementContext elementContext = new ElementContext(itemId,
96 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
97 VspZusammenUtil.getVersionTag(network.getVersion()));
99 Optional<Element> element =
100 zusammenAdaptor.getElement(context, elementContext, network.getId());
102 if (element.isPresent()) {
103 network.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
111 public void delete(NetworkEntity network) {
112 ZusammenElement networkElement = new ZusammenElement();
113 networkElement.setElementId(new Id(network.getId()));
114 networkElement.setAction(Action.DELETE);
116 SessionContext context = ZusammenUtil.createSessionContext();
117 Id itemId = new Id(network.getVspId());
118 ElementContext elementContext = new ElementContext(itemId,
119 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
120 zusammenAdaptor.saveElement(context, elementContext,
121 networkElement, String.format("Delete network with id %s", network.getId()));
126 public void deleteAll(String vspId, Version version) {
127 ZusammenElement networksElement =
128 VspZusammenUtil.buildStructuralElement(StructureElement.Networks, Action.DELETE);
130 SessionContext context = ZusammenUtil.createSessionContext();
131 Id itemId = new Id(vspId);
132 ElementContext elementContext = new ElementContext(itemId,
133 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
134 zusammenAdaptor.saveElement(context, elementContext, networksElement, "Delete all networks");
137 private ZusammenElement buildNetworkElement(NetworkEntity network, Action action) {
138 ZusammenElement networkElement = new ZusammenElement();
139 networkElement.setAction(action);
140 if (network.getId() != null) {
141 networkElement.setElementId(new Id(network.getId()));
143 Info info = new Info();
144 info.addProperty(ElementPropertyName.type.name(), ElementType.Network);
145 info.addProperty(ElementPropertyName.compositionData.name(), network.getCompositionData());
146 networkElement.setInfo(info);
147 networkElement.setData(new ByteArrayInputStream(network.getCompositionData().getBytes()));
148 return networkElement;