package io.kaif.model.article; import static java.util.stream.Collectors.*; import java.util.Comparator; import java.util.List; import javax.annotation.Nullable; import io.kaif.flake.FlakeId; public class ArticleList { private final List<Article> articles; private final FlakeId oldestArticleId; private final FlakeId newestArticleId; public ArticleList(List<Article> articles) { this.articles = articles; if (articles.isEmpty()) { this.oldestArticleId = FlakeId.MIN; this.newestArticleId = FlakeId.MIN; } else { List<Article> sorted = articles.stream() .sorted(Comparator.comparing(Article::getArticleId)) .collect(toList()); this.oldestArticleId = sorted.get(0).getArticleId(); this.newestArticleId = sorted.get(sorted.size() - 1).getArticleId(); } } public List<Article> getArticles() { return articles; } public FlakeId getOldestArticleId() { return oldestArticleId; } public FlakeId getNewestArticleId() { return newestArticleId; } public boolean hasNext() { return !articles.isEmpty(); } @Nullable public FlakeId getLastArticleId() { return hasNext() ? articles.get(articles.size() - 1).getArticleId() : null; } }