Validate vlm is not draft during vsp submit
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-license-lib / openecomp-sdc-vendor-license-core / src / main / java / org / openecomp / sdc / vendorlicense / facade / impl / VendorLicenseFacadeImpl.java
index 50772a3..818d772 100644 (file)
@@ -92,7 +92,7 @@ public class VendorLicenseFacadeImpl implements VendorLicenseFacade {
                   .withMessage("The supplied vendor is archived and therefore cannot be used").build();
   private static final ErrorCode USED_VLM_IS_DRAFT_ERROR =
           new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).withId(FIELD_VALIDATION_ERROR_ERR_ID)
-                                          .withMessage("The supplied vendor version is draft and therefor can not be used").build();
+                                          .withMessage("The supplied vendor version is draft and therefore can not be used").build();
 
 
   /**
@@ -328,25 +328,29 @@ public class VendorLicenseFacadeImpl implements VendorLicenseFacade {
     return errorMessages;
   }
 
-  @Override
-  public Optional<ErrorCode> validateVendorForUsage(String vlmId, Version version) {
-    Item vlm = ItemManagerFactory.getInstance().createInterface().get(vlmId);
-    if(vlm == null) {
-      return Optional.of(USED_VLM_NOT_EXIST_ERROR);
+    @Override
+    public Optional<ErrorCode> validateVendorForUsage(String vlmId, Version version) {
+        Item vlm = ItemManagerFactory.getInstance().createInterface().get(vlmId);
+        return vlm == null
+                       ? Optional.of(USED_VLM_NOT_EXIST_ERROR)
+                       : ItemStatus.ARCHIVED == vlm.getStatus()
+                                 ? Optional.of(USED_VLM_ARCHIVE_ERROR)
+                                 : isDraftVlm(vlm, version)
+                                           ? Optional.of(USED_VLM_IS_DRAFT_ERROR)
+                                           : Optional.empty();
     }
 
-    if (ItemStatus.ARCHIVED == vlm.getStatus()){
-      return  Optional.of(USED_VLM_ARCHIVE_ERROR);
-    }
+  private boolean isDraftVlm(Item vlm, Version version) {
+    return (version == null && isVlmWithoutCertifiedVersions(vlm)) ||
+              (version != null && VersionStatus.Draft.equals(version.getStatus()));
+  }
 
-   if(VersionStatus.Draft.equals(version.getStatus())){
-     return Optional.of(USED_VLM_IS_DRAFT_ERROR);
+  private boolean isVlmWithoutCertifiedVersions(Item vlm) {
+        Integer numOfCertifiedVersions = vlm.getVersionStatusCounters().get(VersionStatus.Certified);
+        return numOfCertifiedVersions == null || numOfCertifiedVersions < 1;
     }
 
-    return Optional.empty();
-  }
-
-  @Override
+    @Override
   public LicenseAgreementEntity getLicenseAgreement(String vlmId, Version version,
                                                     String licenseAgreementId) {
     LicenseAgreementEntity input = new LicenseAgreementEntity(vlmId, version, licenseAgreementId);