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.

56 lines
2.0 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.error("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.error("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 List<Article> getAll() {
logger.debug("Retrieving all articles, count: {}", articles.size());
return Collections.unmodifiableList(articles);
}
public int size() {
return articles.size();
}
public void addAll(List<Article> articleList) {
if (articleList == null) {
logger.error("Attempted to add null article list");
throw new IllegalArgumentException("Article list cannot be null");
}
for (Article article : articleList) {
add(article);
}
logger.info("Added {} articles", articleList.size());
}
public void clear() {
int count = articles.size();
articles.clear();
logger.info("Cleared {} articles", count);
}
}