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;
18 import java.io.ByteArrayInputStream;
19 import java.util.Collection;
20 import java.util.Collections;
21 import java.util.Optional;
22 import java.util.stream.Collectors;
24 public class NetworkDaoZusammenImpl implements NetworkDao {
26 private ZusammenAdaptor zusammenAdaptor;
28 public NetworkDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
29 this.zusammenAdaptor = zusammenAdaptor;
33 public void registerVersioning(String versionableEntityType) {
38 public Collection<NetworkEntity> list(NetworkEntity network) {
39 SessionContext context = ZusammenUtil.createSessionContext();
40 Id itemId = new Id(network.getVspId());
41 ElementContext elementContext = new ElementContext(itemId,
42 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
43 VspZusammenUtil.getVersionTag(network.getVersion()));
45 return zusammenAdaptor
46 .listElementsByName(context, elementContext, null, StructureElement.Networks.name())
47 .stream().map(elementInfo ->
48 mapElementInfoToNetwork(network.getVspId(), network.getVersion(), elementInfo))
49 .collect(Collectors.toList());
52 private NetworkEntity mapElementInfoToNetwork(String vspId, Version version,
53 ElementInfo elementInfo) {
54 NetworkEntity networkEntity =
55 new NetworkEntity(vspId, version, elementInfo.getId().getValue());
56 networkEntity.setCompositionData(
57 elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name()));
62 public void create(NetworkEntity network) {
63 ZusammenElement networkElement = buildNetworkElement(network, Action.CREATE);
64 ZusammenElement networksElement =
65 VspZusammenUtil.buildStructuralElement(StructureElement.Networks, null);
66 networksElement.setSubElements(Collections.singletonList(networkElement));
68 SessionContext context = ZusammenUtil.createSessionContext();
69 Id itemId = new Id(network.getVspId());
70 ElementContext elementContext = new ElementContext(itemId,
71 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
72 Optional<Element> savedElement =
73 zusammenAdaptor.saveElement(context, elementContext, networksElement, "Create network");
74 savedElement.ifPresent(element ->
75 network.setId(element.getSubElements().iterator().next().getElementId().getValue()));
79 public void update(NetworkEntity network) {
80 ZusammenElement networkElement = buildNetworkElement(network, Action.UPDATE);
82 SessionContext context = ZusammenUtil.createSessionContext();
83 Id itemId = new Id(network.getVspId());
84 ElementContext elementContext = new ElementContext(itemId,
85 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
86 zusammenAdaptor.saveElement(context, elementContext, networkElement,
87 String.format("Update network with id %s", network.getId()));
91 public NetworkEntity get(NetworkEntity network) {
92 SessionContext context = ZusammenUtil.createSessionContext();
93 Id itemId = new Id(network.getVspId());
94 ElementContext elementContext = new ElementContext(itemId,
95 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
96 VspZusammenUtil.getVersionTag(network.getVersion()));
98 Optional<Element> element =
99 zusammenAdaptor.getElement(context, elementContext, network.getId());
101 if (element.isPresent()) {
102 network.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
110 public void delete(NetworkEntity network) {
111 ZusammenElement networkElement = new ZusammenElement();
112 networkElement.setElementId(new Id(network.getId()));
113 networkElement.setAction(Action.DELETE);
115 SessionContext context = ZusammenUtil.createSessionContext();
116 Id itemId = new Id(network.getVspId());
117 ElementContext elementContext = new ElementContext(itemId,
118 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
119 zusammenAdaptor.saveElement(context, elementContext,
120 networkElement, String.format("Delete network with id %s", network.getId()));
125 public void deleteAll(String vspId, Version version) {
126 ZusammenElement networksElement =
127 VspZusammenUtil.buildStructuralElement(StructureElement.Networks, Action.DELETE);
129 SessionContext context = ZusammenUtil.createSessionContext();
130 Id itemId = new Id(vspId);
131 ElementContext elementContext = new ElementContext(itemId,
132 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
133 zusammenAdaptor.saveElement(context, elementContext, networksElement, "Delete all networks");
136 private ZusammenElement buildNetworkElement(NetworkEntity network, Action action) {
137 ZusammenElement networkElement = new ZusammenElement();
138 networkElement.setAction(action);
139 if (network.getId() != null) {
140 networkElement.setElementId(new Id(network.getId()));
142 Info info = new Info();
143 info.addProperty(ElementPropertyName.type.name(), ElementType.Network);
144 info.addProperty(ElementPropertyName.compositionData.name(), network.getCompositionData());
145 networkElement.setInfo(info);
146 networkElement.setData(new ByteArrayInputStream(network.getCompositionData().getBytes()));
147 return networkElement;