-
Notifications
You must be signed in to change notification settings - Fork 1
/
BestSellersService.java
34 lines (27 loc) · 1.11 KB
/
BestSellersService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package edu.virginia.cs.threelayer.business;
import edu.virginia.cs.threelayer.*;
import edu.virginia.cs.threelayer.data.BestSellersFacade;
import java.util.Comparator;
import java.util.Date;
import java.util.Optional;
public class BestSellersService {
private final BestSellersFacade facade;
public BestSellersService() {
facade = new BestSellersFacade();
}
public BestSellersList getCurrentBestSellerList(ListName listName) {
return facade.getCurrentBestSellerList(listName);
}
public BestSellersList getHistoricBestSellerList(ListName listName, Date date) {
return facade.getHistoricBestSellerList(listName, date);
}
public Book getLongestCurrentBestSeller(ListName listName) {
BestSellersList bestSellers = getCurrentBestSellerList(listName);
Optional<Book> longestCurrentBook = bestSellers.getBooks().stream()
.max(Comparator.comparing(Book::getWeeksOnList));
if (longestCurrentBook.isEmpty()) {
throw new EmptyBestSellerListException(bestSellers.toString());
}
return longestCurrentBook.get();
}
}