rsanchez
2017-04-03 347803bd8d8349baa0577156896a1ec924a69e6d
securis/src/main/java/net/curisit/securis/services/PackResource.java
....@@ -44,6 +44,7 @@
4444 import net.curisit.securis.services.exception.SeCurisServiceException;
4545 import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
4646 import net.curisit.securis.services.helpers.LicenseHelper;
47
+import net.curisit.securis.services.helpers.MetadataHelper;
4748 import net.curisit.securis.utils.LicUtils;
4849 import net.curisit.securis.utils.TokenHelper;
4950
....@@ -60,6 +61,9 @@
6061
6162 @Inject
6263 TokenHelper tokenHelper;
64
+
65
+ @Inject
66
+ MetadataHelper metadataHelper;
6367
6468 @Context
6569 EntityManager em;
....@@ -273,27 +277,34 @@
273277 currentPack.setEndValidDate(pack.getEndValidDate());
274278
275279 Set<PackMetadata> newMD = pack.getMetadata();
276
- Set<String> newMdKeys = getMdKeys(newMD);
277
- for (PackMetadata currentMd : currentPack.getMetadata()) {
278
- if (!newMdKeys.contains(currentMd.getKey())) {
279
- em.remove(currentMd);
280
- }
281
- }
282
-
283
- if (newMD != null) {
284
- Set<String> oldMdKeys = getMdKeys(newMD);
285
- for (PackMetadata md : newMD) {
286
- if (oldMdKeys.contains(md.getKey())) {
287
- em.merge(md);
288
- } else {
289
- md.setPack(currentPack);
290
- em.persist(md);
280
+ boolean metadataChanges = !metadataHelper.match(newMD, currentPack.getMetadata());
281
+ if (metadataChanges) {
282
+ Set<String> newMdKeys = getMdKeys(newMD);
283
+ for (PackMetadata currentMd : currentPack.getMetadata()) {
284
+ if (!newMdKeys.contains(currentMd.getKey())) {
285
+ em.remove(currentMd);
291286 }
292287 }
288
+
289
+ if (newMD != null) {
290
+ Set<String> oldMdKeys = getMdKeys(newMD);
291
+ for (PackMetadata md : newMD) {
292
+ if (oldMdKeys.contains(md.getKey())) {
293
+ em.merge(md);
294
+ } else {
295
+ md.setPack(currentPack);
296
+ em.persist(md);
297
+ }
298
+ }
299
+ }
300
+ currentPack.setMetadata(newMD);
293301 }
294
- currentPack.setMetadata(newMD);
295302 em.merge(currentPack);
296303
304
+ if (metadataChanges) {
305
+ metadataHelper.markObsoleteMetadata(em, currentPack);
306
+ }
307
+
297308 return Response.ok(currentPack).build();
298309 }
299310