package com.github.sd4324530.fastweixin.message;
import com.github.sd4324530.fastweixin.message.util.MessageBuilder;
import java.util.ArrayList;
import java.util.List;
/**
* @author peiyu
*/
public class NewsMsg extends BaseMsg {
private static final int WX_MAX_SIZE = 10;
private int maxSize = WX_MAX_SIZE;
private List<Article> articles;
public NewsMsg() {
this.articles = new ArrayList<Article>(maxSize);
}
public NewsMsg(int maxSize) {
setMaxSize(maxSize);
this.articles = new ArrayList<Article>(maxSize);
}
public NewsMsg(List<Article> articles) {
setArticles(articles);
}
public int getMaxSize() {
return maxSize;
}
public void setMaxSize(int maxSize) {
if (maxSize < WX_MAX_SIZE && maxSize >= 1) {
this.maxSize = maxSize;
}
if (articles != null && articles.size() > this.maxSize) {
articles = articles.subList(0, this.maxSize);
}
}
public List<Article> getArticles() {
return articles;
}
public void setArticles(List<Article> articles) {
if (articles.size() > this.maxSize) {
this.articles = articles.subList(0, this.maxSize);
} else {
this.articles = articles;
}
}
public void add(String title) {
add(title, null, null, null);
}
public void add(String title, String url) {
add(title, null, null, url);
}
public void add(String title, String picUrl, String url) {
add(new Article(title, null, picUrl, url));
}
public void add(String title, String description, String picUrl, String url) {
add(new Article(title, description, picUrl, url));
}
public void add(Article article) {
if (this.articles.size() < maxSize) {
this.articles.add(article);
}
}
@Override
public String toXml() {
MessageBuilder mb = new MessageBuilder(super.toXml());
mb.addData("MsgType", RespType.NEWS);
mb.addTag("ArticleCount", String.valueOf(articles.size()));
mb.append("<Articles>\n");
for (Article article : articles) {
mb.append(article.toXml());
}
mb.append("</Articles>\n");
mb.surroundWith("xml");
return mb.toString();
}
}