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.MonitoringUploadType;
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.ComponentArtifactDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
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 ComponentArtifactDaoZusammenImpl implements ComponentArtifactDao {
30 private static final String ARTIFACT_NAME = "name";
32 private ZusammenAdaptor zusammenAdaptor;
34 public ComponentArtifactDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
35 this.zusammenAdaptor = zusammenAdaptor;
39 public void registerVersioning(String versionableEntityType) {
44 public Optional<ComponentMonitoringUploadEntity> getByType(
45 ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
46 SessionContext context = ZusammenUtil.createSessionContext();
47 Id itemId = new Id(componentMonitoringUploadEntity.getVspId());
48 ElementContext elementContext = new ElementContext(itemId,
49 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
50 VspZusammenUtil.getVersionTag(componentMonitoringUploadEntity.getVersion()));
51 Optional<Element> mibsElement =
52 zusammenAdaptor.getElementByName(context, elementContext, new Id(
53 componentMonitoringUploadEntity
54 .getComponentId()), StructureElement.Mibs.toString());
55 if (mibsElement.isPresent()) {
56 Optional<Element> monitoringElement = zusammenAdaptor
57 .getElementByName(context, elementContext, mibsElement.get().getElementId(),
58 getMonitoringStructuralElement(componentMonitoringUploadEntity.getType())
60 if (monitoringElement.isPresent()) {
61 componentMonitoringUploadEntity.setId(monitoringElement.get().getElementId().getValue());
62 componentMonitoringUploadEntity
64 (String) monitoringElement.get().getInfo().getProperties().get(ARTIFACT_NAME));
65 componentMonitoringUploadEntity
66 .setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(monitoringElement.get().getData())));
67 return Optional.of(componentMonitoringUploadEntity);
71 return Optional.empty();
75 public void create(ComponentMonitoringUploadEntity entity) {
76 ZusammenElement mibElement = buildMibElement(entity);
78 ZusammenElement mibsElement =
79 VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, null);
81 ZusammenElement componentElement = buildComponentElement(entity);
83 SessionContext context = ZusammenUtil.createSessionContext();
84 Id itemId = new Id(entity.getVspId());
85 ElementContext elementContext = new ElementContext(itemId,
86 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
88 Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext,
89 VspZusammenUtil.aggregateElements(componentElement, mibsElement, mibElement),
90 "Create monitoring upload");
91 savedElement.ifPresent(element ->
92 entity.setId(element.getSubElements().iterator().next()
93 .getSubElements().iterator().next().getElementId().getValue()));
97 public void delete(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
98 ZusammenElement mibElement = new ZusammenElement();
99 mibElement.setElementId(new Id(componentMonitoringUploadEntity.getId()));
100 mibElement.setAction(Action.DELETE);
102 SessionContext context = ZusammenUtil.createSessionContext();
103 Id itemId = new Id(componentMonitoringUploadEntity.getVspId());
104 ElementContext elementContext = new ElementContext(itemId,
105 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
107 zusammenAdaptor.saveElement(context, elementContext, mibElement,
108 String.format("Delete mib with id %s", componentMonitoringUploadEntity.getId()));
112 public Collection<ComponentMonitoringUploadEntity> list(ComponentMonitoringUploadEntity mib) {
113 SessionContext context = ZusammenUtil.createSessionContext();
114 Id itemId = new Id(mib.getVspId());
115 ElementContext elementContext = new ElementContext(itemId,
116 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
117 VspZusammenUtil.getVersionTag(mib.getVersion()));
119 return zusammenAdaptor.listElementsByName(context, elementContext, new Id(mib.getComponentId()),
120 StructureElement.Mibs.toString()).stream()
122 mapElementInfoToMib(mib.getVspId(), mib.getVersion(), mib.getComponentId(),
124 .collect(Collectors.toList());
128 public void deleteAll(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
129 ZusammenElement mibsElement =
130 VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.DELETE);
132 ZusammenElement componentElement = buildComponentElement(componentMonitoringUploadEntity);
134 SessionContext context = ZusammenUtil.createSessionContext();
135 Id itemId = new Id(componentMonitoringUploadEntity.getVspId());
136 ElementContext elementContext = new ElementContext(itemId,
137 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
139 zusammenAdaptor.saveElement(context, elementContext,
140 VspZusammenUtil.aggregateElements(componentElement, mibsElement), "Delete mibs");
144 public Collection<ComponentMonitoringUploadEntity> listArtifacts(
145 ComponentMonitoringUploadEntity monitoringUploadEntity) {
146 SessionContext context = ZusammenUtil.createSessionContext();
147 Id itemId = new Id(monitoringUploadEntity.getVspId());
148 ElementContext elementContext = new ElementContext(itemId,
149 VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
150 VspZusammenUtil.getVersionTag(monitoringUploadEntity.getVersion()));
152 final Optional<Element> elementByName =
153 zusammenAdaptor.getElementByName(context, elementContext,
154 new Id(monitoringUploadEntity.getComponentId()
155 ), StructureElement.Mibs.name());
157 if(!elementByName.isPresent())
160 final Id elementId = elementByName.get().getElementId();
161 return zusammenAdaptor.listElementData(context, elementContext, elementId).stream()
163 buildMibEntity(element, monitoringUploadEntity)
164 ).collect(Collectors.toList());
168 private ComponentMonitoringUploadEntity buildMibEntity(Element element,
169 ComponentMonitoringUploadEntity monitoringUploadEntity) {
170 final String componentId = monitoringUploadEntity.getComponentId();
171 ComponentMonitoringUploadEntity
172 createdMib = new ComponentMonitoringUploadEntity(monitoringUploadEntity.getVspId(),
173 monitoringUploadEntity.getVersion(),
176 createdMib.setArtifactName((String) element.getInfo().getProperties().get(ARTIFACT_NAME));
177 createdMib.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(element.getData())));
178 createdMib.setType(MonitoringUploadType.valueOf(element.getInfo().getName()));
182 private ZusammenElement buildComponentElement(
183 ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
184 ZusammenElement componentElement = new ZusammenElement();
185 componentElement.setElementId(new Id(componentMonitoringUploadEntity.getComponentId()));
186 componentElement.setAction(Action.IGNORE);
187 return componentElement;
190 private ZusammenElement buildMibElement(ComponentMonitoringUploadEntity monitoringUploadEntity) {
191 ZusammenElement monitoringElement = VspZusammenUtil
192 .buildStructuralElement(getMonitoringStructuralElement(monitoringUploadEntity.getType()),
194 monitoringElement.getInfo().getProperties()
195 .put(ARTIFACT_NAME, monitoringUploadEntity.getArtifactName());
197 .setData(new ByteArrayInputStream(monitoringUploadEntity.getArtifact().array()));
198 return monitoringElement;
201 private ComponentMonitoringUploadEntity mapElementInfoToMib(String vspId, Version version,
203 ElementInfo elementInfo) {
204 ComponentMonitoringUploadEntity
205 monitoringUploadEntity = new ComponentMonitoringUploadEntity(vspId, version, componentId,
206 elementInfo.getId().getValue());
207 monitoringUploadEntity
208 .setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME));
209 monitoringUploadEntity.setType(MonitoringUploadType.valueOf(elementInfo.getInfo().getName()));
210 return monitoringUploadEntity;
213 private StructureElement getMonitoringStructuralElement(MonitoringUploadType type)
214 throws IllegalArgumentException {
217 return StructureElement.SNMP_POLL;
219 return StructureElement.SNMP_TRAP;
221 return StructureElement.VES_EVENTS;
223 throw new IllegalArgumentException();