ea51b770bf1ba0be7945ea9792b984ba76452d23
[sdc.git] /
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.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 com.amdocs.zusammen.utils.fileutils.FileUtils;
10 import org.openecomp.core.utilities.json.JsonUtil;
11 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
12 import org.openecomp.core.zusammen.api.ZusammenUtil;
13 import org.openecomp.sdc.logging.api.Logger;
14 import org.openecomp.sdc.logging.api.LoggerFactory;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
18 import org.openecomp.sdc.versioning.dao.types.Version;
19
20 import java.io.ByteArrayInputStream;
21 import java.nio.ByteBuffer;
22 import java.util.Optional;
23
24 public class OrchestrationTemplateCandidateDaoZusammenImpl
25     implements OrchestrationTemplateCandidateDao {
26   private static final Logger logger =
27       LoggerFactory.getLogger(OrchestrationTemplateCandidateDaoZusammenImpl.class);
28
29   private ZusammenAdaptor zusammenAdaptor;
30
31   public OrchestrationTemplateCandidateDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
32     this.zusammenAdaptor = zusammenAdaptor;
33   }
34
35   @Override
36   public void registerVersioning(String versionableEntityType) {
37
38   }
39
40   @Override
41   public OrchestrationTemplateCandidateData get(String vspId, Version version) {
42     logger.info("Getting orchestration template for vsp id -> " + vspId);
43
44     SessionContext context = ZusammenUtil.createSessionContext();
45     Id itemId = new Id(vspId);
46     Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
47     ElementContext elementContext = new ElementContext(itemId, versionId,
48         VspZusammenUtil.getVersionTag(version));
49
50     Optional<Element> candidateElement =
51         zusammenAdaptor.getElementByName(context, elementContext, null,
52             StructureElement.OrchestrationTemplateCandidate.name());
53     if (candidateElement.isPresent()) {
54       OrchestrationTemplateCandidateData candidateData = new OrchestrationTemplateCandidateData();
55       candidateData.setFilesDataStructure(
56           new String(FileUtils.toByteArray(candidateElement.get().getData())));
57
58       zusammenAdaptor
59           .getElementByName(context, elementContext, candidateElement.get().getElementId(),
60               StructureElement.OrchestrationTemplateCandidateContent.name())
61           .ifPresent(candidateContentElement -> candidateData.setContentData(
62               ByteBuffer.wrap(FileUtils.toByteArray(candidateContentElement.getData()))));
63       logger.info("Finished getting orchestration template for vsp id -> " + vspId);
64       return candidateData;
65     }
66     logger.info(String.format("Orchestration template for vsp id %s does not exist", vspId));
67     return null;
68   }
69
70   @Override
71   public void update(String vspId, OrchestrationTemplateCandidateData candidateData) {
72     logger.info("Uploading candidate data entity for vsp id -> " + vspId);
73
74     SessionContext context = ZusammenUtil.createSessionContext();
75     Id itemId = new Id(vspId);
76     Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
77     ElementContext elementContext = new ElementContext(itemId, versionId);
78
79     ZusammenElement candidateElement = VspZusammenUtil
80         .buildStructuralElement(StructureElement.OrchestrationTemplateCandidate, Action.UPDATE);
81     candidateElement
82         .setData(new ByteArrayInputStream(candidateData.getFilesDataStructure().getBytes()));
83     ZusammenElement candidateContentElement = VspZusammenUtil
84         .buildStructuralElement(StructureElement.OrchestrationTemplateCandidateContent, Action.UPDATE);
85     candidateContentElement
86         .setData(new ByteArrayInputStream(candidateData.getContentData().array()));
87     candidateElement.addSubElement(candidateContentElement);
88
89     zusammenAdaptor.saveElement(context, elementContext, candidateElement,
90         "Update Orchestration Template Candidate");
91     logger.info("Finished uploading candidate data entity for vsp id -> " + vspId);
92   }
93
94   @Override
95   public void updateStructure(String vspId, Version version, FilesDataStructure fileDataStructure) {
96     logger.info("Updating orchestration template for VSP id -> " + vspId);
97
98     SessionContext context = ZusammenUtil.createSessionContext();
99     Id itemId = new Id(vspId);
100     Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
101     ElementContext elementContext = new ElementContext(itemId, versionId);
102
103     ZusammenElement candidateElement = VspZusammenUtil
104         .buildStructuralElement(StructureElement.OrchestrationTemplateCandidate, Action.UPDATE);
105     candidateElement
106         .setData(new ByteArrayInputStream(JsonUtil.object2Json(fileDataStructure).getBytes()));
107     zusammenAdaptor.saveElement(context, elementContext, candidateElement,
108         "Update Orchestration Template Candidate structure");
109     logger.info("Finished uploading candidate data entity for vsp id -> " + vspId);
110   }
111
112
113   @Override
114   public Optional<String> getStructure(String vspId, Version version) {
115     logger.info("Getting orchestration template structure for vsp id -> " + vspId);
116
117     SessionContext context = ZusammenUtil.createSessionContext();
118     Id itemId = new Id(vspId);
119     Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
120     ElementContext elementContext = new ElementContext(itemId, versionId,
121         VspZusammenUtil.getVersionTag(version));
122
123     logger.info("Finished getting orchestration template structure for vsp id -> " + vspId);
124     Optional<Element> element = zusammenAdaptor.getElementByName(context, elementContext, null,
125         StructureElement.OrchestrationTemplateCandidate.name());
126     if (element.isPresent()) {
127       return Optional.of(new String(FileUtils.toByteArray(element.get().getData())));
128     } else {
129       return Optional.empty();
130     }
131
132   }
133 }