diff --git a/src/main/java/com/camillepradel/movierecommender/controller/MainController.java b/src/main/java/com/camillepradel/movierecommender/controller/MainController.java index fd30542..54f3591 100644 --- a/src/main/java/com/camillepradel/movierecommender/controller/MainController.java +++ b/src/main/java/com/camillepradel/movierecommender/controller/MainController.java @@ -31,6 +31,8 @@ import org.neo4j.driver.v1.Record; import org.neo4j.driver.v1.Session; import org.neo4j.driver.v1.StatementResult; import com.camillepradel.movierecommender.model.Rating; +import java.util.HashMap; +import java.util.Iterator; @Controller public class MainController { @@ -144,6 +146,51 @@ public class MainController { } return listMovies; } + + + public ListgetRatingMongoDBByUser(Integer user_id){ + ArrayList listRating= new ArrayList(); + MongoCursor cursor; + + MongoDatabase db = MongoDBConnector.getInstance().getConnexion(); + MongoCollection users = db.getCollection("users"); + MongoCollection movies = db.getCollection("movies"); + + BasicDBObject whereQuery = new BasicDBObject(); + whereQuery.put("_id", user_id); + + cursor = users.find(whereQuery).iterator(); + Document user; + try { + user = cursor.next(); + } catch(Exception e) + { + return new ArrayList(); + } + + ArrayList user_movies = (ArrayList) user.get("movies"); + BasicDBObject inQuery = new BasicDBObject(); + HashMap list = new HashMap(); + for(Document movie : user_movies) + list.put(movie.getInteger("movieid"),movie.getInteger("rating")); + + inQuery.put("_id", new BasicDBObject("$in", list.keySet())); + cursor = movies.find(inQuery).iterator(); + + while (cursor.hasNext()) { + Document movie = cursor.next(); + String[] genres; + genres = movie.getString("genres").split("\\|"); + ArrayList listGenres = new ArrayList(); + for(String genre : genres){ + listGenres.add(new Genre(1,genre)); + } + + listRating.add(new Rating(new Movie(movie.getInteger("_id"), movie.getString("title"), + listGenres),user_id, list.get(movie.getInteger("_id")))); + } + return listRating; + } @RequestMapping(value = "/movieratings", method = RequestMethod.GET) public ModelAndView showMoviesRattings( @@ -161,9 +208,7 @@ public class MainController { allMovies.add(new Movie(3, "Titre 3", Arrays.asList(new Genre[] {genre0, genre1, genre2}))); // TODO: write query to retrieve all ratings from the specified user - List ratings = new LinkedList(); - ratings.add(new Rating(new Movie(0, "Titre 0", Arrays.asList(new Genre[] {genre0, genre1})), userId, 3)); - ratings.add(new Rating(new Movie(2, "Titre 2", Arrays.asList(new Genre[] {genre1})), userId, 4)); + List ratings = getRatingMongoDBByUser(userId); ModelAndView mv = new ModelAndView("movieratings"); mv.addObject("userId", userId); diff --git a/src/main/webapp/WEB-INF/views/movieratings.jsp b/src/main/webapp/WEB-INF/views/movieratings.jsp index f811aa8..3924ac1 100644 --- a/src/main/webapp/WEB-INF/views/movieratings.jsp +++ b/src/main/webapp/WEB-INF/views/movieratings.jsp @@ -14,7 +14,7 @@
  • - ${rating.getMovie().id} - ${rating.score} + ${rating.getMovie().id} - ${rating.getMovie().title} - ${rating.score}