From 347803bd8d8349baa0577156896a1ec924a69e6d Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 03 Apr 2017 16:41:28 +0000
Subject: [PATCH] #3535 fix - Marked obsolete metadata field on licenses
---
securis/src/main/java/net/curisit/securis/services/helpers/MetadataHelper.java | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/helpers/MetadataHelper.java b/securis/src/main/java/net/curisit/securis/services/helpers/MetadataHelper.java
index 6934095..ce6fb45 100644
--- a/securis/src/main/java/net/curisit/securis/services/helpers/MetadataHelper.java
+++ b/securis/src/main/java/net/curisit/securis/services/helpers/MetadataHelper.java
@@ -16,6 +16,8 @@
import net.curisit.securis.db.Application;
import net.curisit.securis.db.ApplicationMetadata;
+import net.curisit.securis.db.License;
+import net.curisit.securis.db.LicenseStatus;
import net.curisit.securis.db.LicenseType;
import net.curisit.securis.db.LicenseTypeMetadata;
import net.curisit.securis.db.Pack;
@@ -108,13 +110,11 @@
public void propagateMetadata(EntityManager em, Application app) {
Set<ApplicationMetadata> appMd = app.getApplicationMetadata();
Set<String> keys = appMd.parallelStream().map(md -> md.getKey()).collect(Collectors.toSet());
- log.info("App metadata keys: {}", keys);
for (LicenseType lt : app.getLicenseTypes()) {
log.info("Lic type to update: {}", lt.getCode());
this.mergeMetadata(em, appMd, lt.getMetadata(), keys);
Set<LicenseTypeMetadata> newMdList = createNewMetadata(appMd, lt.getMetadata(), lt);
for (LicenseTypeMetadata newMetadata : newMdList) {
- log.info("MD key to add to lt: {}", newMetadata.getKey());
em.persist(newMetadata);
}
em.detach(lt);
@@ -142,14 +142,29 @@
List<Pack> packs = packsQuery.getResultList();
log.info("Packs to update the metadata: {}", packs.size());
for (Pack pack : packs) {
+ if (pack.isFrozen()) {
+ log.warn("Metadata in LicenseType {} has changed but the Pack {} is frozen and won't be updated.", lt.getCode(), pack.getCode());
+ continue;
+ }
this.mergeMetadata(em, ltMd, pack.getMetadata(), keys);
Set<PackMetadata> newMdList = createNewMetadata(ltMd, pack.getMetadata(), pack);
for (PackMetadata newMetadata : newMdList) {
- log.info("MD key to add to pack: {}", newMetadata.getKey());
em.persist(newMetadata);
}
+ markObsoleteMetadata(em, pack);
em.detach(pack);
}
}
+ public void markObsoleteMetadata(EntityManager em, Pack pack) {
+ TypedQuery<License> existingPackLicenses = em.createNamedQuery("list-licenses-by-pack", License.class);
+ existingPackLicenses.setParameter("packId", pack.getId());
+ for (License lic : existingPackLicenses.getResultList()) {
+ log.info("License from pack: {}, status: {}", lic.getCode(), lic.getStatus());
+ if (lic.getStatus() == LicenseStatus.ACTIVE || lic.getStatus() == LicenseStatus.PRE_ACTIVE || lic.getStatus() == LicenseStatus.CANCELLED) {
+ lic.setMetadataObsolete(true);
+ em.merge(lic);
+ }
+ }
+ }
}
--
Gitblit v1.3.2