From 04f9a9d2dbd2d79bfffea9c5a6b7ba1b32c5f42b Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 17 Nov 2014 15:29:03 +0000
Subject: [PATCH] #396 fix - Supporting MySQL, changed "persist()" by "merge()"

---
 securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index 2a800e0..79f4e5c 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -132,8 +132,8 @@
 
         lt.setCreationTimestamp(new Date());
         em.persist(lt);
-        Set<LicenseTypeMetadata> newMD = lt.getMetadata(); 
-        
+        Set<LicenseTypeMetadata> newMD = lt.getMetadata();
+
         if (newMD != null) {
             for (LicenseTypeMetadata md : newMD) {
                 md.setLicenseType(lt);
@@ -174,21 +174,29 @@
         currentlt.setCode(lt.getCode());
         currentlt.setName(lt.getName());
         currentlt.setDescription(lt.getDescription());
-        em.persist(currentlt);
-        
-        Set<LicenseTypeMetadata> newMD = lt.getMetadata(); 
+
+        Set<LicenseTypeMetadata> newMD = lt.getMetadata();
         for (LicenseTypeMetadata currentMd : currentlt.getMetadata()) {
-            if (newMD == null || !newMD.contains(currentMd));
+            if (newMD == null || !newMD.contains(currentMd)) {
                 em.remove(currentMd);
+                LOG.info("Removing MD: {}", currentMd);
+            }
         }
-        
+
         if (newMD != null) {
+            Set<LicenseTypeMetadata> oldMD = currentlt.getMetadata();
+
             for (LicenseTypeMetadata md : newMD) {
-                md.setLicenseType(currentlt);
-                em.persist(md);
+                if (oldMD.contains(md)) {
+                    em.merge(md);
+                } else {
+                    md.setLicenseType(currentlt);
+                    em.persist(md);
+                }
             }
         }
         currentlt.setMetadata(newMD);
+        em.merge(currentlt);
 
         return Response.ok(currentlt).build();
     }

--
Gitblit v1.3.2