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

---
 .../org/hbp/mip/controllers/ArticlesApi.java  | 36 +++++++++----------
 .../mip/repositories/ArticleRepository.java   |  3 ++
 2 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
index 3fb682dd8..7b32a2821 100644
--- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.Date;
+import java.util.Iterator;
 
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 
@@ -45,34 +46,31 @@ public class ArticlesApi {
             @ApiParam(value = "Only ask articles from own team") @RequestParam(value = "team", required = false) Boolean team
     ) {
 
-        /*User user = mipApplication.getUser();
+        User user = mipApplication.getUser();
+        Iterable<Article> articles;
 
-        String queryString = "SELECT a FROM Article a, User u WHERE a.createdBy=u.username";
-        if(status != null)
-        {
-            queryString += " AND status= :status";
-        }
         if(own != null && own)
         {
-            queryString += " AND u.username= :username";
+             articles = articleRepository.findByCreatedBy(user);
         }
         else
         {
-            queryString += " AND (status='published' or u.username= :username)";
+            articles = articleRepository.findByStatusOrCreatedBy("published", user);
         }
 
-        List articles = new LinkedList<>();
-        Query query = session.createQuery(queryString);
-        if (status != null) {
-            query.setString("status", status);
+        if(status != null)
+        {
+            for(Iterator<Article> i = articles.iterator(); i.hasNext();)
+            {
+                Article a = i.next();
+                if(!status.equals(a.getStatus()))
+                {
+                    i.remove();
+                }
+            }
         }
-        query.setString("username", user.getUsername());
-        articles = query.list();
-        session.getTransaction().commit();
-
-        return ResponseEntity.ok(articles);*/
 
-        return ResponseEntity.ok(articleRepository.findAll());
+        return ResponseEntity.ok(articles);
     }
 
 
@@ -108,7 +106,7 @@ public class ArticlesApi {
             }
         } while(count > 0);
 
-        String slug = null;
+        String slug;
         try {
             slug = new Slugify().slugify(article.getTitle());
         } catch (IOException e) {
diff --git a/src/main/java/org/hbp/mip/repositories/ArticleRepository.java b/src/main/java/org/hbp/mip/repositories/ArticleRepository.java
index f9d8b8fea..b27ecfaa4 100644
--- a/src/main/java/org/hbp/mip/repositories/ArticleRepository.java
+++ b/src/main/java/org/hbp/mip/repositories/ArticleRepository.java
@@ -1,6 +1,7 @@
 package org.hbp.mip.repositories;
 
 import org.hbp.mip.model.Article;
+import org.hbp.mip.model.User;
 import org.springframework.data.repository.CrudRepository;
 
 /**
@@ -9,4 +10,6 @@ import org.springframework.data.repository.CrudRepository;
 
 public interface ArticleRepository extends CrudRepository<Article, String> {
     Long countByTitle(String title);
+    Iterable<Article> findByCreatedBy(User user);
+    Iterable<Article> findByStatusOrCreatedBy(String status, User user);
 }
-- 
GitLab