From 0489b8cd7131ac5ae6ee81b2acca6857ebf28dc5 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Fri, 4 Mar 2016 12:31:30 +0100
Subject: [PATCH] update user informations in the DB using the collab ones at
 least at each login + removed useless dependencies from that

---
 src/main/java/org/hbp/mip/MIPApplication.java | 16 ++++----------
 .../org/hbp/mip/controllers/ArticlesApi.java  | 16 ++++++--------
 .../org/hbp/mip/controllers/ModelsApi.java    | 21 +++++++------------
 3 files changed, 18 insertions(+), 35 deletions(-)

diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index 4c4d911fb..60917bce9 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -121,22 +121,14 @@ public static void main(String[] args) {
      * - restart DB and backend (no session or anything like that)
      * - log in using the front end
      * - check you have no 500 error in the network logs.
-     * @param principal
      * @return
      */
-     public synchronized User getUser(Principal principal) {
+     public synchronized User getUser() {
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-         User user = null;
+         User user = new User(getUserInfos());
          try {
              session.beginTransaction();
-             user = (User) session
-                     .createQuery("from User where username= :username")
-                     .setString("username", principal.getName())
-                     .uniqueResult();
-             if (user == null) {
-                 user = new User(getUserInfos());
-                 session.save(user);
-             }
+             session.merge(user);
              session.getTransaction().commit();
          } catch (Exception e)
          {
@@ -178,7 +170,7 @@ public static void main(String[] args) {
         ObjectMapper mapper = new ObjectMapper();
 
         try {
-            String userJSON = mapper.writeValueAsString(getUser(principal));
+            String userJSON = mapper.writeValueAsString(getUser());
             Cookie cookie = new Cookie("user", URLEncoder.encode(userJSON, "UTF-8"));
             cookie.setPath("/");
             response.addCookie(cookie);
diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
index e280d1732..dca595e5c 100644
--- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
@@ -17,7 +17,6 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.security.Principal;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -38,12 +37,11 @@ public class ArticlesApi {
     public ResponseEntity<List<Article>> getArticles(
             @ApiParam(value = "Only ask own articles") @RequestParam(value = "own", required = false) Boolean own,
             @ApiParam(value = "Only ask results matching status", allowableValues = "{values=[draft, published, closed]}") @RequestParam(value = "status", required = false) String status,
-            @ApiParam(value = "Only ask articles from own team") @RequestParam(value = "team", required = false) Boolean team,
-            Principal principal
+            @ApiParam(value = "Only ask articles from own team") @RequestParam(value = "team", required = false) Boolean team
     ) {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Prepare HQL query using Article and User tables
         String queryString = "SELECT a FROM Article a, User u where a.createdBy=u.id";
@@ -104,12 +102,11 @@ public class ArticlesApi {
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Article created") })
     @RequestMapping(method = RequestMethod.POST)
     public ResponseEntity<Void> addAnArticle(
-            @RequestBody @ApiParam(value = "Article to create", required = true) Article article,
-            Principal principal
+            @RequestBody @ApiParam(value = "Article to create", required = true) Article article
     ) {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Set up article to save
         article.setCreatedAt(new Date());
@@ -170,12 +167,11 @@ public class ArticlesApi {
     @RequestMapping(value = "/{slug}", method = RequestMethod.PUT)
     public ResponseEntity<Void> updateAnArticle(
             @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug,
-            @RequestBody @ApiParam(value = "Article to update", required = true) Article article,
-            Principal principal
+            @RequestBody @ApiParam(value = "Article to update", required = true) Article article
     ) {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Query DB
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index 2d9c99dd8..5c20bb255 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -17,7 +17,6 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.security.Principal;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -42,12 +41,11 @@ public class ModelsApi {
     public ResponseEntity<List<Model>> getModels(
             @ApiParam(value = "Max number of results") @RequestParam(value = "limit", required = false) Integer limit,
             @ApiParam(value = "Only ask own models") @RequestParam(value = "own", required = false) Boolean own,
-            @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team,
-            Principal principal
+            @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team
     )  {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Prepare HQL query from Model and User tables
         String queryString = "select m from Model m, User u where m.createdBy=u.id";
@@ -102,12 +100,11 @@ public class ModelsApi {
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Model created") })
     @RequestMapping(method = RequestMethod.POST)
     public ResponseEntity<Model> addAModel(
-            @RequestBody @ApiParam(value = "Model to create", required = true) Model model,
-            Principal principal
+            @RequestBody @ApiParam(value = "Model to create", required = true) Model model
     )  {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Set up model
         model.setSlug(model.getConfig().getTitle().get("text").toLowerCase());
@@ -217,12 +214,11 @@ public class ModelsApi {
     @RequestMapping(value = "/{slug}", method = RequestMethod.PUT)
     public ResponseEntity<Void> updateAModel(
             @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug,
-            @RequestBody @ApiParam(value = "Model to update", required = true) Model model,
-            Principal principal
+            @RequestBody @ApiParam(value = "Model to update", required = true) Model model
     )  {
 
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Query DB
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
@@ -246,11 +242,10 @@ public class ModelsApi {
     @RequestMapping(value = "/{slug}/copies", method = RequestMethod.POST)
     public ResponseEntity<Model> copyAModel(
             @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug,
-            @RequestBody @ApiParam(value = "Model to update", required = true) Model model,
-            Principal principal
+            @RequestBody @ApiParam(value = "Model to update", required = true) Model model
     )  {
         // Get current user
-        User user = mipApplication.getUser(principal);
+        User user = mipApplication.getUser();
 
         // Set slug
         String originalSlug = model.getSlug();
-- 
GitLab