You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.4 KiB
67 lines
2.4 KiB
package com.example.datacollect.repository;
|
|
|
|
import com.example.datacollect.model.Article;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class ArticleRepository {
|
|
private static final Logger logger = LoggerFactory.getLogger(ArticleRepository.class);
|
|
private final List<Article> articles = new ArrayList<>();
|
|
|
|
public void add(Article article) {
|
|
if (article == null) {
|
|
logger.error("Attempted to add null article");
|
|
throw new IllegalArgumentException("Article cannot be null");
|
|
}
|
|
if (article.getTitle() == null || article.getTitle().trim().isEmpty()) {
|
|
logger.warn("Attempted to add article with empty title");
|
|
throw new IllegalArgumentException("Article title cannot be null or empty");
|
|
}
|
|
if (article.getUrl() == null || article.getUrl().trim().isEmpty()) {
|
|
logger.warn("Attempted to add article with empty URL");
|
|
throw new IllegalArgumentException("Article URL cannot be null or empty");
|
|
}
|
|
articles.add(article);
|
|
logger.debug("Added article: {}", article.getTitle());
|
|
}
|
|
|
|
public void addAll(List<Article> articlesToAdd) {
|
|
if (articlesToAdd == null) {
|
|
logger.error("Attempted to add null list of articles");
|
|
throw new IllegalArgumentException("Article list cannot be null");
|
|
}
|
|
for (Article article : articlesToAdd) {
|
|
add(article);
|
|
}
|
|
logger.info("Added {} articles to repository", articlesToAdd.size());
|
|
}
|
|
|
|
public List<Article> getAll() {
|
|
logger.debug("Retrieving all articles, count: {}", articles.size());
|
|
return Collections.unmodifiableList(articles);
|
|
}
|
|
|
|
public int size() {
|
|
return articles.size();
|
|
}
|
|
|
|
public void clear() {
|
|
logger.info("Clearing repository, removed {} articles", articles.size());
|
|
articles.clear();
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
return articles.isEmpty();
|
|
}
|
|
|
|
public Article get(int index) {
|
|
if (index < 0 || index >= articles.size()) {
|
|
logger.error("Attempted to access article at invalid index: {}", index);
|
|
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + articles.size());
|
|
}
|
|
return articles.get(index);
|
|
}
|
|
}
|
|
|