diff --git a/pom.xml b/pom.xml
index 8169ff7..84bcbe4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,8 @@
UTF-8
+ 1.7
+ 1.7
diff --git a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
new file mode 100644
index 0000000..012a5a3
--- /dev/null
+++ b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
@@ -0,0 +1,121 @@
+/*
+ * 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 nearsoft.academy.bigdata.recommendation;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import org.apache.mahout.cf.taste.common.TasteException;
+import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
+import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
+import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
+import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
+import org.apache.mahout.cf.taste.model.DataModel;
+import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
+import org.apache.mahout.cf.taste.recommender.RecommendedItem;
+import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
+import org.apache.mahout.cf.taste.similarity.UserSimilarity;
+
+/**
+ *
+ * @author Ernesto
+ */
+public class MovieRecommender {
+ private int totalReviews = 0, totalUsers = 0, totalProducts=0;
+ private UserBasedRecommender recommender;
+ private HashMap users =new HashMap();
+ private Hashtable products = new Hashtable<>();
+
+ public MovieRecommender(String path) throws IOException, TasteException{
+ start(path);
+ }
+ private void start(String path) throws FileNotFoundException, IOException, TasteException {
+ String pathWriter= "src/test/java/nearsoft/academy/bigdata/recommendation/movies.csv";
+ String userId="", productId= "", score, line;
+ int currentUser=0, currentProduct =0;
+
+ File file = new File(path);
+ BufferedWriter writer;
+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
+ writer = new BufferedWriter(new FileWriter(pathWriter));
+ while((line =reader.readLine()) !=null){
+ String[] part=line.split(": ");
+ switch(part[0]){
+ case "product/productId":
+ productId = part[1];
+ if (!products.containsKey(productId)) {
+ totalProducts++;
+ products.put(productId,totalProducts);
+ currentProduct = totalProducts;
+ }else{
+ currentProduct = products.get(productId);
+ }
+ break;
+ case "review/userId":
+ userId = part[1];
+ if (!users.containsKey(userId)) {
+ totalUsers++;
+ users.put(userId,totalUsers);
+ currentUser = totalUsers;
+ }else{
+ currentUser = users.get(userId);
+ }
+ break;
+ case "review/score":
+ score = part[1];
+ writer.write(currentUser+","+currentProduct+","+score+"\n");
+ totalReviews++;
+ break;
+ }
+ }
+ reader.close();
+ }
+ writer.close();
+ DataModel model = new FileDataModel(new File(pathWriter));
+ UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
+ UserNeighborhood group = new ThresholdUserNeighborhood(0.1, similarity, model);
+ recommender = new GenericUserBasedRecommender(model, group, similarity);
+ }
+ public int getTotalReviews() {
+ return totalReviews;
+ }
+
+ public int getTotalProducts() {
+ return totalProducts;
+ }
+
+ public int getTotalUsers() {
+ return totalUsers;
+ }
+ public List getRecommendationsForUser(String userId) throws IOException, TasteException{
+ List list = new ArrayList();
+ int id= users.get(userId);
+ List recommendations = recommender.recommend(id, 3);
+ for(RecommendedItem recommendation: recommendations){
+ list.add(getProductName((int)recommendation.getItemID()));
+ }
+ return list;
+ }
+ public String getProductName(int value){
+ Enumeration e = products.keys();
+ while (e.hasMoreElements()){
+ String key = (String) e.nextElement();
+ if (products.get(key)==value){
+ return key;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
index 0d0b1fe..e110c7a 100644
--- a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
+++ b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
@@ -1,11 +1,9 @@
package nearsoft.academy.bigdata.recommendation;
-import org.apache.mahout.cf.taste.common.TasteException;
import org.junit.Test;
-
import java.io.IOException;
import java.util.List;
-
+import org.apache.mahout.cf.taste.common.TasteException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.hasItem;
@@ -15,6 +13,8 @@ public class MovieRecommenderTest {
public void testDataInfo() throws IOException, TasteException {
//download movies.txt.gz from
// http://snap.stanford.edu/data/web-Movies.html
+ MovieRecommender recommender;
+
MovieRecommender recommender = new MovieRecommender("/path/to/movies.txt.gz");
assertEquals(7911684, recommender.getTotalReviews());
assertEquals(253059, recommender.getTotalProducts());
@@ -24,7 +24,5 @@ public void testDataInfo() throws IOException, TasteException {
assertThat(recommendations, hasItem("B0002O7Y8U"));
assertThat(recommendations, hasItem("B00004CQTF"));
assertThat(recommendations, hasItem("B000063W82"));
-
- }
-
}
+}
diff --git a/target/big-data-1.0-SNAPSHOT.jar b/target/big-data-1.0-SNAPSHOT.jar
new file mode 100644
index 0000000..464d84b
Binary files /dev/null and b/target/big-data-1.0-SNAPSHOT.jar differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..cd0a871
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Mon Apr 20 12:03:16 MST 2020
+groupId=nearsoft.academy
+artifactId=big-data
+version=1.0-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..e69de29
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..ffbf53f
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,2 @@
+C:\Users\Ernesto\Desktop\big-data-exercises-master\src\test\java\nearsoft\academy\bigdata\recommendation\MovieRecommender.java
+C:\Users\Ernesto\Desktop\big-data-exercises-master\src\test\java\nearsoft\academy\bigdata\recommendation\MovieRecommenderTest.java
diff --git a/target/surefire-reports/TEST-nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.xml b/target/surefire-reports/TEST-nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.xml
new file mode 100644
index 0000000..9f1f183
--- /dev/null
+++ b/target/surefire-reports/TEST-nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/surefire-reports/nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.txt b/target/surefire-reports/nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.txt
new file mode 100644
index 0000000..5e79cd9
--- /dev/null
+++ b/target/surefire-reports/nearsoft.academy.bigdata.recommendation.MovieRecommenderTest.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: nearsoft.academy.bigdata.recommendation.MovieRecommenderTest
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 973.576 sec
diff --git a/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class
new file mode 100644
index 0000000..8b43005
Binary files /dev/null and b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class differ
diff --git a/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest$MovieRecommender.class b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest$MovieRecommender.class
new file mode 100644
index 0000000..6ae9115
Binary files /dev/null and b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest$MovieRecommender.class differ
diff --git a/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class
new file mode 100644
index 0000000..84afb54
Binary files /dev/null and b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class differ