From a50b7a2985df84c3ce7e858703576505bbb63814 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Thu, 14 Jul 2016 16:48:43 +0200
Subject: [PATCH] implement missing update model method

---
 .../org/hbp/mip/controllers/ModelsApi.java    | 77 +++++++------------
 1 file changed, 29 insertions(+), 48 deletions(-)

diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index 8b87357ce..1b567aa91 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -244,62 +244,43 @@ public class ModelsApi {
             @RequestBody @ApiParam(value = "Model to update", required = true) Model model
     )  {
 
-        /*User user = mipApplication.getUser();
+        User user = securityConfiguration.getUser();
 
         model.setTitle(model.getConfig().getTitle().get("text"));
 
-        try{
-            String author = (String) session
-                    .createQuery("select U.username from User U, Model M where M.createdBy = U.username and M.slug = :slug")
-                    .setString("slug", slug)
-                    .uniqueResult();
+        Model oldModel = modelRepository.findOne(slug);
 
-            if(!user.getUsername().equals(author))
-            {
-                session.getTransaction().commit();
-                return new ResponseEntity<>(HttpStatus.FORBIDDEN);
-            }
+        String author = oldModel.getCreatedBy().getUsername();
 
-            String oldTitle = (String) session
-                    .createQuery("select title from Model where slug= :slug")
-                    .setString("slug", slug)
-                    .uniqueResult();
-
-            String newTitle = model.getTitle();
-
-            if(!newTitle.equals(oldTitle)) {
-                Long count;
-                int i = 0;
-                do {
-                    i++;
-                    newTitle = model.getTitle();
-                    count = (Long) session
-                            .createQuery("select count(*) from Model where title= :title")
-                            .setString("title", newTitle)
-                            .uniqueResult();
-                    if (count > 0 && !newTitle.equals(oldTitle)) {
-                        if (i > 1) {
-                            newTitle = newTitle.substring(0, newTitle.length() - 4);
-                        }
-                        model.setTitle(newTitle + " (" + i + ")");
+        if(!user.getUsername().equals(author))
+        {
+            return new ResponseEntity<>(HttpStatus.FORBIDDEN);
+        }
+
+        String oldTitle = oldModel.getTitle();
+        String newTitle = model.getTitle();
+
+        if(!newTitle.equals(oldTitle)) {
+            Long count;
+            int i = 0;
+            do {
+                i++;
+                newTitle = model.getTitle();
+                count = modelRepository.countByTitle(newTitle);
+                if (count > 0 && !newTitle.equals(oldTitle)) {
+                    if (i > 1) {
+                        newTitle = newTitle.substring(0, newTitle.length() - 4);
                     }
-                } while (count > 0 && !newTitle.equals(oldTitle));
-            }
+                    model.setTitle(newTitle + " (" + i + ")");
+                }
+            } while (count > 0 && !newTitle.equals(oldTitle));
+        }
 
-            Map<String, String> map = new HashMap<>(model.getConfig().getTitle());
-            map.put("text", model.getTitle());
-            model.getConfig().setTitle(map);
+        Map<String, String> map = new HashMap<>(model.getConfig().getTitle());
+        map.put("text", model.getTitle());
+        model.getConfig().setTitle(map);
 
-            session.update(model);
-            session.getTransaction().commit();
-        } catch (Exception e)
-        {
-            if(session.getTransaction() != null)
-            {
-                session.getTransaction().rollback();
-                throw e;
-            }
-        }*/
+        modelRepository.save(model);
 
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
-- 
GitLab