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.ZusammenElement;
5 import com.amdocs.zusammen.datatypes.Id;
6 import com.amdocs.zusammen.datatypes.SessionContext;
7 import com.amdocs.zusammen.datatypes.item.Action;
8 import com.amdocs.zusammen.datatypes.item.ElementContext;
9 import org.openecomp.core.enrichment.types.MonitoringUploadType;
10 import org.openecomp.core.utilities.file.FileUtils;
11 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
12 import org.openecomp.sdc.datatypes.model.ElementType;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentMonitoringUploadConvertor;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
17 import java.io.ByteArrayInputStream;
18 import java.nio.ByteBuffer;
19 import java.util.Collection;
20 import java.util.Optional;
21 import java.util.stream.Collectors;
23 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
24 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement;
25 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
29 * @since March 21, 2017
31 public class ComponentArtifactDaoZusammenImpl implements ComponentArtifactDao {
33 private static final String ARTIFACT_NAME = "artifactName";
35 private ZusammenAdaptor zusammenAdaptor;
37 public ComponentArtifactDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
38 this.zusammenAdaptor = zusammenAdaptor;
42 public void registerVersioning(String versionableEntityType) {
47 public Optional<ComponentMonitoringUploadEntity> getByType(
48 ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
49 SessionContext context = createSessionContext();
50 ElementContext elementContext =
51 new ElementContext(componentMonitoringUploadEntity.getVspId(),
52 componentMonitoringUploadEntity.getVersion().getId());
54 Optional<Element> mibsElement =
55 zusammenAdaptor.getElementByName(context, elementContext,
56 new Id(componentMonitoringUploadEntity.getComponentId()), ElementType.Mibs.toString());
57 if (mibsElement.isPresent()) {
58 Optional<Element> monitoringElement = zusammenAdaptor
59 .getElementByName(context, elementContext, mibsElement.get().getElementId(),
60 getMonitoringStructuralElement(componentMonitoringUploadEntity.getType()).toString());
61 if (monitoringElement.isPresent()) {
62 ComponentMonitoringUploadEntity entity =
63 new ElementToComponentMonitoringUploadConvertor().convert(monitoringElement.get());
64 entity.setVspId(componentMonitoringUploadEntity.getVspId());
65 entity.setVersion(componentMonitoringUploadEntity.getVersion());
66 entity.setComponentId(componentMonitoringUploadEntity.getComponentId());
67 return Optional.of(entity);
71 return Optional.empty();
75 public void create(ComponentMonitoringUploadEntity entity) {
76 ZusammenElement mibElement = buildMibElement(entity);
78 ZusammenElement mibsElement = buildStructuralElement(ElementType.Mibs, null);
80 ZusammenElement componentElement = buildElement(new Id(entity.getComponentId()), Action.IGNORE);
82 SessionContext context = createSessionContext();
83 ElementContext elementContext =
84 new ElementContext(entity.getVspId(), entity.getVersion().getId());
86 Element savedElement = zusammenAdaptor.saveElement(context, elementContext,
87 VspZusammenUtil.aggregateElements(componentElement, mibsElement, mibElement),
88 "Create monitoring upload");
89 entity.setId(savedElement.getSubElements().iterator().next()
90 .getSubElements().iterator().next().getElementId().getValue());
94 public void delete(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
96 ZusammenElement mibElement = buildMibElementStructure(componentMonitoringUploadEntity);
97 mibElement.setElementId(new Id(componentMonitoringUploadEntity.getId()));
98 SessionContext context = createSessionContext();
99 ElementContext elementContext =
100 new ElementContext(componentMonitoringUploadEntity.getVspId(),
101 componentMonitoringUploadEntity.getVersion().getId());
103 zusammenAdaptor.saveElement(context, elementContext, mibElement,
104 String.format("Delete mib with id %s", componentMonitoringUploadEntity.getId()));
110 public Collection<ComponentMonitoringUploadEntity> list(
111 ComponentMonitoringUploadEntity mibEntity) {
112 SessionContext context = createSessionContext();
113 ElementContext elementContext =
114 new ElementContext(mibEntity.getVspId(), mibEntity.getVersion().getId());
115 ElementToComponentMonitoringUploadConvertor
116 convertor = new ElementToComponentMonitoringUploadConvertor();
117 return zusammenAdaptor
118 .listElementsByName(context, elementContext, new Id(mibEntity.getComponentId()),
119 ElementType.Mibs.toString()).stream()
120 .map(elementInfo -> convertor.convert(elementInfo))
122 mib.setVspId(mibEntity.getVspId());
123 mib.setVersion(mibEntity.getVersion());
124 mib.setComponentId(mibEntity.getComponentId());
127 .collect(Collectors.toList());
131 public void deleteAll(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
132 /*ZusammenElement mibsElement =
133 buildStructuralElement(ElementType.Mibs, Action.DELETE);
135 ZusammenElement componentElement = buildComponentElement(componentMonitoringUploadEntity);
137 SessionContext context = createSessionContext();
138 ElementContext elementContext =
139 new ElementContext(componentMonitoringUploadEntity.getVspId(),
140 componentMonitoringUploadEntity.getVersion().getId());
142 zusammenAdaptor.saveElement(context, elementContext,
143 VspaggregateElements(componentElement, mibsElement), "Delete mibs");
146 SessionContext context = createSessionContext();
147 ElementContext elementContext =
148 new ElementContext(componentMonitoringUploadEntity.getVspId(),
149 componentMonitoringUploadEntity.getVersion().getId());
151 Optional<Element> optionalElement = zusammenAdaptor.getElementByName(context,
152 elementContext, new Id(componentMonitoringUploadEntity.getComponentId()), ElementType.Mibs
155 if (optionalElement.isPresent()) {
156 Element mibsElement = optionalElement.get();
157 Collection<Element> mibs = mibsElement.getSubElements();
159 mibs.forEach(mib -> {
160 ZusammenElement mibZusammenElement = buildElement(mib.getElementId(), Action.DELETE);
161 zusammenAdaptor.saveElement(context, elementContext, mibZusammenElement,
162 "Delete mib with id " + mib.getElementId());
168 public Collection<ComponentMonitoringUploadEntity> listArtifacts(
169 ComponentMonitoringUploadEntity monitoringUploadEntity) {
170 SessionContext context = createSessionContext();
171 ElementContext elementContext = new ElementContext(monitoringUploadEntity.getVspId(),
172 monitoringUploadEntity.getVersion().getId());
174 final Optional<Element> elementByName =
175 zusammenAdaptor.getElementByName(context, elementContext,
176 new Id(monitoringUploadEntity.getComponentId()), ElementType.Mibs.name());
178 if (!elementByName.isPresent()) {
181 final Id elementId = elementByName.get().getElementId();
182 return zusammenAdaptor.listElementData(context, elementContext, elementId).stream()
183 .map(element -> buildMibEntity(element, monitoringUploadEntity))
184 .collect(Collectors.toList());
188 private ComponentMonitoringUploadEntity buildMibEntity(Element element,
189 ComponentMonitoringUploadEntity monitoringUploadEntity) {
190 final String componentId = monitoringUploadEntity.getComponentId();
191 ComponentMonitoringUploadEntity
192 createdMib = new ComponentMonitoringUploadEntity(monitoringUploadEntity.getVspId(),
193 monitoringUploadEntity.getVersion(),
196 createdMib.setArtifactName((String) element.getInfo().getProperties().get(ARTIFACT_NAME));
197 createdMib.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(element.getData())));
198 createdMib.setType(MonitoringUploadType.valueOf(element.getInfo().getName()));
202 private ZusammenElement buildMibElement(
203 ComponentMonitoringUploadEntity monitoringUploadEntity) {
205 ZusammenElement monitoringElement = buildMibElementStructure(monitoringUploadEntity);
206 monitoringElement.getInfo().getProperties()
207 .put(ARTIFACT_NAME, monitoringUploadEntity.getArtifactName());
209 .setData(new ByteArrayInputStream(monitoringUploadEntity.getArtifact().array()));
210 return monitoringElement;
213 private ZusammenElement buildMibElementStructure(
214 ComponentMonitoringUploadEntity componentMonitoringUploadEntity) {
215 ZusammenElement monitoringElement =
216 buildStructuralElement(getMonitoringStructuralElement(componentMonitoringUploadEntity.getType()),
218 return monitoringElement;
221 private ElementType getMonitoringStructuralElement(MonitoringUploadType type)
222 throws IllegalArgumentException {
225 return ElementType.SNMP_POLL;
227 return ElementType.SNMP_TRAP;
229 return ElementType.VES_EVENTS;
231 throw new IllegalArgumentException();