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) {
152 public boolean isManual(String vspId, Version version) {
153 final VspDetails vspDetails = get(new VspDetails(vspId, version));
154 if (vspDetails != null) {
155 if ("Manual".equals(vspDetails.getOnboardingMethod())) {
162 private Info mapVspDetailsToZusammenItemInfo(VspDetails vspDetails) {
163 Info info = new Info();
164 info.setName(vspDetails.getName());
165 info.setDescription(vspDetails.getDescription());
166 info.addProperty("type", "vsp");
167 addVspDetailsToInfo(info, vspDetails);
171 private ZusammenElement mapVspDetailsToZusammenElement(VspDetails vspDetails, Action action) {
172 ZusammenElement generalElement =
173 VspZusammenUtil.buildStructuralElement(StructureElement.General, action);
174 addVspDetailsToInfo(generalElement.getInfo(), vspDetails);
175 return generalElement;
178 private ZusammenElement mapQuestionnaireToZusammenElement(String questionnaireData) {
179 ZusammenElement questionnaireElement =
180 VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, Action.UPDATE);
181 questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
182 return questionnaireElement;
185 private void addVspDetailsToInfo(Info info, VspDetails vspDetails) {
186 info.addProperty(InfoPropertyName.name.name(), vspDetails.getName());
187 info.addProperty(InfoPropertyName.description.name(), vspDetails.getDescription());
188 info.addProperty(InfoPropertyName.icon.name(), vspDetails.getIcon());
189 info.addProperty(InfoPropertyName.category.name(), vspDetails.getCategory());
190 info.addProperty(InfoPropertyName.subCategory.name(), vspDetails.getSubCategory());
191 info.addProperty(InfoPropertyName.vendorId.name(), vspDetails.getVendorId());
192 info.addProperty(InfoPropertyName.vendorName.name(), vspDetails.getVendorName());
193 if (vspDetails.getVlmVersion() != null) {
195 InfoPropertyName.vendorVersion.name(), vspDetails.getVlmVersion().toString());
197 info.addProperty(InfoPropertyName.licenseAgreement.name(), vspDetails.getLicenseAgreement());
198 info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups());
199 info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion());
200 info.addProperty(InfoPropertyName.onboardingMethod.name(), vspDetails.getOnboardingMethod());
201 info.addProperty(InfoPropertyName.obBoardingOrigin.name(), vspDetails.getOnboardingOrigin());
202 info.addProperty(InfoPropertyName.networkPackageName.name(), vspDetails.getNetworkPackageName());
205 private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info,
206 Date modificationTime, Date creationTime) {
207 VspDetails vspDetails = new VspDetails(vspId, version);
208 vspDetails.setName(info.getProperty(InfoPropertyName.name.name()));
209 vspDetails.setDescription(info.getProperty(InfoPropertyName.description.name()));
210 vspDetails.setCategory(info.getProperty(InfoPropertyName.category.name()));
211 vspDetails.setSubCategory(info.getProperty(InfoPropertyName.subCategory.name()));
212 vspDetails.setVendorId(info.getProperty(InfoPropertyName.vendorId.name()));
213 vspDetails.setVendorName(info.getProperty(InfoPropertyName.vendorName.name()));
214 vspDetails.setVlmVersion(
215 Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name())));
216 vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name()));
217 vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name()));
219 vspDetails.setWritetimeMicroSeconds(
220 modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
221 vspDetails.setVersion(version);
222 String oldVersion = info.getProperty(InfoPropertyName.oldVersion.name());
224 //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase());
225 vspDetails.setOldVersion(oldVersion);
226 vspDetails.setOnboardingMethod(info.getProperty(InfoPropertyName.onboardingMethod.name()));
227 vspDetails.setOnboardingOrigin(info.getProperty(InfoPropertyName.obBoardingOrigin.name()));
228 vspDetails.setNetworkPackageName(info.getProperty(InfoPropertyName.networkPackageName.name()));
232 private enum InfoPropertyName {