From c8524722a5c7ff57847dcff05cca04f3ce59f963 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Thu, 14 Jul 2016 09:59:00 +0200
Subject: [PATCH] refactoring modelApi to use SpringData

---
 .../org/hbp/mip/controllers/ModelsApi.java    | 37 +++++++------------
 .../hbp/mip/repositories/ModelRepository.java |  3 ++
 2 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index 3d30afa65..8e8d37b9f 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -58,45 +58,36 @@ public class ModelsApi {
             @ApiParam(value = "Only ask published models") @RequestParam(value = "valid", required = false) Boolean valid
     )  {
 
-        /*User user = mipApplication.getUser();
+        User user = mipApplication.getUser();
+        Iterable<Model> models = null;
 
-        String queryString = "SELECT m FROM Model m, User u WHERE m.createdBy=u.username";
-        if(valid != null && valid)
-        {
-            queryString += " AND m.valid= :valid";
-        }
         if(own != null && own)
         {
-            queryString += " AND u.username= :username";
+            modelRepository.findByCreatedByOrderByCreatedAt(user);
         }
         else
         {
-            queryString += " AND (m.valid=true or u.username= :username)";
+            modelRepository.findByValidOrCreatedByOrderByCreatedAt(true, user);
         }
 
-        queryString += " ORDER BY m.createdAt DESC";
-
-        List<Model> models = new LinkedList<>();
-        Query query = session.createQuery(queryString);
-        if(valid != null)
-        {
-            query.setBoolean("valid", valid);
-        }
-        query.setString("username", user.getUsername());
-        if(limit != null)
+        if(valid != null && models != null)
         {
-            query.setMaxResults(limit);  // Pagination : Use query.setFirstResult(...) to set begining index
+            for (Iterator<Model> i = models.iterator(); i.hasNext(); )
+            {
+                Model m = i.next();
+                if(valid != m.getValid())
+                {
+                    i.remove();
+                }
+            }
         }
-        models = query.list();
-
 
         for(Model model:models){
             model.setDataset(datasetRepository.findOne(model.getDataset().getCode()));
         }
 
-        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);*/
+        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);
 
-        return new ResponseEntity<>(HttpStatus.OK).ok(modelRepository.findAll());
     }
 
 
diff --git a/src/main/java/org/hbp/mip/repositories/ModelRepository.java b/src/main/java/org/hbp/mip/repositories/ModelRepository.java
index 5718dfe4c..9da1df5bd 100644
--- a/src/main/java/org/hbp/mip/repositories/ModelRepository.java
+++ b/src/main/java/org/hbp/mip/repositories/ModelRepository.java
@@ -1,6 +1,7 @@
 package org.hbp.mip.repositories;
 
 import org.hbp.mip.model.Model;
+import org.hbp.mip.model.User;
 import org.springframework.data.repository.CrudRepository;
 
 /**
@@ -9,4 +10,6 @@ import org.springframework.data.repository.CrudRepository;
 
 public interface ModelRepository extends CrudRepository<Model, String> {
     Long countByTitle(String Title);
+    Iterable<Model> findByCreatedByOrderByCreatedAt(User user);
+    Iterable<Model> findByValidOrCreatedByOrderByCreatedAt(Boolean valid, User user);
 }
-- 
GitLab