1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
4 import com.amdocs.zusammen.datatypes.Id;
5 import com.amdocs.zusammen.datatypes.SessionContext;
6 import com.amdocs.zusammen.datatypes.item.Action;
7 import com.amdocs.zusammen.datatypes.item.ElementContext;
8 import com.amdocs.zusammen.datatypes.item.Info;
9 import com.amdocs.zusammen.datatypes.item.ItemVersion;
10 import com.amdocs.zusammen.utils.fileutils.FileUtils;
11 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
12 import org.openecomp.core.zusammen.api.ZusammenUtil;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity;
16 import org.openecomp.sdc.versioning.VersioningManagerFactory;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
19 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
21 import java.io.ByteArrayInputStream;
22 import java.util.Collection;
23 import java.util.Date;
24 import java.util.stream.Collectors;
26 public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareProductInfoDao {
27 private ZusammenAdaptor zusammenAdaptor;
29 public VendorSoftwareProductInfoDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
30 this.zusammenAdaptor = zusammenAdaptor;
34 public void registerVersioning(String versionableEntityType) {
35 VersionableEntityMetadata metadata =
36 new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vsp", null, null);
38 VersioningManagerFactory.getInstance().createInterface()
39 .register(versionableEntityType, metadata);
43 public Collection<VspDetails> list(VspDetails entity) {
44 return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream().filter
45 (vspEntity-> "vsp".equals(vspEntity.getInfo().getProperty("type")))
46 .map(item -> mapInfoToVspDetails(
47 item.getId().getValue(), null, item.getInfo(),
48 item.getModificationTime(), item.getCreationTime()))
49 .collect(Collectors.toList());
53 public void create(VspDetails vspDetails) {
54 SessionContext context = ZusammenUtil.createSessionContext();
56 Id itemId = zusammenAdaptor.createItem(context, mapVspDetailsToZusammenItemInfo(vspDetails));
58 zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
60 ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.CREATE);
61 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
62 generalElement, "Create VSP General Info Element");
64 vspDetails.setId(itemId.getValue());//set id for caller
68 public void update(VspDetails vspDetails) {
69 SessionContext context = ZusammenUtil.createSessionContext();
70 Id itemId = new Id(vspDetails.getId());
71 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
73 zusammenAdaptor.updateItem(context, itemId, mapVspDetailsToZusammenItemInfo(vspDetails));
75 ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.UPDATE);
76 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
77 generalElement, "Update VSP General Info Element");
81 public VspDetails get(VspDetails vspDetails) {
82 SessionContext context = ZusammenUtil.createSessionContext();
83 Id itemId = new Id(vspDetails.getId());
84 ItemVersion itemVersion = VspZusammenUtil.getFirstVersion(context, itemId, zusammenAdaptor);
85 ElementContext elementContext = new ElementContext(itemId, itemVersion.getId(),
86 VspZusammenUtil.getVersionTag(vspDetails.getVersion()));
88 return zusammenAdaptor
89 .getElementInfoByName(context, elementContext, null, StructureElement.General.name())
90 .map(generalElementInfo -> mapInfoToVspDetails(
91 vspDetails.getId(), vspDetails.getVersion(), generalElementInfo.getInfo(),
92 itemVersion.getModificationTime(), itemVersion.getCreationTime()))
98 public void delete(VspDetails entity) {
103 public void updateOldVersionIndication(VspDetails vspDetails) {
104 VspDetails retrieved = get(vspDetails);
105 if (retrieved != null) {
106 retrieved.setOldVersion(vspDetails.getOldVersion());
112 public void updateQuestionnaireData(String vspId, Version version, String questionnaireData) {
113 SessionContext context = ZusammenUtil.createSessionContext();
114 Id itemId = new Id(vspId);
115 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
117 ZusammenElement questionnaireElement = mapQuestionnaireToZusammenElement(questionnaireData);
118 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
119 questionnaireElement, "Update VSP Questionnaire");
124 public String getQuestionnaireData(String vspId, Version version) {
125 SessionContext context = ZusammenUtil.createSessionContext();
126 Id itemId = new Id(vspId);
127 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
129 return zusammenAdaptor.getElementByName(context,
130 new ElementContext(itemId, versionId, VspZusammenUtil.getVersionTag(version)), null,
131 StructureElement.Questionnaire.name())
132 .map(questionnaireElement ->
133 new String(FileUtils.toByteArray(questionnaireElement.getData())))
138 public VspQuestionnaireEntity getQuestionnaire(String vspId, Version version) {
139 VspQuestionnaireEntity entity = new VspQuestionnaireEntity();
141 entity.setVersion(version);
142 entity.setQuestionnaireData(getQuestionnaireData(vspId, version));
147 public void deleteAll(String vspId, Version version) {
151 private Info mapVspDetailsToZusammenItemInfo(VspDetails vspDetails) {
152 Info info = new Info();
153 info.setName(vspDetails.getName());
154 info.setDescription(vspDetails.getDescription());
155 info.addProperty("type", "vsp");
156 addVspDetailsToInfo(info, vspDetails);
160 private ZusammenElement mapVspDetailsToZusammenElement(VspDetails vspDetails, Action action) {
161 ZusammenElement generalElement =
162 VspZusammenUtil.buildStructuralElement(StructureElement.General, action);
163 addVspDetailsToInfo(generalElement.getInfo(), vspDetails);
164 return generalElement;
167 private ZusammenElement mapQuestionnaireToZusammenElement(String questionnaireData) {
168 ZusammenElement questionnaireElement =
169 VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, Action.UPDATE);
170 questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
171 return questionnaireElement;
174 private void addVspDetailsToInfo(Info info, VspDetails vspDetails) {
175 info.addProperty(InfoPropertyName.name.name(), vspDetails.getName());
176 info.addProperty(InfoPropertyName.description.name(), vspDetails.getDescription());
177 info.addProperty(InfoPropertyName.icon.name(), vspDetails.getIcon());
178 info.addProperty(InfoPropertyName.category.name(), vspDetails.getCategory());
179 info.addProperty(InfoPropertyName.subCategory.name(), vspDetails.getSubCategory());
180 info.addProperty(InfoPropertyName.vendorId.name(), vspDetails.getVendorId());
181 info.addProperty(InfoPropertyName.vendorName.name(), vspDetails.getVendorName());
182 if (vspDetails.getVlmVersion() != null) {
184 InfoPropertyName.vendorVersion.name(), vspDetails.getVlmVersion().toString());
186 info.addProperty(InfoPropertyName.licenseAgreement.name(), vspDetails.getLicenseAgreement());
187 info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups());
188 info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion());
191 private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info,
192 Date modificationTime, Date creationTime) {
193 VspDetails vspDetails = new VspDetails(vspId, version);
194 vspDetails.setName(info.getProperty(InfoPropertyName.name.name()));
195 vspDetails.setDescription(info.getProperty(InfoPropertyName.description.name()));
196 vspDetails.setCategory(info.getProperty(InfoPropertyName.category.name()));
197 vspDetails.setSubCategory(info.getProperty(InfoPropertyName.subCategory.name()));
198 vspDetails.setVendorId(info.getProperty(InfoPropertyName.vendorId.name()));
199 vspDetails.setVendorName(info.getProperty(InfoPropertyName.vendorName.name()));
200 vspDetails.setVlmVersion(
201 Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name())));
202 vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name()));
203 vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name()));
204 vspDetails.setWritetimeMicroSeconds(
205 modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
206 vspDetails.setVersion(version);
207 String oldVersion = info.getProperty(InfoPropertyName.oldVersion.name());
209 //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase());
210 vspDetails.setOldVersion(oldVersion);
214 private enum InfoPropertyName {