1 package com.folioreader.ui.base;
3 import android.os.AsyncTask;
4 import android.util.Log;
6 import com.fasterxml.jackson.databind.DeserializationFeature;
7 import com.fasterxml.jackson.databind.ObjectMapper;
8 import com.folioreader.model.dictionary.Dictionary;
9 import com.folioreader.util.AppUtil;
11 import java.io.BufferedReader;
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.io.InputStreamReader;
16 import java.net.URLConnection;
19 * @author gautam chibde on 4/7/17.
22 public class DictionaryTask extends AsyncTask<String, Void, Dictionary> {
24 private static final String TAG = "DictionaryTask";
26 private DictionaryCallBack callBack;
28 public DictionaryTask(DictionaryCallBack callBack) {
29 this.callBack = callBack;
33 protected Dictionary doInBackground(String... strings) {
34 String strUrl = strings[0];
36 URL url = new URL(strUrl);
37 URLConnection urlConnection = url.openConnection();
38 InputStream inputStream = urlConnection.getInputStream();
39 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, AppUtil.charsetNameForURLConnection(urlConnection)));
40 StringBuilder stringBuilder = new StringBuilder();
42 while ((line = bufferedReader.readLine()) != null) {
43 stringBuilder.append(line);
46 ObjectMapper objectMapper = new ObjectMapper();
47 objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
48 return objectMapper.readValue(stringBuilder.toString(), Dictionary.class);
49 } catch (IOException e) {
50 Log.e(TAG, "DictionaryTask failed", e);
56 protected void onPostExecute(Dictionary dictionary) {
57 super.onPostExecute(dictionary);
58 if (dictionary != null) {
59 callBack.onDictionaryDataReceived(dictionary);