Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-healing-lib / openecomp-sdc-healing-impl / src / main / java / org / openecomp / sdc / healing / healers / VlmVersionHealer.java
index 085923b..a57ac74 100644 (file)
@@ -1,26 +1,21 @@
 package org.openecomp.sdc.healing.healers;
 
-import org.apache.commons.collections4.CollectionUtils;
-import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.healing.interfaces.Healer;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.vendorlicense.dao.LicenseAgreementDao;
 import org.openecomp.sdc.vendorlicense.dao.LicenseAgreementDaoFactory;
 import org.openecomp.sdc.vendorlicense.dao.types.LicenseAgreementEntity;
-import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
-import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade;
-import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacadeFactory;
-import org.openecomp.sdc.vendorlicense.types.VersionedVendorLicenseModel;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.versioning.VersioningManager;
+import org.openecomp.sdc.versioning.VersioningManagerFactory;
 import org.openecomp.sdc.versioning.dao.types.Version;
-import org.openecomp.sdc.versioning.types.VersionInfo;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
 
 import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.Collection;
 import java.util.Objects;
 import java.util.Optional;
 
@@ -28,8 +23,8 @@ import java.util.Optional;
  * Created by TALIO on 7/3/2017.
  */
 public class VlmVersionHealer implements Healer {
-  private static final VendorLicenseFacade vendorLicenseFacade =
-      VendorLicenseFacadeFactory.getInstance().createInterface();
+  private VersioningManager versioningManager =
+      VersioningManagerFactory.getInstance().createInterface();
   private static final VendorSoftwareProductInfoDao vspInfoDao =
       VendorSoftwareProductInfoDaoFactory.getInstance().createInterface();
   private static final LicenseAgreementDao licenseAgreementDao =
@@ -38,51 +33,35 @@ public class VlmVersionHealer implements Healer {
       LoggerFactory.getLogger(VlmVersionHealer.class);
 
   @Override
-  public Object heal(Map<String, Object> healingParams) throws Exception {
-    String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
-    Version version = (Version) healingParams.get(SdcCommon.VERSION);
-    String user = (String) healingParams.get(SdcCommon.USER);
-
+  public Object heal(String vspId, Version version) throws Exception {
     VspDetails vspDetails = vspInfoDao.get(new VspDetails(vspId, version));
-    VersionedVendorLicenseModel vendorLicenseModel;
-    
-    if(!Objects.isNull(vspDetails.getVlmVersion())) {
+
+    if (!Objects.isNull(vspDetails.getVlmVersion())) {
       return Optional.empty();
     }
 
-
-    try{
-      vendorLicenseModel =
-          vendorLicenseFacade.getVendorLicenseModel(vspDetails.getVendorId(), null, user);
-    } catch (Exception e){
-      logger.debug("" + e);
+    // get the certified vlm version with the highest number in its name
+    Optional<Version> certifiedVlmVersion =
+        versioningManager.list(vspDetails.getVendorId()).stream()
+            .filter(ver -> VersionStatus.Certified == ver.getStatus())
+            .max((o1, o2) -> ((Double) Double.parseDouble(o1.getName()))
+                .compareTo(Double.parseDouble(o2.getName())));
+    if (!certifiedVlmVersion.isPresent()) {
       logger.debug("No Vlm was found for Vsp " + vspDetails.getName());
       return Optional.empty();
     }
+    vspDetails.setVlmVersion(certifiedVlmVersion.get());
 
-    VendorLicenseModelEntity vlm = vendorLicenseModel.getVendorLicenseModel();
-    String vlmId = vlm.getId();
-    Version vlmVersion = getLatestFinalVlmVersion(vendorLicenseModel.getVersionInfo());
-
-    List<LicenseAgreementEntity> laList =
-        new ArrayList<>(
-            licenseAgreementDao.list(new LicenseAgreementEntity(vlmId, vlmVersion, null)));
-
-
-    vspDetails.setVlmVersion(vlmVersion);
-
-    if(CollectionUtils.isNotEmpty(laList)) {
-      vspDetails.setLicenseAgreement(laList.get(0).getId());
-      vspDetails.setFeatureGroups(new ArrayList<>(laList.get(0).getFeatureGroupIds()));
+    Collection<LicenseAgreementEntity> licenseAgreements = licenseAgreementDao.list(
+        new LicenseAgreementEntity(vspDetails.getVendorId(), certifiedVlmVersion.get(), null));
+    if (!licenseAgreements.isEmpty()) {
+      LicenseAgreementEntity licenseAgreement = licenseAgreements.iterator().next();
+      vspDetails.setLicenseAgreement(licenseAgreement.getId());
+      vspDetails.setFeatureGroups(new ArrayList<>(licenseAgreement.getFeatureGroupIds()));
     }
 
     vspInfoDao.update(vspDetails);
-    return vspDetails;
 
-  }
-
-  private Version getLatestFinalVlmVersion(VersionInfo versionInfo){
-    return versionInfo.getActiveVersion().isFinal() ? versionInfo.getActiveVersion()
-        : versionInfo.getLatestFinalVersion();
+    return vspDetails;
   }
 }