Skip to content

Instantly share code, notes, and snippets.

@lukaspili
Created March 14, 2012 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lukaspili/2037075 to your computer and use it in GitHub Desktop.
Save lukaspili/2037075 to your computer and use it in GitHub Desktop.
package com.supinfo.dondusang.task;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.Gson;
import com.supinfo.dondusang.helper.UrlHelper;
import com.supinfo.dondusang.model.gift.Center;
import com.supinfo.dondusang.model.gift.CenterMapUrl;
import com.supinfo.dondusang.model.gift.CenterResult;
import org.apache.commons.io.IOUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
/**
* @author Lukasz Piliszczuk <lukasz.pili AT gmail.com>
*/
public class CenterLocationTask extends AsyncTask<Void, Void, List<Center>> {
private CenterMapUrl centerMapUrl;
private Gson gson;
private Listener listener;
public CenterLocationTask(CenterMapUrl centerMapUrl, Gson gson, Listener listener) {
this.centerMapUrl = centerMapUrl;
this.gson = gson;
this.listener = listener;
}
@Override
protected void onPreExecute() {
listener.onStart();
}
@Override
protected List<Center> doInBackground(Void... voids) {
URL url = UrlHelper.getUrl(centerMapUrl.getUrl());
CenterResult centerResult = null;
BufferedReader bufferedReader = null;
HttpURLConnection urlConnection = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(15 * 1000);
Log.d(getClass().getName(), "Connection opened to : " + centerMapUrl.getUrl());
long time = System.currentTimeMillis();
bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
centerResult = gson.fromJson(bufferedReader, CenterResult.class);
Log.d(getClass().getName(), "Content downloaded and parsed in " + (System.currentTimeMillis() - time) + " ms");
} catch (IOException e) {
Log.w(getClass().getName(), "Error during reading connection stream", e);
return null;
} finally {
IOUtils.closeQuietly(bufferedReader);
if (null != urlConnection) {
urlConnection.disconnect();
}
}
if (null == centerResult) {
return null;
}
return centerResult.getCenters();
}
@Override
protected void onPostExecute(List<Center> centers) {
if (null == centers) {
listener.onFailure();
} else {
listener.onSuccess(centers);
}
listener.onStop();
}
@Override
protected void onCancelled(List<Center> centers) {
Log.d(getClass().getName(), "Task cancelled");
listener.onStop();
}
public interface Listener {
void onSuccess(List<Center> centers);
void onFailure();
void onStart();
void onStop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment