Skip to content

Commit dcd97ac

Browse files
committed
Week3. printAverageRatingsByYear
1 parent ab89a19 commit dcd97ac

File tree

3 files changed

+63
-20
lines changed

3 files changed

+63
-20
lines changed

Week3/src/MovieRunnerWithFilters.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,24 @@
33

44
public class MovieRunnerWithFilters {
55

6+
private final ThirdRatings thirdRatings;
7+
8+
public MovieRunnerWithFilters(String moviesFileName, String ratingsFileName) {
9+
this.thirdRatings = new ThirdRatings(moviesFileName, ratingsFileName);
10+
}
11+
12+
public MovieRunnerWithFilters() {
13+
this("ratedmovies_short.csv", "ratings_short.csv");
14+
}
15+
616
/**
717
* Print a list of movies and their average ratings sorted by averages
818
*
919
* @param minimalRatings int specified number of ratings
1020
*/
11-
public static void printAverageRatings(int minimalRatings) {
12-
ThirdRatings thirdRatings = new ThirdRatings("ratings_short.csv");
21+
public void printAverageRatings(int minimalRatings) {
22+
// ThirdRatings thirdRatings = new ThirdRatings("ratedmovies_short.csv",
23+
// "ratings_short.csv");
1324
ArrayList<Rating> ratedList = thirdRatings.getAverageRatings(minimalRatings);
1425

1526
Collections.sort(ratedList);
@@ -31,23 +42,30 @@ public static void printAverageRatings(int minimalRatings) {
3142
// Print out how many movies with ratings are returned,
3243
// then sort them, and print out the rating and title of each movie
3344
System.out.printf(
34-
"How many movies with ratings %d are returned: %d\n",
45+
"How many movies with ratings %d are returned: %d%n",
3546
minimalRatings, averageRatings.size());
3647

48+
printRatingsList(averageRatings);
49+
}
50+
51+
private void printRatingsList(ArrayList<Rating> averageRatings) {
3752
averageRatings.stream()
3853
.sorted()
3954
.forEach(
4055
rating ->
4156
System.out.printf(
42-
"%-4s %s%n", rating.getValue(), MovieDatabase.getTitle(rating.getItem())));
43-
// System.out.printf(
44-
// "The name of the movie that has the lowest rating is \"%s\"\n",
45-
// thirdRatings.getTitle(ratedList.get(0).getItem()));
46-
// for (Rating ratedObj : ratedList) {
47-
// double rating = ratedObj.getValue();
48-
// String movieID = ratedObj.getItem();
49-
// String movieTitle = secondRatings.getTitle(movieID);
50-
// System.out.println(rating + " " + movieTitle);
51-
// }
57+
"%-4s %s %s%n",
58+
rating.getValue(),
59+
MovieDatabase.getYear(rating.getItem()),
60+
MovieDatabase.getTitle(rating.getItem())));
61+
}
62+
63+
public void printAverageRatingsByYear(int minimalRatings, int year) {
64+
System.out.println("number of raters " + thirdRatings.getRaterSize());
65+
System.out.println("number of movies " + MovieDatabase.size());
66+
ArrayList<Rating> aveRating =
67+
thirdRatings.getAverageRatingsByFilter(minimalRatings, new YearAfterFilter(year));
68+
System.out.printf("found %d movies%n", aveRating.size());
69+
printRatingsList(aveRating);
5270
}
5371
}

Week3/src/ThirdRatings.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import java.util.ArrayList;
2+
import java.util.Collections;
23

34
public class ThirdRatings {
45

56
private final ArrayList<Rater> myRaters;
67
private final ArrayList<String> allMoviesIDs;
78

8-
public ThirdRatings() {
9-
this("ratings.csv");
10-
}
11-
12-
public ThirdRatings(String ratingsFileName) {
9+
public ThirdRatings(String moviesFileName, String ratingsFileName) {
1310
this.myRaters = FirstRatings.loadRaters(ratingsFileName);
14-
this.allMoviesIDs = MovieDatabase.filterBy(new TrueFilter());
11+
MovieDatabase.initialize(moviesFileName);
12+
allMoviesIDs = MovieDatabase.filterBy(new TrueFilter());
1513
}
1614

1715
public ArrayList<Rating> getAverageRatings(int minimalRaters) {
@@ -42,4 +40,25 @@ Double getAverageByID(String movieID, Integer minimalRaters) {
4240
}
4341
return 0.0;
4442
}
43+
44+
public int getRaterSize() {
45+
return myRaters.size();
46+
}
47+
48+
public ArrayList<Rating> getAverageRatingsByFilter(Integer minimalRaters, Filter filterCriteria) {
49+
ArrayList<Rating> rating = new ArrayList<>();
50+
ArrayList<String> movies = MovieDatabase.filterBy(filterCriteria);
51+
// System.out.println(movies);
52+
Rating rat;
53+
for (String movie_id : movies) {
54+
if (getAverageByID(movie_id, minimalRaters) != 0) {
55+
rat = new Rating(movie_id, getAverageByID(movie_id, minimalRaters));
56+
rating.add(rat);
57+
}
58+
}
59+
60+
Collections.sort(rating);
61+
// System.out.println(rating);
62+
return rating;
63+
}
4564
} // class

Week3/src/Week3.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ public static void main(String[] args) {
33
// ThirdRatings week3 = new ThirdRatings();
44
// ArrayList<Rating> averageRatings = week3.getAverageRatings(1);
55
// averageRatings.forEach(System.out::println);
6-
MovieRunnerWithFilters.printAverageRatings(1);
6+
MovieRunnerWithFilters filters = new MovieRunnerWithFilters();
7+
filters.printAverageRatingsByYear(1, 2000);
8+
System.out.println("---");
9+
10+
// MovieRunnerWithFilters filtersFull =
11+
// new MovieRunnerWithFilters("ratedmoviesfull.csv", "ratings.csv");
12+
// filtersFull.printAverageRatingsByYear(20, 2000);
713
}
814
}

0 commit comments

Comments
 (0)