You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.4 KiB

package ru.defend.defdevteam.tstu;
/**
* Created by thedefend on 29.11.16.
*/
public class FeedController implements FeedReader.ReaderCallback{
FeedReader feedReader;
FeedUpdater feedUpdater;
String newsFeed;
int updateRate; //in minutes
private CabinetActivity activity;
public FeedController(CabinetActivity activity, int updateRate) {
this(activity, updateRate, "http://press.tstu.ru/?format=feed");
}
public FeedController(CabinetActivity activity, int updateRate, String rssUrl) {
feedReader = new FeedReader(this, rssUrl);
feedReader.registerCallback(this);
feedUpdater = new FeedUpdater();
this.activity = activity;
this.updateRate = updateRate;
feedUpdater.start();
}
private void startFeedReader() {
switch (feedReader.getThreadState()) {
case THREAD_FAIL:
feedReader.start();
break;
case THREAD_NULL:
feedReader.start();
break;
}
}
private boolean checkFeedReader() throws Exception{
switch (feedReader.getThreadState()) {
case THREAD_COMPLETE:
return true;
case THREAD_NULL:
return false;
default:
throw new Exception("Failed to get rss source string from FeedReader class");
}
}
public void feedUpdateAction(final String result) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
//activity.newsTextView.setText(result);
}
});
}
private class FeedUpdater extends Thread {
@Override
public void run() {
startFeedReader();
try {
//TODO: вернуть к норме updateRate*60*1000
sleep(updateRate*60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public FeedUpdater() {
this.start();
}
}
public String getRssString() throws Exception{
if(checkFeedReader()) {
newsFeed = feedReader.getResult();
return newsFeed;
}
throw new Exception("Feed Reader returned empty string");
}
public void onSuccess(String result){
this.newsFeed = result;
}
public void onFailure(){
//Ill add this code later!
}
}