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.

89 lines
2.3 KiB

package ru.defend.defdevteam.tstu;
import android.app.Activity;
import android.widget.TextView;
/**
* Created by thedefend on 29.11.16.
*/
public class FeedController {
FeedReader feedReader;
FeedUpdater feedUpdater;
String newsFeed;
int updateRate; //in minutes
private WebActivity activity;
public FeedController(WebActivity activity, int updateRate) {
this(activity, updateRate, "http://press.tstu.ru/?format=feed");
}
public FeedController(WebActivity activity, int updateRate, String rssUrl) {
feedReader = new FeedReader(this, rssUrl);
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");
}
interface FeedCallback{
void Callback();
}
}