From 72b75d938cbb1b20a939dc385f278628c0c340b8 Mon Sep 17 00:00:00 2001 From: Quentin Rouland Date: Fri, 9 Dec 2016 10:50:01 +0100 Subject: [PATCH] refactoring des Controlleurs db pour switch plus facilement entre mongodb et neo4j --- .../controller/DBControllerInterface.java | 28 +++++++++++++++++++ .../controller/MainController.java | 23 ++++++++------- .../controller/MongoDBController.java | 20 ++++++++++--- .../controller/Neo4JController.java | 16 +++++++---- 4 files changed, 65 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/camillepradel/movierecommender/controller/DBControllerInterface.java diff --git a/src/main/java/com/camillepradel/movierecommender/controller/DBControllerInterface.java b/src/main/java/com/camillepradel/movierecommender/controller/DBControllerInterface.java new file mode 100644 index 0000000..86da3ef --- /dev/null +++ b/src/main/java/com/camillepradel/movierecommender/controller/DBControllerInterface.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.camillepradel.movierecommender.controller; + +import com.camillepradel.movierecommender.model.Movie; +import com.camillepradel.movierecommender.model.Rating; +import java.util.List; + +/** + * + * @author pomme + */ +public interface DBControllerInterface { + public abstract ListgetMoviesByUser(Integer user_id); + + public abstract ListgetRatinByUser(Integer user_id); + + public abstract void updateMovieRating(Rating rating); + + public abstract List ProcessRecommendationV1(Integer userId); + + public abstract List ProcessRecommendationV2(Integer userId); + + public abstract List ProcessRecommendationV3(Integer userId); +} diff --git a/src/main/java/com/camillepradel/movierecommender/controller/MainController.java b/src/main/java/com/camillepradel/movierecommender/controller/MainController.java index e762f8c..96bd0c1 100644 --- a/src/main/java/com/camillepradel/movierecommender/controller/MainController.java +++ b/src/main/java/com/camillepradel/movierecommender/controller/MainController.java @@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.bind.annotation.RequestMethod; -import com.camillepradel.movierecommender.model.Genre; import com.camillepradel.movierecommender.model.Movie; import com.camillepradel.movierecommender.model.Rating; @@ -18,6 +17,10 @@ import com.camillepradel.movierecommender.model.Rating; public class MainController { String message = "Welcome to Spring MVC!"; + //Commenter et Decommenter en fonction de BD que l'on veut utiliser + DBControllerInterface db = new MongoDBController(); + //DBControllerInterface db = new Neo4jConnector(); + @RequestMapping("/hello") public ModelAndView showMessage( @RequestParam(value = "name", required = false, defaultValue = "World") String name) { @@ -33,8 +36,7 @@ public class MainController { public ModelAndView showMovies( @RequestParam(value = "user_id", required = false) Integer userId) { - List movies = Neo4JController.getMoviesNeo4JByUser(userId); - //List movies = MongoDBController.getMoviesMongoDBByUser(userId); + List movies = db.getMoviesByUser(userId); ModelAndView mv = new ModelAndView("movies"); mv.addObject("userId", userId); @@ -49,13 +51,11 @@ public class MainController { System.out.println("GET /movieratings for user " + userId); // write query to retrieve all movies from DB - //List allMovies = MongoDBController.getMoviesMongoDBByUser(null); - List allMovies =Neo4JController.getMoviesNeo4JByUser(null); + List allMovies = db.getMoviesByUser(null); - // write query to retrieve all ratings from the specified user - //List ratings = MongoDBController.getRatingMongoDBByUser(userId); + // write query to retrieve all ratings from the specified user + List ratings=db.getRatinByUser(userId); - List ratings=Neo4JController.GetMoviesRatingNeo4JByUser(userId); ModelAndView mv = new ModelAndView("movieratings"); mv.addObject("userId", userId); mv.addObject("allMovies", allMovies); @@ -69,7 +69,7 @@ public class MainController { System.out.println("POST /movieratings for user " + rating.getUserId() + ", movie " + rating.getMovie().getTitle() + ", score " + rating.getScore()); - Neo4JController.updateMovieRatingNeo4J(rating); + db.updateMovieRating(rating); return "redirect:/movieratings?user_id=" + rating.getUserId(); } @@ -82,11 +82,10 @@ public class MainController { List recommendations = new LinkedList(); if (processingMode.equals(1)){ - recommendations = Neo4JController.ProcessRecommendationV1(userId); + recommendations = db.ProcessRecommendationV1(userId); } else if (processingMode.equals(2)){ - recommendations = Neo4JController.ProcessRecommendationV2(userId); - + recommendations = db.ProcessRecommendationV2(userId); } ModelAndView mv = new ModelAndView("recommendations"); diff --git a/src/main/java/com/camillepradel/movierecommender/controller/MongoDBController.java b/src/main/java/com/camillepradel/movierecommender/controller/MongoDBController.java index c70405b..ba81bf3 100644 --- a/src/main/java/com/camillepradel/movierecommender/controller/MongoDBController.java +++ b/src/main/java/com/camillepradel/movierecommender/controller/MongoDBController.java @@ -26,8 +26,8 @@ import org.bson.Document; * * @author sidya */ -public class MongoDBController { - public static ListgetMoviesMongoDBByUser(Integer user_id){ +public class MongoDBController implements DBControllerInterface { + public ListgetMoviesByUser(Integer user_id){ ArrayList listMovies= new ArrayList(); MongoCursor cursor; @@ -76,7 +76,7 @@ public class MongoDBController { return listMovies; } - public static ListgetRatingMongoDBByUser(Integer user_id){ + public ListgetRatinByUser(Integer user_id){ ArrayList listRating= new ArrayList(); MongoCursor cursor; @@ -120,7 +120,7 @@ public class MongoDBController { return listRating; } - public static void updateMovieRating(Rating rating) { + public void updateMovieRating(Rating rating) { ArrayList listRating= new ArrayList(); MongoCursor cursor; @@ -155,4 +155,16 @@ public class MongoDBController { users.updateOne(searchQuery, newDocument); } + + public List ProcessRecommendationV1(Integer userId) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public List ProcessRecommendationV2(Integer userId) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public List ProcessRecommendationV3(Integer userId) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } } diff --git a/src/main/java/com/camillepradel/movierecommender/controller/Neo4JController.java b/src/main/java/com/camillepradel/movierecommender/controller/Neo4JController.java index 3636204..8e1b245 100644 --- a/src/main/java/com/camillepradel/movierecommender/controller/Neo4JController.java +++ b/src/main/java/com/camillepradel/movierecommender/controller/Neo4JController.java @@ -20,9 +20,9 @@ import org.neo4j.driver.v1.StatementResult; * * @author renando */ -public class Neo4JController { +public class Neo4JController implements DBControllerInterface { - public static List getMoviesNeo4JByUser(Integer userId) { + public List getMoviesByUser(Integer userId) { List movies = new LinkedList(); int id = 0; StatementResult result = null; @@ -54,7 +54,7 @@ public class Neo4JController { return movies; } - public static List GetMoviesRatingNeo4JByUser(Integer userId) { + public List getRatinByUser(Integer userId) { List moviesRating = new LinkedList(); StatementResult result = null; @@ -92,7 +92,7 @@ public class Neo4JController { } - public static void updateMovieRatingNeo4J(Rating note) { + public void updateMovieRating(Rating note) { Integer user_id = note.getUserId(); try { @@ -122,7 +122,7 @@ public class Neo4JController { } } - public static List ProcessRecommendationV1(Integer userId) { + public List ProcessRecommendationV1(Integer userId) { List ratings = new LinkedList(); StatementResult result = null; @@ -157,7 +157,7 @@ public class Neo4JController { } - public static List ProcessRecommendationV2(Integer userId) { + public List ProcessRecommendationV2(Integer userId) { List ratings = new LinkedList(); StatementResult result = null; @@ -194,4 +194,8 @@ public class Neo4JController { } + public List ProcessRecommendationV3(Integer userId) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + }