diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts')
10 files changed, 266 insertions, 131 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java index 2f11b75a98..580fc6c0e5 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java @@ -20,11 +20,10 @@ package org.openecomp.sdc.vendorlicense.licenseartifacts.impl; -import org.apache.commons.collections4.MultiValuedMap; -import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.common.utils.CommonUtil; +import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import org.openecomp.sdc.vendorlicense.HealingServiceFactory; -import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupModel; @@ -35,166 +34,115 @@ import org.openecomp.sdc.vendorlicense.healing.HealingService; import org.openecomp.sdc.vendorlicense.licenseartifacts.VendorLicenseArtifactsService; import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VendorLicenseArtifact; import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VnfLicenseArtifact; +import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.dao.types.VersionableEntity; -import org.openecomp.sdc.versioning.types.VersionInfo; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH; +import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VNF_ARTIFACT_NAME_WITH_PATH; + public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifactsService { - private static final VendorLicenseFacade vendorLicenseFacade = VendorLicenseFacadeFactory - .getInstance().createInterface(); - private static final HealingService healingService = HealingServiceFactory - .getInstance().createInterface(); + public static final VendorLicenseFacade vendorLicenseFacade = + VendorLicenseFacadeFactory.getInstance().createInterface(); + public static final HealingService healingService = + HealingServiceFactory.getInstance().createInterface(); + private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); - /** - * Create License Artifacts. - * - * @param vspId the vsp id - * @param vlmId the vlm id - * @param vlmVersion the vlm version - * @param featureGroups the feature groups - * @param user the user - * @return FileContentHandler - */ - public FileContentHandler createLicenseArtifacts(String vspId, String vlmId, - Version vlmVersion, - List<String> featureGroups, String user) { - FileContentHandler artifacts = new FileContentHandler(); - String vendorName = getVendorName(vlmId, user); - artifacts.addFile(VendorLicenseConstants.VNF_ARTIFACT_NAME_WITH_PATH, - createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user)); - artifacts.addFile(VendorLicenseConstants.VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH, - createVendorLicenseArtifact(vlmId, vendorName, user)); + static byte[] createVnfArtifact(String vspId, String vlmId, Version vlmVersion, String vendorName, + List<String> featureGroups, String user) { - return artifacts; - } - static byte[] createVnfArtifact( - String vspId, String vlmId, Version vlmVersion, - String vendorName, List<String> featureGroups, - String user) { + mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName); + VnfLicenseArtifact artifact = new VnfLicenseArtifact(); artifact.setVspId(vspId); artifact.setVendorName(vendorName); for (String featureGroupId : featureGroups) { - FeatureGroupModel featureGroupModel = - vendorLicenseFacade.getFeatureGroupModel(new FeatureGroupEntity( - vlmId, vlmVersion, featureGroupId), user); + FeatureGroupModel featureGroupModel = vendorLicenseFacade + .getFeatureGroupModel(new FeatureGroupEntity(vlmId, vlmVersion, featureGroupId), user); Set<EntitlementPoolEntity> entitlementPoolEntities = featureGroupModel.getEntitlementPools(); Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = featureGroupModel.getLicenseKeyGroups(); - featureGroupModel.setEntitlementPools( - entitlementPoolEntities.stream() - .map(entitlementPoolEntity -> (EntitlementPoolEntity) healingService - .heal(entitlementPoolEntity, user)) - .collect(Collectors.toSet())); - featureGroupModel.setLicenseKeyGroups( - licenseKeyGroupEntities.stream() - .map(licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService - .heal(licenseKeyGroupEntity, user)) - .collect(Collectors.toSet())); + featureGroupModel.setEntitlementPools(entitlementPoolEntities.stream().map( + entitlementPoolEntity -> (EntitlementPoolEntity) healingService + .heal(entitlementPoolEntity, user)).collect(Collectors.toSet())); + featureGroupModel.setLicenseKeyGroups(licenseKeyGroupEntities.stream().map( + licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService + .heal(licenseKeyGroupEntity, user)).collect(Collectors.toSet())); artifact.getFeatureGroups().add(featureGroupModel); } + mdcDataDebugMessage.debugExitMessage("VLM name", vendorName); return artifact.toXml().getBytes(); } - static byte[] createVendorLicenseArtifact(String vlmId, String vendorName, String user) { + + + mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName); + VendorLicenseArtifact vendorLicenseArtifact = new VendorLicenseArtifact(); vendorLicenseArtifact.setVendorName(vendorName); Set<EntitlementPoolEntity> entitlementPoolEntities = new HashSet<>(); Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = new HashSet<>(); - List<Version> finalVersions = getFinalVersionsForVlm(vlmId); + List<Version> finalVersions = VendorLicenseArtifactsServiceUtils.getFinalVersionsForVlm(vlmId); for (Version finalVersion : finalVersions) { - entitlementPoolEntities.addAll( - vendorLicenseFacade.listEntitlementPools(vlmId, finalVersion, user)); - licenseKeyGroupEntities.addAll( - vendorLicenseFacade.listLicenseKeyGroups(vlmId, finalVersion, user)); + entitlementPoolEntities + .addAll(vendorLicenseFacade.listEntitlementPools(vlmId, finalVersion, user)); + licenseKeyGroupEntities + .addAll(vendorLicenseFacade.listLicenseKeyGroups(vlmId, finalVersion, user)); } - entitlementPoolEntities = healEPs(user, filterChangedEntities(entitlementPoolEntities)); - licenseKeyGroupEntities = healLkgs(user, filterChangedEntities(licenseKeyGroupEntities)); + entitlementPoolEntities = VendorLicenseArtifactsServiceUtils + .healEPs(user, + VendorLicenseArtifactsServiceUtils.filterChangedEntities(entitlementPoolEntities)); + licenseKeyGroupEntities = VendorLicenseArtifactsServiceUtils + .healLkgs(user, + VendorLicenseArtifactsServiceUtils.filterChangedEntities(licenseKeyGroupEntities)); vendorLicenseArtifact.setEntitlementPoolEntities(entitlementPoolEntities); vendorLicenseArtifact.setLicenseKeyGroupEntities(licenseKeyGroupEntities); - return vendorLicenseArtifact.toXml().getBytes(); - } - - private static List<VersionableEntity> filterChangedEntities( - Collection<? extends VersionableEntity> versionableEntities) { - MultiValuedMap<String, VersionableEntity> entitiesById = mapById(versionableEntities); - Map<String, VersionableEntity> entitiesByVersionUuId = new HashMap<>(); - List<VersionableEntity> changedOnly = new ArrayList<>(); - - for (String epId : entitiesById.keySet()) { - Collection<VersionableEntity> versionableEntitiesForId = entitiesById.get(epId); - for (VersionableEntity ep : versionableEntitiesForId) { - entitiesByVersionUuId.put(ep.getVersionUuId(), ep); - } - } - changedOnly.addAll(entitiesByVersionUuId.values()); - - return changedOnly; - } - - private static MultiValuedMap<String, VersionableEntity> mapById( - Collection<? extends VersionableEntity> versionableEntities) { - MultiValuedMap<String, VersionableEntity> mappedById = new ArrayListValuedHashMap<>(); - for (VersionableEntity ve : versionableEntities) { - mappedById.put(ve.getId(), ve); - } - return mappedById; + mdcDataDebugMessage.debugExitMessage("VLM name", vendorName); + return vendorLicenseArtifact.toXml().getBytes(); } - private static Set<LicenseKeyGroupEntity> healLkgs( - String user, Collection<? extends VersionableEntity> licenseKeyGroupEntities) { - Set<LicenseKeyGroupEntity> healed = new HashSet<>(); - for (VersionableEntity licenseKeyGroupEntity : licenseKeyGroupEntities) { - healed.add((LicenseKeyGroupEntity) healingService.heal(licenseKeyGroupEntity, user)); - } - - return healed; - } + /** + * Create License Artifacts. + * @param vspId vspId + * @param vlmId vlmId + * @param vlmVersion vlmVersion + * @param featureGroups featureGroups + * @param user user + * @return FileContentHandler + */ + public FileContentHandler createLicenseArtifacts(String vspId, String vlmId, Version vlmVersion, + List<String> featureGroups, String user) { - private static Set<EntitlementPoolEntity> healEPs( - String user, Collection<? extends VersionableEntity> entitlementPoolEntities) { - Set<EntitlementPoolEntity> healed = new HashSet<>(); - for (VersionableEntity entitlementPoolEntity : entitlementPoolEntities) { - healed.add((EntitlementPoolEntity) healingService.heal(entitlementPoolEntity, user)); - } - return healed; - } + mdcDataDebugMessage.debugEntryMessage("VSP Id", vspId); - private static List<Version> getFinalVersionsForVlm(String vlmId) { - VersionInfo versionInfo = vendorLicenseFacade - .getVersionInfo(vlmId, VersionableEntityAction.Read, ""); - return versionInfo.getFinalVersions(); + FileContentHandler artifacts = new FileContentHandler(); + String vendorName = VendorLicenseArtifactsServiceUtils.getVendorName(vlmId, user); - } + artifacts.addFile(VNF_ARTIFACT_NAME_WITH_PATH, + createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user)); + artifacts.addFile(VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH, + createVendorLicenseArtifact(vlmId, vendorName, user)); + mdcDataDebugMessage.debugExitMessage("VSP Id", vspId); - private static String getVendorName(String vendorLicenseModelId, String user) { - return vendorLicenseFacade - .getVendorLicenseModel(vendorLicenseModelId, null, user) - .getVendorLicenseModel().getVendorName(); + return artifacts; } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/VnfLicenseArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/VnfLicenseArtifact.java index 1f8607765a..f1da629960 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/VnfLicenseArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/VnfLicenseArtifact.java @@ -36,11 +36,11 @@ import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.mixins.MixinE import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.mixins.MixinFeatureGroupModel; import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.mixins.MixinLicenseKeyGroupEntityForVnfArtifact; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; import java.io.Writer; import java.util.ArrayList; import java.util.List; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; @JacksonXmlRootElement(localName = "vf-license-model", namespace = "http://xmlns.openecomp.org/asdc/license-model/1.0") diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/XmlArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/XmlArtifact.java index 78d5e22412..3a3fbd16a3 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/XmlArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/XmlArtifact.java @@ -22,6 +22,12 @@ package org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; +import org.openecomp.sdc.logging.types.LoggerConstants; +import org.openecomp.sdc.logging.types.LoggerErrorCode; +import org.openecomp.sdc.logging.types.LoggerErrorDescription; +import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.errors.JsonErrorBuilder; @@ -42,8 +48,11 @@ public abstract class XmlArtifact { try { xml = xmlMapper.writeValueAsString(this); - } catch (com.fasterxml.jackson.core.JsonProcessingException jsonProcessingException) { - throw new CoreException(new JsonErrorBuilder(jsonProcessingException.getMessage()).build()); + } catch (com.fasterxml.jackson.core.JsonProcessingException exception) { + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.WRITE_ARTIFACT_XML, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_JSON); + throw new CoreException(new JsonErrorBuilder(exception.getMessage()).build()); } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVendorLicenseArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVendorLicenseArtifact.java index 1458fa80a7..020316f019 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVendorLicenseArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVendorLicenseArtifact.java @@ -22,13 +22,14 @@ package org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.mixins; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import org.openecomp.sdc.vendorlicense.dao.types.AggregationFunction; import org.openecomp.sdc.vendorlicense.dao.types.ChoiceOrOther; import org.openecomp.sdc.vendorlicense.dao.types.EntitlementMetric; import org.openecomp.sdc.vendorlicense.dao.types.EntitlementTime; import org.openecomp.sdc.vendorlicense.dao.types.OperationalScope; +import org.openecomp.sdc.vendorlicense.dao.types.AggregationFunction; import org.openecomp.sdc.vendorlicense.dao.types.xml.AggregationFunctionForXml; import org.openecomp.sdc.vendorlicense.dao.types.xml.EntitlementMetricForXml; import org.openecomp.sdc.vendorlicense.dao.types.xml.EntitlementTimeForXml; @@ -36,6 +37,7 @@ import org.openecomp.sdc.vendorlicense.dao.types.xml.ThresholdForXml; import java.util.Set; +@JsonPropertyOrder({ "entitlement-pool-invariant-uuid", "entitlement-pool-uuid" }) public abstract class MixinEntitlementPoolEntityForVendorLicenseArtifact { @JsonProperty(value = "threshold-value") abstract ThresholdForXml getThresholdForArtifact(); @@ -43,24 +45,26 @@ public abstract class MixinEntitlementPoolEntityForVendorLicenseArtifact { @JsonProperty(value = "entitlement-pool-uuid") abstract String getVersionUuId(); - @JsonProperty(value = "manufacturer-reference-number") - abstract String getManufacturerReferenceNumber(); - @JsonIgnore abstract Set<String> getReferencingFeatureGroups(); @JsonIgnore abstract String getFirstClassCitizenId(); - @JsonIgnore + @JsonProperty(value = "entitlement-pool-invariant-uuid") abstract String getId(); - @JsonIgnore - abstract String getVersion(); + @JsonProperty(value = "manufacturer-reference-number") + abstract String getManufacturerReferenceNumber(); + + @JsonProperty(value = "version") + abstract String getVersionForArtifact(); @JsonIgnore abstract String getVendorLicenseModelId(); + + @JsonIgnore abstract String getThresholdUnit(); @@ -79,7 +83,7 @@ public abstract class MixinEntitlementPoolEntityForVendorLicenseArtifact { @JsonIgnore abstract String getEntityType(); - @JacksonXmlProperty(isAttribute = false, localName = "value") + @JacksonXmlProperty(localName = "value") @JacksonXmlElementWrapper(localName = "operational-scope") abstract String getOperationalScopeForArtifact(); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVnfArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVnfArtifact.java index c4f2b4d4bd..064d17b8fa 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVnfArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinEntitlementPoolEntityForVnfArtifact.java @@ -59,6 +59,9 @@ public abstract class MixinEntitlementPoolEntityForVnfArtifact { abstract String getVersion(); @JsonIgnore + abstract String getVersionForArtifact(); + + @JsonIgnore abstract String getVendorLicenseModelId(); @JsonIgnore diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinFeatureGroupModel.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinFeatureGroupModel.java index 1e76a74f4c..f5eb5f0bad 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinFeatureGroupModel.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinFeatureGroupModel.java @@ -38,7 +38,7 @@ public abstract class MixinFeatureGroupModel { @JacksonXmlElementWrapper(localName = "license-key-group-list") abstract Set<LicenseKeyGroupEntity> getLicenseKeyGroups(); - @JacksonXmlProperty(isAttribute = false, localName = "internal-part-number") + @JacksonXmlProperty(isAttribute = false, localName = "part-number") abstract String getEntityPartNumber(); @JacksonXmlProperty(isAttribute = false, localName = "feature-group-uuid") diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVendorLicenseArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVendorLicenseArtifact.java index ed3083afe3..b5fb2f4549 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVendorLicenseArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVendorLicenseArtifact.java @@ -37,8 +37,8 @@ public abstract class MixinLicenseKeyGroupEntityForVendorLicenseArtifact { @JsonIgnore abstract Set<String> getReferencingFeatureGroups(); - @JsonIgnore - abstract String getVersion(); + @JsonProperty(value = "version") + abstract String getVersionForArtifact(); @JsonIgnore abstract String getVendorLicenseModelId(); @@ -50,7 +50,7 @@ public abstract class MixinLicenseKeyGroupEntityForVendorLicenseArtifact { @JsonIgnore abstract String getFirstClassCitizenId(); - @JsonIgnore + @JsonProperty(value = "license-key-group-invariant-uuid") abstract String getId(); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVnfArtifact.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVnfArtifact.java index 6281c44830..ed171c6a4b 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVnfArtifact.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/types/mixins/MixinLicenseKeyGroupEntityForVnfArtifact.java @@ -41,6 +41,9 @@ public abstract class MixinLicenseKeyGroupEntityForVnfArtifact { abstract String getVersion(); @JsonIgnore + abstract String getVersionForArtifact(); + + @JsonIgnore abstract String getVendorLicenseModelId(); @@ -54,7 +57,6 @@ public abstract class MixinLicenseKeyGroupEntityForVnfArtifact { abstract String getFirstClassCitizenId(); - @JsonIgnore abstract ChoiceOrOther<OperationalScope> getOperationalScope(); @@ -71,4 +73,3 @@ public abstract class MixinLicenseKeyGroupEntityForVnfArtifact { } - diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java new file mode 100644 index 0000000000..f3e09766db --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java @@ -0,0 +1,132 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util; + +import org.apache.commons.collections4.MultiValuedMap; +import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; +import org.openecomp.sdc.vendorlicense.HealingServiceFactory; +import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; +import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity; +import org.openecomp.sdc.vendorlicense.healing.HealingService; +import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.VendorLicenseArtifactsServiceImpl; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.dao.types.VersionableEntity; +import org.openecomp.sdc.versioning.types.VersionInfo; +import org.openecomp.sdc.versioning.types.VersionableEntityAction; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author katyr + * @since January 10, 2017 + */ + +public class VendorLicenseArtifactsServiceUtils { + private static final HealingService healingService = + HealingServiceFactory.getInstance().createInterface(); + + /** + * maps the entities by id + * + * @return a Map of id -> list of versionable entities with that id + */ + static MultiValuedMap<String, VersionableEntity> mapById( + Collection<? extends VersionableEntity> versionableEntities) { + MultiValuedMap<String, VersionableEntity> mappedById = new ArrayListValuedHashMap<>(); + for (VersionableEntity ve : versionableEntities) { + mappedById.put(ve.getId(), ve); + } + return mappedById; + } + + /** + * For all entities with same id, only entities that differ from one another will be returned. + * If no change has occured, the entity with the earlier VLM version will be returned. + * If only one version of said entitity exists it will be returned + * @param versionableEntities + * @return a list of entities that has been changed + */ + public static List<VersionableEntity> filterChangedEntities( + Collection<? extends VersionableEntity> versionableEntities) { + MultiValuedMap<String, VersionableEntity> entitiesById = mapById( + versionableEntities); + MultiValuedMap<String, VersionableEntity> entitiesByVersionUuId = + new ArrayListValuedHashMap<>(); + List<VersionableEntity> changedOnly = new ArrayList<>(); + + for (String epId : entitiesById.keySet()) { + Collection<VersionableEntity> versionableEntitiesForId = entitiesById.get(epId); + for (VersionableEntity ep : versionableEntitiesForId) { + entitiesByVersionUuId.put(ep.getVersionUuId(), ep); + } + } + + //for every list of eps which have the same uuid, get the one with the earliest vlm version. + for (String versionUid : entitiesByVersionUuId.keySet()) { + List<VersionableEntity> versionableEntitiesForUuid = + (List<VersionableEntity>) entitiesByVersionUuId.get(versionUid); + versionableEntitiesForUuid.sort(new VersionableEntitySortByVlmMajorVersion()); + changedOnly.add(versionableEntitiesForUuid.get(0)); + } + + return changedOnly; + } + + public static Set<LicenseKeyGroupEntity> healLkgs(String user, + Collection<? extends VersionableEntity> licenseKeyGroupEntities) { + Set<LicenseKeyGroupEntity> healed = new HashSet<>(); + for (VersionableEntity licenseKeyGroupEntity : licenseKeyGroupEntities) { + healed.add((LicenseKeyGroupEntity) VendorLicenseArtifactsServiceImpl.healingService + .heal(licenseKeyGroupEntity, user)); + } + + return healed; + } + + public static Set<EntitlementPoolEntity> healEPs(String user, + Collection<? extends VersionableEntity> entitlementPoolEntities) { + Set<EntitlementPoolEntity> healed = new HashSet<>(); + for (VersionableEntity entitlementPoolEntity : entitlementPoolEntities) { + healed.add((EntitlementPoolEntity) VendorLicenseArtifactsServiceImpl.healingService + .heal(entitlementPoolEntity, user)); + } + + return healed; + } + + public static List<Version> getFinalVersionsForVlm(String vlmId) { + VersionInfo versionInfo = + VendorLicenseArtifactsServiceImpl.vendorLicenseFacade + .getVersionInfo(vlmId, VersionableEntityAction.Read, ""); + return versionInfo.getFinalVersions(); + + } + + public static String getVendorName(String vendorLicenseModelId, String user) { + return VendorLicenseArtifactsServiceImpl.vendorLicenseFacade + .getVendorLicenseModel(vendorLicenseModelId, null, user) + .getVendorLicenseModel().getVendorName(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VersionableEntitySortByVlmMajorVersion.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VersionableEntitySortByVlmMajorVersion.java new file mode 100644 index 0000000000..1aee2dd97e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VersionableEntitySortByVlmMajorVersion.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util; + +import org.openecomp.sdc.versioning.dao.types.VersionableEntity; + +import java.util.Comparator; + +/** + * @author katyr + * @since January 10, 2017 + */ + +public class VersionableEntitySortByVlmMajorVersion implements Comparator<VersionableEntity> { + @Override + public int compare(VersionableEntity o1, VersionableEntity o2) { + return Integer.compare(o1.getVersion().getMajor(), o2.getVersion().getMajor()); + + } +} |