1 package de.dhbwloe.campusapp.search;
3 import android.util.Log;
5 import com.loopj.android.http.AsyncHttpResponseHandler;
7 import org.jsoup.Jsoup;
8 import org.jsoup.nodes.Document;
10 import java.io.UnsupportedEncodingException;
11 import java.util.List;
13 import cz.msebera.android.httpclient.Header;
14 import de.dhbwloe.campusapp.fragments.AppSearchListItem;
17 * Created by pk910 on 25.01.2016.
19 public abstract class SearchHelper {
21 protected boolean bRequestRunning = false;
22 protected boolean bHtmlParser;
23 protected SearchResultListener oRequestListener = null;
25 public SearchHelper(boolean htmlparser) {
26 bHtmlParser = htmlparser;
29 protected void performWebRequest(String keywords) {
30 AsyncHttpResponseHandler handler = new AsyncHttpResponseHandler() {
32 public void onStart() {
35 public void onSuccess(int statusCode, Header[] headers, byte[] response) {
36 boolean parsedHttp = false;
39 Document document = Jsoup.parse(new String(response));
42 bRequestRunning = false;
44 List<AppSearchListItem> results = onHtmlDocumentReceived(document);
45 oRequestListener.onSearchResultsReceived(results);
46 } catch(Exception e) {
47 oRequestListener.onSearchFailed(e.getMessage());
49 } catch(Exception e) {
54 List<AppSearchListItem> results = onPlainTextReceived(response);
55 oRequestListener.onSearchResultsReceived(results);
56 } catch(Exception e) {
57 oRequestListener.onSearchFailed(e.getMessage());
60 bRequestRunning = false;
63 public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
66 error = new String(errorResponse, "US-ASCII");
67 } catch (Exception e1) {
69 Log.i("HTTPClient", " Error: " + statusCode + " - " + error);
70 bRequestRunning = false;
71 oRequestListener.onSearchFailed(statusCode + ": " + error);
74 public void onRetry(int retryNo) {
77 processWebRequest(handler, keywords);
80 public void search(String keywords, SearchResultListener resultlistener) {
82 resultlistener.onSearchFailed("another request is already running!");
85 oRequestListener = resultlistener;
86 bRequestRunning = true;
88 performWebRequest(keywords);
91 protected abstract void processWebRequest(AsyncHttpResponseHandler handler, String keywords);
92 protected abstract List<AppSearchListItem> onHtmlDocumentReceived(Document document);
93 protected abstract List<AppSearchListItem> onPlainTextReceived(byte[] data);