Browse Source

删除 'project/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java'

main
LeiJuntao 3 weeks ago
parent
commit
9235a11f47
  1. 100
      project/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java

100
project/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java

@ -1,100 +0,0 @@
package com.example.datacollect.repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.example.datacollect.model.Article;
import java.io.*;
import java.nio.charset.StandardCharsets;
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 static final String DEFAULT_FILE = "articles.txt";
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().isEmpty()) {
logger.warn("Article with empty title being added");
}
if (article.getUrl() == null || article.getUrl().isEmpty()) {
logger.warn("Article with empty URL being added");
}
articles.add(article);
logger.debug("Added article: {}", article.getTitle());
}
public List<Article> getAll() {
logger.debug("Getting all articles, count: {}", articles.size());
return Collections.unmodifiableList(articles);
}
public int size() {
return articles.size();
}
public void clear() {
int count = articles.size();
articles.clear();
logger.info("Cleared {} articles from repository", count);
}
public void saveToFile(String filePath) throws IOException {
if (articles.isEmpty()) {
logger.warn("No articles to save");
throw new IOException("No articles to save");
}
String path = (filePath == null || filePath.isEmpty()) ? DEFAULT_FILE : filePath;
try (BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(path), StandardCharsets.UTF_8))) {
for (Article article : articles) {
writer.write(article.getTitle());
writer.write("\t");
writer.write(article.getUrl() != null ? article.getUrl() : "");
writer.write("\t");
writer.write(article.getContent() != null ? article.getContent() : "");
writer.write("\t");
writer.write(article.getAuthor() != null ? article.getAuthor() : "");
writer.write("\t");
writer.write(article.getPublishDate() != null ? article.getPublishDate() : "");
writer.newLine();
}
logger.info("Saved {} articles to file: {}", articles.size(), path);
}
}
public void loadFromFile(String filePath) throws IOException {
String path = (filePath == null || filePath.isEmpty()) ? DEFAULT_FILE : filePath;
File file = new File(path);
if (!file.exists()) {
logger.warn("File not found: {}", path);
throw new FileNotFoundException("File not found: " + path);
}
articles.clear();
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split("\t", -1);
if (parts.length >= 2 && !parts[0].isEmpty()) {
String title = parts[0];
String url = parts.length > 1 ? parts[1] : "";
String content = parts.length > 2 ? parts[2] : "";
String author = parts.length > 3 ? parts[3] : "";
String publishDate = parts.length > 4 ? parts[4] : "";
articles.add(new Article(title, url, content, author, publishDate));
}
}
logger.info("Loaded {} articles from file: {}", articles.size(), path);
}
}
}
Loading…
Cancel
Save