package ru.defend.defdevteam.tstu; import android.os.Handler; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; /** * Created by thedefend on 28.11.16. */ class FeedReader extends Thread { private String link; private String result; private FeedController feedController; public enum States { THREAD_NULL, THREAD_WORK, THREAD_FAIL, THREAD_COMPLETE } private States threadState; ReaderCallback callback; FeedReader (FeedController feedController, String link) { this.link = link; this.feedController = feedController; this.threadState = States.THREAD_NULL; } void registerCallback(ReaderCallback callback) { this.callback = callback; } public void run(){ try { this.threadState = States.THREAD_WORK; this.result = getRss(link); this.threadState = States.THREAD_COMPLETE; callback.onSuccess(result); feedController.logIt("onSuccess called"); } catch (Exception e) { this.threadState = States.THREAD_FAIL; e.printStackTrace(); callback.onFailure(); } } private String getRss(String link) throws Exception { String tempString = null; String inputString = ""; URL rssFeed = new URL(link); BufferedReader inputStream = new BufferedReader( new InputStreamReader(rssFeed.openStream())); do { if(tempString != null) { inputString += tempString; } tempString = inputStream.readLine(); } while (tempString != null); return inputString; } public States getThreadState() { return this.threadState; } // public String getResult() { // return this.result; // } interface ReaderCallback{ void onSuccess(String rssFeed); void onFailure(); } }