package com.example.datacollect.model; import java.util.ArrayList; import java.util.List; import java.util.Objects; public class Article { private String title; private String url; private String content; private String author; private String publicDate; public Article() { this.title = ""; this.url = ""; this.content = ""; this.author = ""; this.publicDate = ""; } public Article(String title, String url, String content) { this.title = sanitize(title); this.url = sanitize(url); this.content = sanitize(content); this.author = ""; this.publicDate = ""; } public Article(String title, String url, String content, String author, String publicDate) { this.title = sanitize(title); this.url = sanitize(url); this.content = sanitize(content); this.author = sanitize(author); this.publicDate = sanitize(publicDate); } private String sanitize(String value) { return value == null ? "" : value.trim(); } public String getTitle() { return title; } public void setTitle(String title) { this.title = sanitize(title); } public String getUrl() { return url; } public void setUrl(String url) { this.url = sanitize(url); } public String getContent() { return content; } public void setContent(String content) { this.content = sanitize(content); } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = sanitize(author); } public String getPublicDate() { return publicDate; } public void setPublicDate(String publicDate) { this.publicDate = sanitize(publicDate); } public boolean hasTitle() { return title != null && !title.isEmpty(); } public boolean hasUrl() { return url != null && !url.isEmpty(); } public boolean hasContent() { return content != null && !content.isEmpty(); } public boolean hasAuthor() { return author != null && !author.isEmpty(); } public boolean hasPublicDate() { return publicDate != null && !publicDate.isEmpty(); } public boolean isValid() { return hasTitle() && hasUrl(); } public static List
createList(int count) { List
articles = new ArrayList<>(); for (int i = 0; i < count; i++) { articles.add(new Article()); } return articles; } public static Article of(String title, String url) { return new Article(title, url, ""); } public static Article of(String title, String url, String content) { return new Article(title, url, content); } public static Article of(String title, String url, String content, String author, String publicDate) { return new Article(title, url, content, author, publicDate); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Article article = (Article) o; return Objects.equals(title, article.title) && Objects.equals(url, article.url); } @Override public int hashCode() { return Objects.hash(title, url); } @Override public String toString() { return "Article{" + "title='" + title + '\'' + ", url='" + url + '\'' + ", author='" + author + '\'' + ", publicDate='" + publicDate + '\'' + ", contentLength=" + (content != null ? content.length() : 0) + '}'; } public String toSummary() { StringBuilder sb = new StringBuilder(); sb.append("标题: ").append(title).append("\n"); sb.append("URL: ").append(url).append("\n"); if (hasAuthor()) { sb.append("作者: ").append(author).append("\n"); } if (hasPublicDate()) { sb.append("日期: ").append(publicDate).append("\n"); } return sb.toString(); } }