From 9de044a2878c0dd30f1894f3249345f38cf53345 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Wed, 13 Jul 2016 16:10:37 +0200
Subject: [PATCH] refactoring voteApi to use Spring Data

---
 .../java/org/hbp/mip/controllers/AppsApi.java | 31 +++++++------------
 .../hbp/mip/repositories/AppRepository.java   |  2 +-
 .../hbp/mip/repositories/VoteRepository.java  |  3 ++
 3 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/src/main/java/org/hbp/mip/controllers/AppsApi.java b/src/main/java/org/hbp/mip/controllers/AppsApi.java
index a1f644a93..2134a9087 100644
--- a/src/main/java/org/hbp/mip/controllers/AppsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/AppsApi.java
@@ -8,7 +8,10 @@ import io.swagger.annotations.*;
 import org.apache.log4j.Logger;
 import org.hbp.mip.MIPApplication;
 import org.hbp.mip.model.App;
+import org.hbp.mip.model.User;
+import org.hbp.mip.model.Vote;
 import org.hbp.mip.repositories.AppRepository;
+import org.hbp.mip.repositories.VoteRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -32,6 +35,9 @@ public class AppsApi {
     @Autowired
     AppRepository appRepository;
 
+    @Autowired
+    VoteRepository voteRepository;
+
     @ApiOperation(value = "Get apps", response = App.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
     @RequestMapping(method = RequestMethod.GET)
@@ -48,23 +54,14 @@ public class AppsApi {
             @ApiParam(value = "value", required = true) @PathVariable("value") Integer value
     ) {
 
-        /*User user = mipApplication.getUser();
+        User user = mipApplication.getUser();
+        App app = appRepository.findOne(id);
 
-        Vote vote = (Vote) session.createQuery("" +
-                "SELECT v FROM Vote v, User u, App a " +
-                "WHERE u=v.user " +
-                "AND a=v.app " +
-                "AND u.username= :username " +
-                "AND a.id= :app_id")
-                .setString("username", user.getUsername())
-                .setLong("app_id", id)
-                .uniqueResult();
-        App app = (App) session.createQuery("FROM App where id= :id").setLong("id", id).uniqueResult();
+        Vote vote = voteRepository.find(user, app).iterator().next();
 
         if (vote != null) {
             vote.setValue(value);
-
-            session.update(vote);
+            voteRepository.save(vote);
             return new ResponseEntity<>(HttpStatus.NO_CONTENT);
         }
         else
@@ -73,13 +70,9 @@ public class AppsApi {
             vote.setUser(user);
             vote.setValue(value);
             vote.setApp(app);
-
-            session.save(vote);
-            session.getTransaction().commit();
+            voteRepository.save(vote);
             return new ResponseEntity<>(HttpStatus.CREATED);
-        }*/
-
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        }
 
     }
 }
diff --git a/src/main/java/org/hbp/mip/repositories/AppRepository.java b/src/main/java/org/hbp/mip/repositories/AppRepository.java
index 27fb1d26d..ba00367af 100644
--- a/src/main/java/org/hbp/mip/repositories/AppRepository.java
+++ b/src/main/java/org/hbp/mip/repositories/AppRepository.java
@@ -7,5 +7,5 @@ import org.springframework.data.repository.CrudRepository;
  * Created by mirco on 11.07.16.
  */
 
-public interface AppRepository extends CrudRepository<App, String> {
+public interface AppRepository extends CrudRepository<App, Integer> {
 }
diff --git a/src/main/java/org/hbp/mip/repositories/VoteRepository.java b/src/main/java/org/hbp/mip/repositories/VoteRepository.java
index d96a56369..45e44fa1c 100644
--- a/src/main/java/org/hbp/mip/repositories/VoteRepository.java
+++ b/src/main/java/org/hbp/mip/repositories/VoteRepository.java
@@ -1,5 +1,7 @@
 package org.hbp.mip.repositories;
 
+import org.hbp.mip.model.App;
+import org.hbp.mip.model.User;
 import org.hbp.mip.model.Vote;
 import org.springframework.data.repository.CrudRepository;
 
@@ -8,4 +10,5 @@ import org.springframework.data.repository.CrudRepository;
  */
 
 public interface VoteRepository extends CrudRepository<Vote, Long> {
+    Iterable<Vote> find(User user, App app);
 }
-- 
GitLab