From fb1b6755a9ecd43601dc4fbef9166d11d8a86f24 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Tue, 14 Oct 2014 16:25:10 +0000
Subject: [PATCH] #2021 config - Added application Metadata management

---
 securis/src/main/java/net/curisit/securis/services/ApplicationResource.java |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index d6079e9..c4a81b0 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -2,6 +2,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 import javax.inject.Inject;
 import javax.inject.Provider;
@@ -25,6 +26,7 @@
 import net.curisit.integrity.commons.Utils;
 import net.curisit.securis.DefaultExceptionHandler;
 import net.curisit.securis.db.Application;
+import net.curisit.securis.db.ApplicationMetadata;
 import net.curisit.securis.utils.TokenHelper;
 
 import org.apache.logging.log4j.LogManager;
@@ -110,6 +112,14 @@
         EntityManager em = emProvider.get();
         app.setCreationTimestamp(new Date());
         em.persist(app);
+        LOG.info("App ID: {}", app.getId());
+        if (app.getApplicationMetadata() != null) {
+            for (ApplicationMetadata md : app.getApplicationMetadata()) {
+                md.setApplication(app);
+                md.setCreationTimestamp(app.getCreationTimestamp());
+                em.persist(md);
+            }
+        }
 
         return Response.ok(app).build();
     }
@@ -134,7 +144,23 @@
         currentapp.setName(app.getName());
         currentapp.setDescription(app.getDescription());
         em.persist(currentapp);
-
+        
+        Set<ApplicationMetadata> newMD = app.getApplicationMetadata(); 
+        for (ApplicationMetadata currentMd : currentapp.getApplicationMetadata()) {
+            if (newMD == null || !newMD.contains(currentMd));
+                em.remove(currentMd);
+        }
+        
+        if (newMD != null) {
+            for (ApplicationMetadata md : newMD) {
+                md.setApplication(app);
+                if (md.getCreationTimestamp() == null) {
+                    md.setCreationTimestamp(app.getCreationTimestamp());
+                }
+                em.persist(md);
+            }
+        }
+        currentapp.setApplicationMetadata(app.getApplicationMetadata());
         return Response.ok(currentapp).build();
     }
 

--
Gitblit v1.3.2