package com.zdcf.weibo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import com.zdcf.mapper.Plugin;
import com.zdcf.model.WeiboStatus;
import com.zdcf.service.Impl.RobotServiceImpl;
import com.zdcf.tool.SpringBeanFactoryUtils;
import com.zdcf.weibo.GetPublicTlAll;
import com.zdcf.weibo.Timeline;
import com.zdcf.weibo.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class SinaTaskPublicThread implements Runnable {
private Task t;
private List<Plugin> pluginList;
private GetPublicTlAll getpublictl;
private Plugin plugin;
private static Logger logger = LoggerFactory.getLogger(SinaTaskPublicThread.class.getName());
public SinaTaskPublicThread(Task t,Timeline tm,Plugin plugin) {
this.plugin = plugin;
this.t = t;
// this.pluginList = pluginList;
this.getpublictl = new GetPublicTlAll(tm,t);
}
public void run() {
getpublictl.setT(t);
List<WeiboStatus> st = new ArrayList<WeiboStatus>();
do {
try {
st = getpublictl.returnall();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (st != null && !st.isEmpty()) {
this.save(st);
}
logger.info("save count : " + getpublictl.getCount());
// sleep
try {
logger.info("sleep---------------");
Thread.sleep(t.getMinute() * 60 * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (t.getCount() == -1 ? true : getpublictl.getCount() <= t.getCount());
logger.info("task finished");
}
private void save(List<WeiboStatus> statuslist) {
for (WeiboStatus st : statuslist) {
plugin.saveWeibo(t, st);
plugin.saveUser(t, st.getUser());
}
}
public Task getT() {
return t;
}
public void setT(Task t) {
this.t = t;
}
public List<Plugin> getPluginList() {
return pluginList;
}
public void setPluginList(List<Plugin> pluginList) {
this.pluginList = pluginList;
}
public GetPublicTlAll getGetpublictl() {
return getpublictl;
}
public void setGetpublictl(GetPublicTlAll getpublictl) {
this.getpublictl = getpublictl;
}
}