Skip to content

Commit eea3556

Browse files
committed
Week4. Create a new project and copy over your classes from the last exercise.
1 parent 76a8030 commit eea3556

17 files changed

+1182
-0
lines changed

Week4/src/AllFilters.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import java.util.ArrayList;
2+
3+
public class AllFilters implements Filter {
4+
ArrayList<Filter> filters;
5+
6+
public AllFilters() {
7+
filters = new ArrayList<>();
8+
}
9+
10+
public void addFilter(Filter f) {
11+
filters.add(f);
12+
}
13+
14+
@Override
15+
public boolean satisfies(String id) {
16+
for (Filter f : filters) {
17+
if (!f.satisfies(id)) {
18+
return false;
19+
}
20+
}
21+
22+
return true;
23+
}
24+
}

Week4/src/DirectorsFilter.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* A class for filter movies by directors
3+
*
4+
* @author Stanislav Rakitov
5+
* @version 1.0
6+
*/
7+
public class DirectorsFilter implements Filter {
8+
String directors;
9+
10+
public DirectorsFilter(String directors) {
11+
this.directors = directors;
12+
}
13+
14+
@Override
15+
public boolean satisfies(String id) {
16+
String movieDirectors = MovieDatabase.getDirector(id);
17+
String[] filterDirectors = directors.split(",");
18+
for (String direcor : filterDirectors) {
19+
if (movieDirectors.contains(direcor)) {
20+
return true;
21+
}
22+
}
23+
return false;
24+
}
25+
}

Week4/src/EfficientRater.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
4+
/**
5+
* The class EfficientRater keeps track of one rater and all their ratings.
6+
*
7+
* @author Stanislav Rakitov
8+
* @version 1.0
9+
*/
10+
public class EfficientRater implements Rater {
11+
private final String myID;
12+
private final HashMap<String, Rating> myRatings;
13+
14+
public EfficientRater(String id) {
15+
myID = id;
16+
myRatings = new HashMap<>();
17+
}
18+
19+
public void addRating(String movieID, Rating rating) {
20+
myRatings.put(movieID, rating);
21+
}
22+
23+
public boolean hasRating(String movieID) {
24+
return myRatings.containsKey(movieID);
25+
}
26+
27+
public String getID() {
28+
return myID;
29+
}
30+
31+
public double getRating(String movieID) {
32+
Rating rating = myRatings.get(movieID);
33+
if (rating != null) {
34+
return rating.getValue();
35+
} else {
36+
return -1;
37+
}
38+
}
39+
40+
public int numRatings() {
41+
return myRatings.size();
42+
}
43+
44+
public ArrayList<String> getItemsRated() {
45+
return new ArrayList<>(myRatings.keySet());
46+
}
47+
}

Week4/src/Filter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
public interface Filter {
2+
boolean satisfies(String id);
3+
}

0 commit comments

Comments
 (0)