1 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
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.datatypes.item.Info;
10 import com.amdocs.zusammen.datatypes.item.ItemVersion;
11 import com.amdocs.zusammen.utils.fileutils.FileUtils;
12 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
13 import org.openecomp.core.zusammen.api.ZusammenUtil;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity;
17 import org.openecomp.sdc.versioning.VersioningManagerFactory;
18 import org.openecomp.sdc.versioning.dao.types.Version;
19 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
20 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
22 import java.io.ByteArrayInputStream;
23 import java.util.Collection;
24 import java.util.Date;
25 import java.util.Optional;
26 import java.util.stream.Collectors;
28 public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareProductInfoDao {
29 private ZusammenAdaptor zusammenAdaptor;
31 public VendorSoftwareProductInfoDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
32 this.zusammenAdaptor = zusammenAdaptor;
36 public void registerVersioning(String versionableEntityType) {
37 VersionableEntityMetadata metadata =
38 new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vsp", null, null);
40 VersioningManagerFactory.getInstance().createInterface()
41 .register(versionableEntityType, metadata);
45 public Collection<VspDetails> list(VspDetails entity) {
46 return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream().filter
47 (vspEntity-> "vsp".equals(vspEntity.getInfo().getProperty("type")))
48 .map(item -> mapInfoToVspDetails(
49 item.getId().getValue(), null, item.getInfo(),
50 item.getModificationTime(), item.getCreationTime()))
51 .collect(Collectors.toList());
55 public void create(VspDetails vspDetails) {
56 SessionContext context = ZusammenUtil.createSessionContext();
58 Id itemId = zusammenAdaptor.createItem(context, mapVspDetailsToZusammenItemInfo(vspDetails));
60 zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
62 ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.CREATE);
63 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
64 generalElement, "Create VSP General Info Element");
66 vspDetails.setId(itemId.getValue());//set id for caller
70 public void update(VspDetails vspDetails) {
71 SessionContext context = ZusammenUtil.createSessionContext();
72 Id itemId = new Id(vspDetails.getId());
73 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
75 zusammenAdaptor.updateItem(context, itemId, mapVspDetailsToZusammenItemInfo(vspDetails));
77 ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.UPDATE);
78 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
79 generalElement, "Update VSP General Info Element");
83 public VspDetails get(VspDetails vspDetails) {
84 SessionContext context = ZusammenUtil.createSessionContext();
85 Id itemId = new Id(vspDetails.getId());
86 ItemVersion itemVersion = VspZusammenUtil.getFirstVersion(context, itemId, zusammenAdaptor);
87 ElementContext elementContext = new ElementContext(itemId, itemVersion.getId(),
88 VspZusammenUtil.getVersionTag(vspDetails.getVersion()));
90 return zusammenAdaptor
91 .getElementInfoByName(context, elementContext, null, StructureElement.General.name())
92 .map(generalElementInfo -> mapInfoToVspDetails(
93 vspDetails.getId(), vspDetails.getVersion(), generalElementInfo.getInfo(),
94 itemVersion.getModificationTime(), itemVersion.getCreationTime()))
100 public void delete(VspDetails entity) {
105 public void updateOldVersionIndication(VspDetails vspDetails) {
106 VspDetails retrieved = get(vspDetails);
107 if (retrieved != null) {
108 retrieved.setOldVersion(vspDetails.getOldVersion());
114 public void updateQuestionnaireData(String vspId, Version version, String questionnaireData) {
115 SessionContext context = ZusammenUtil.createSessionContext();
116 Id itemId = new Id(vspId);
117 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
119 ZusammenElement questionnaireElement = mapQuestionnaireToZusammenElement(questionnaireData);
120 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
121 questionnaireElement, "Update VSP Questionnaire");
126 public String getQuestionnaireData(String vspId, Version version) {
127 SessionContext context = ZusammenUtil.createSessionContext();
128 Id itemId = new Id(vspId);
129 Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
131 return zusammenAdaptor.getElementByName(context,
132 new ElementContext(itemId, versionId, VspZusammenUtil.getVersionTag(version)), null,
133 StructureElement.Questionnaire.name())
134 .map(questionnaireElement ->
135 new String(FileUtils.toByteArray(questionnaireElement.getData())))
140 public VspQuestionnaireEntity getQuestionnaire(String vspId, Version version) {
141 VspQuestionnaireEntity entity = new VspQuestionnaireEntity();
143 entity.setVersion(version);
144 entity.setQuestionnaireData(getQuestionnaireData(vspId, version));
149 public void deleteAll(String vspId, Version version) {
154 public boolean isManual(String vspId, Version version) {
155 final VspDetails vspDetails = get(new VspDetails(vspId, version));
156 if (vspDetails != null) {
157 if ("Manual".equals(vspDetails.getOnboardingMethod())) {
164 private Info mapVspDetailsToZusammenItemInfo(VspDetails vspDetails) {
165 Info info = new Info();
166 info.setName(vspDetails.getName());
167 info.setDescription(vspDetails.getDescription());
168 info.addProperty("type", "vsp");
169 addVspDetailsToInfo(info, vspDetails);
173 private ZusammenElement mapVspDetailsToZusammenElement(VspDetails vspDetails, Action action) {
174 ZusammenElement generalElement =
175 VspZusammenUtil.buildStructuralElement(StructureElement.General, action);
176 addVspDetailsToInfo(generalElement.getInfo(), vspDetails);
177 return generalElement;
180 private ZusammenElement mapQuestionnaireToZusammenElement(String questionnaireData) {
181 ZusammenElement questionnaireElement =
182 VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, Action.UPDATE);
183 questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
184 return questionnaireElement;
187 private void addVspDetailsToInfo(Info info, VspDetails vspDetails) {
188 info.addProperty(InfoPropertyName.name.name(), vspDetails.getName());
189 info.addProperty(InfoPropertyName.description.name(), vspDetails.getDescription());
190 info.addProperty(InfoPropertyName.icon.name(), vspDetails.getIcon());
191 info.addProperty(InfoPropertyName.category.name(), vspDetails.getCategory());
192 info.addProperty(InfoPropertyName.subCategory.name(), vspDetails.getSubCategory());
193 info.addProperty(InfoPropertyName.vendorId.name(), vspDetails.getVendorId());
194 info.addProperty(InfoPropertyName.vendorName.name(), vspDetails.getVendorName());
195 if (vspDetails.getVlmVersion() != null) {
197 InfoPropertyName.vendorVersion.name(), vspDetails.getVlmVersion().toString());
199 info.addProperty(InfoPropertyName.licenseAgreement.name(), vspDetails.getLicenseAgreement());
200 info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups());
201 info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion());
202 info.addProperty(InfoPropertyName.onboardingMethod.name(), vspDetails.getOnboardingMethod());
203 info.addProperty(InfoPropertyName.obBoardingOrigin.name(), vspDetails.getOnboardingOrigin());
204 info.addProperty(InfoPropertyName.networkPackageName.name(), vspDetails.getNetworkPackageName());
207 private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info,
208 Date modificationTime, Date creationTime) {
209 VspDetails vspDetails = new VspDetails(vspId, version);
210 vspDetails.setName(info.getProperty(InfoPropertyName.name.name()));
211 vspDetails.setDescription(info.getProperty(InfoPropertyName.description.name()));
212 vspDetails.setCategory(info.getProperty(InfoPropertyName.category.name()));
213 vspDetails.setSubCategory(info.getProperty(InfoPropertyName.subCategory.name()));
214 vspDetails.setVendorId(info.getProperty(InfoPropertyName.vendorId.name()));
215 vspDetails.setVendorName(info.getProperty(InfoPropertyName.vendorName.name()));
216 vspDetails.setVlmVersion(
217 Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name())));
218 vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name()));
219 vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name()));
221 vspDetails.setWritetimeMicroSeconds(
222 modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
223 vspDetails.setVersion(version);
224 String oldVersion = info.getProperty(InfoPropertyName.oldVersion.name());
226 //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase());
227 vspDetails.setOldVersion(oldVersion);
228 vspDetails.setOnboardingMethod(info.getProperty(InfoPropertyName.onboardingMethod.name()));
229 vspDetails.setOnboardingOrigin(info.getProperty(InfoPropertyName.obBoardingOrigin.name()));
230 vspDetails.setNetworkPackageName(info.getProperty(InfoPropertyName.networkPackageName.name()));
234 private enum InfoPropertyName {