package com.jeck.microblogging.server;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import weibo4j.Timeline;
import weibo4j.Weibo;
import weibo4j.http.AccessToken;
import weibo4j.model.Paging;
import weibo4j.model.Status;
import weibo4j.model.StatusWapper;
import weibo4j.model.WeiboException;
import com.jeck.microblogging.shared.Blog;
import com.jeck.microblogging.shared.BlogFeature;
import com.jeck.microblogging.shared.Page;
import com.jeck.microblogging.shared.interfaces.ICallBackParameter;
import com.jeck.microblogging.shared.interfaces.IWeibo;
public class SinaWeibo implements IWeibo {
Logger logger = Logger.getLogger(SinaWeibo.class.getName());
@Override
public long getAllWeiboCount(ICallBackParameter para) {
AccessToken at = para.getParameter(ICallBackParameter.ACCESS_TOKEN,
AccessToken.class);
if (null == at) {
logger.warning("Access Token is NULL");
}
Weibo weibo = new Weibo();
weibo.setToken(at.getAccessToken());
Timeline tm = new Timeline();
try {
StatusWapper status = tm.getHomeTimeline();
return status.getTotalNumber();
} catch (WeiboException e) {
e.printStackTrace();
}
return 0;
}
@Override
public List<Blog> getAllWeibo(ICallBackParameter para, Page page,
BlogFeature feature) {
AccessToken at = para.getParameter(ICallBackParameter.ACCESS_TOKEN,
AccessToken.class);
if (null == at) {
logger.warning("Access Token is NULL");
}
Weibo weibo = new Weibo();
weibo.setToken(at.getAccessToken());
Timeline tm = new Timeline();
try {
Paging paging = new Paging();
if (page.getCount() >= 0) {
paging.setCount(page.getCount());
}
if (page.getMaxId() >= 0) {
paging.setMaxId(page.getMaxId());
}
if (page.getPage() >= 0) {
paging.setPage(page.getPage());
}
if (page.getSinceId() >= 0) {
paging.setSinceId(page.getSinceId());
}
logger.info("paging:" + paging);
StatusWapper status = tm.getHomeTimeline(0,
BlogFeature.getIntValue(feature), paging);
if (null != status) {
List<Blog> blogs = new ArrayList<Blog>();
for (Status statu : status.getStatuses()) {
Blog blog = new Blog();
blog.setAuthor(statu.getUser().getName());
blog.setDate(statu.getCreatedAt());
blog.setText(statu.getText());
blog.setId(Long.parseLong(statu.getId()));
blog.setBmiddlePic(statu.getBmiddlePic());
blog.setCommentsCount(statu.getCommentsCount());
blog.setOriginalPic(statu.getOriginalPic());
blog.setRepostsCount(statu.getRepostsCount());
blog.setThumbnailPic(statu.getThumbnailPic());
setSrcBlog(statu, blog);
blogs.add(blog);
}
return blogs;
}
} catch (WeiboException e) {
e.printStackTrace();
}
return null;
}
private void setSrcBlog(Status parent, Blog blog) {
if (null != parent && parent.getRetweetedStatus() != null) {
Status statu = parent.getRetweetedStatus();
Blog src = new Blog();
if (statu.getUser() != null)
src.setAuthor(statu.getUser().getName());
src.setDate(statu.getCreatedAt());
src.setText(statu.getText());
src.setId(Long.parseLong(statu.getId()));
src.setBmiddlePic(statu.getBmiddlePic());
src.setCommentsCount(statu.getCommentsCount());
src.setOriginalPic(statu.getOriginalPic());
src.setRepostsCount(statu.getRepostsCount());
src.setThumbnailPic(statu.getThumbnailPic());
blog.setSrcBlog(src);
setSrcBlog(statu, src);
}
}
}