1 package org.openecomp.sdc.healing.healers;
3 import org.openecomp.sdc.healing.interfaces.Healer;
4 import org.openecomp.sdc.logging.api.Logger;
5 import org.openecomp.sdc.logging.api.LoggerFactory;
6 import org.openecomp.sdc.vendorlicense.dao.LicenseAgreementDao;
7 import org.openecomp.sdc.vendorlicense.dao.LicenseAgreementDaoFactory;
8 import org.openecomp.sdc.vendorlicense.dao.types.LicenseAgreementEntity;
9 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
10 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
11 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
12 import org.openecomp.sdc.versioning.VersioningManager;
13 import org.openecomp.sdc.versioning.VersioningManagerFactory;
14 import org.openecomp.sdc.versioning.dao.types.Version;
15 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
17 import java.util.ArrayList;
18 import java.util.Collection;
19 import java.util.Objects;
20 import java.util.Optional;
23 * Created by TALIO on 7/3/2017.
25 public class VlmVersionHealer implements Healer {
26 private VersioningManager versioningManager =
27 VersioningManagerFactory.getInstance().createInterface();
28 private static final VendorSoftwareProductInfoDao vspInfoDao =
29 VendorSoftwareProductInfoDaoFactory.getInstance().createInterface();
30 private static final LicenseAgreementDao licenseAgreementDao =
31 LicenseAgreementDaoFactory.getInstance().createInterface();
32 private static final Logger logger =
33 LoggerFactory.getLogger(VlmVersionHealer.class);
36 public Object heal(String vspId, Version version) throws Exception {
37 VspDetails vspDetails = vspInfoDao.get(new VspDetails(vspId, version));
39 if (!Objects.isNull(vspDetails.getVlmVersion())) {
40 return Optional.empty();
43 // get the certified vlm version with the highest number in its name
44 Optional<Version> certifiedVlmVersion =
45 versioningManager.list(vspDetails.getVendorId()).stream()
46 .filter(ver -> VersionStatus.Certified == ver.getStatus())
47 .max((o1, o2) -> ((Double) Double.parseDouble(o1.getName()))
48 .compareTo(Double.parseDouble(o2.getName())));
49 if (!certifiedVlmVersion.isPresent()) {
50 logger.debug("No Vlm was found for Vsp " + vspDetails.getName());
51 return Optional.empty();
53 vspDetails.setVlmVersion(certifiedVlmVersion.get());
55 Collection<LicenseAgreementEntity> licenseAgreements = licenseAgreementDao.list(
56 new LicenseAgreementEntity(vspDetails.getVendorId(), certifiedVlmVersion.get(), null));
57 if (!licenseAgreements.isEmpty()) {
58 LicenseAgreementEntity licenseAgreement = licenseAgreements.iterator().next();
59 vspDetails.setLicenseAgreement(licenseAgreement.getId());
60 vspDetails.setFeatureGroups(new ArrayList<>(licenseAgreement.getFeatureGroupIds()));
63 vspInfoDao.update(vspDetails);