Fixed SONAR issues
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / dao / impl / zusammen / NetworkDaoZusammenImpl.java
1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
2
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
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;
23
24 public class NetworkDaoZusammenImpl implements NetworkDao {
25
26   private ZusammenAdaptor zusammenAdaptor;
27
28   public NetworkDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
29     this.zusammenAdaptor = zusammenAdaptor;
30   }
31
32   @Override
33   public void registerVersioning(String versionableEntityType) {
34
35   }
36
37   @Override
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()));
44
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());
50   }
51
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()));
58     return networkEntity;
59   }
60
61   @Override
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));
67
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()));
76   }
77
78   @Override
79   public void update(NetworkEntity network) {
80     ZusammenElement networkElement = buildNetworkElement(network, Action.UPDATE);
81
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()));
88   }
89
90   @Override
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()));
97
98     Optional<Element> element =
99         zusammenAdaptor.getElement(context, elementContext, network.getId());
100
101     if (element.isPresent()) {
102       network.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
103       return network;
104     } else {
105       return null;
106     }
107   }
108
109   @Override
110   public void delete(NetworkEntity network) {
111     ZusammenElement networkElement = new ZusammenElement();
112     networkElement.setElementId(new Id(network.getId()));
113     networkElement.setAction(Action.DELETE);
114
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()));
121   }
122
123
124   @Override
125   public void deleteAll(String vspId, Version version) {
126     ZusammenElement networksElement =
127         VspZusammenUtil.buildStructuralElement(StructureElement.Networks, Action.DELETE);
128
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");
134   }
135
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()));
141     }
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;
148   }
149 }