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 org.openecomp.core.enrichment.types.ArtifactType;
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.MibDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.MibEntity;
16 import org.openecomp.sdc.versioning.dao.types.Version;
18 import java.io.ByteArrayInputStream;
19 import java.nio.ByteBuffer;
20 import java.util.Collection;
21 import java.util.Optional;
22 import java.util.stream.Collectors;
26 * @since March 21, 2017
28 public class MibDaoZusammenImpl implements MibDao {
30 private static final String ARTIFACT_NAME = "name";
32 private ZusammenAdaptor zusammenAdaptor;
34 public MibDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
35 this.zusammenAdaptor = zusammenAdaptor;
39 public void registerVersioning(String versionableEntityType) {
44 public Optional<MibEntity> getByType(MibEntity mibEntity) {
45 SessionContext context = ZusammenUtil.createSessionContext();
46 Id itemId = new Id(mibEntity.getVspId());
47 ElementContext elementContext = new ElementContext(itemId,
48 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
49 VspZusammenUtil.getVersionTag(mibEntity.getVersion()));
51 Optional<Element> mibsElement =
52 zusammenAdaptor.getElementByName(context, elementContext, new Id(mibEntity
53 .getComponentId()), StructureElement.Mibs.toString());
54 if (mibsElement.isPresent()) {
55 Optional<Element> mibElement = zusammenAdaptor
56 .getElementByName(context, elementContext, mibsElement.get().getElementId(),
57 getMibStructuralElement(mibEntity.getType()).toString());
58 if (mibElement.isPresent()) {
59 mibEntity.setId(mibElement.get().getElementId().getValue());
60 mibEntity.setArtifactName((String) mibElement.get().getInfo().getProperties().get(ARTIFACT_NAME));
61 mibEntity.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(mibElement.get().getData())));
62 return Optional.of(mibEntity);
66 return Optional.empty();
70 public void create(MibEntity mibEntity) {
71 ZusammenElement mibElement = buildMibElement(mibEntity);
73 ZusammenElement mibsElement =
74 VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, null);
76 ZusammenElement componentElement = buildComponentElement(mibEntity);
78 SessionContext context = ZusammenUtil.createSessionContext();
79 Id itemId = new Id(mibEntity.getVspId());
80 ElementContext elementContext = new ElementContext(itemId,
81 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
83 Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext,
84 VspZusammenUtil.aggregateElements(componentElement, mibsElement, mibElement),
86 savedElement.ifPresent(element ->
87 mibEntity.setId(element.getSubElements().iterator().next()
88 .getSubElements().iterator().next().getElementId().getValue()));
92 public void delete(MibEntity mibEntity) {
93 ZusammenElement mibElement = new ZusammenElement();
94 mibElement.setElementId(new Id(mibEntity.getId()));
95 mibElement.setAction(Action.DELETE);
97 SessionContext context = ZusammenUtil.createSessionContext();
98 Id itemId = new Id(mibEntity.getVspId());
99 ElementContext elementContext = new ElementContext(itemId,
100 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
102 zusammenAdaptor.saveElement(context, elementContext, mibElement,
103 String.format("Delete mib with id %s", mibEntity.getId()));
107 public Collection<MibEntity> list(MibEntity mib) {
108 SessionContext context = ZusammenUtil.createSessionContext();
109 Id itemId = new Id(mib.getVspId());
110 ElementContext elementContext = new ElementContext(itemId,
111 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
112 VspZusammenUtil.getVersionTag(mib.getVersion()));
114 return zusammenAdaptor.listElementsByName(context, elementContext, new Id(mib.getComponentId()),
115 StructureElement.Mibs.toString()).stream()
117 mapElementInfoToMib(mib.getVspId(), mib.getVersion(), mib.getComponentId(),
119 .collect(Collectors.toList());
123 public void deleteAll(MibEntity mibEntity) {
124 ZusammenElement mibsElement =
125 VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.DELETE);
127 ZusammenElement componentElement = buildComponentElement(mibEntity);
129 SessionContext context = ZusammenUtil.createSessionContext();
130 Id itemId = new Id(mibEntity.getVspId());
131 ElementContext elementContext = new ElementContext(itemId,
132 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
134 zusammenAdaptor.saveElement(context, elementContext,
135 VspZusammenUtil.aggregateElements(componentElement, mibsElement), "Delete mibs");
139 public Collection<MibEntity> listArtifacts(MibEntity mib) {
140 SessionContext context = ZusammenUtil.createSessionContext();
141 Id itemId = new Id(mib.getVspId());
142 ElementContext elementContext = new ElementContext(itemId,
143 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
144 VspZusammenUtil.getVersionTag(mib.getVersion()));
146 final Optional<Element> elementByName =
147 zusammenAdaptor.getElementByName(context, elementContext, new Id(mib.getComponentId()
148 ), StructureElement.Mibs.name());
150 if(!elementByName.isPresent())
153 final Id elementId = elementByName.get().getElementId();
154 return zusammenAdaptor.listElementData(context, elementContext, elementId).stream()
156 buildMibEntity(element,mib)
157 ).collect(Collectors.toList());
161 private MibEntity buildMibEntity (Element element, MibEntity mib) {
162 MibEntity createdMib = new MibEntity(mib.getVspId(), mib.getVersion(), mib.getComponentId(),
164 createdMib.setArtifactName((String) element.getInfo().getProperties().get(ARTIFACT_NAME));
165 createdMib.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(element.getData())));
166 createdMib.setType( ArtifactType.valueOf(element.getInfo().getName()));
170 private ZusammenElement buildComponentElement(MibEntity mibEntity) {
171 ZusammenElement componentElement = new ZusammenElement();
172 componentElement.setElementId(new Id(mibEntity.getComponentId()));
173 componentElement.setAction(Action.IGNORE);
174 return componentElement;
177 private ZusammenElement buildMibElement(MibEntity mib) {
178 ZusammenElement mibElement = VspZusammenUtil
179 .buildStructuralElement(getMibStructuralElement(mib.getType()), Action.UPDATE);
180 mibElement.getInfo().getProperties().put(ARTIFACT_NAME, mib.getArtifactName());
181 mibElement.setData(new ByteArrayInputStream(mib.getArtifact().array()));
185 private MibEntity mapElementInfoToMib(String vspId, Version version, String componentId,
186 ElementInfo elementInfo) {
187 MibEntity mib = new MibEntity(vspId, version, componentId, elementInfo.getId().getValue());
188 mib.setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME));
189 mib.setType(ArtifactType.valueOf(elementInfo.getInfo().getName()));
193 private StructureElement getMibStructuralElement(ArtifactType type) {
196 return StructureElement.SNMP_POLL;
198 return StructureElement.SNMP_TRAP;
200 throw new IllegalArgumentException();