package com.tv.ui.metro.loader;
import android.content.Context;
import android.util.Log;
import com.android.volley.*;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import com.tv.ui.metro.model.Tabs;
import org.json.JSONObject;
/**
* Created by tv metro on 8/28/14.
*/
public class TabsLoader extends BaseLoader<Tabs> {
private static final String TAG = "TabsLoader";
public static int LOADER_ID = 0x401;
public static final String cacheFileName = "tabs_content.cache";
public TabsLoader(Context context) {
super(context);
//we use file to save the content
//setNeedFile(true);
setNeedServer(true);
}
@Override
protected FileLoader getFileLoader(){
return new TabsFileLoader();
}
@Override
protected UpdateLoader getUpdateLoader() {
return new TabsUpdateLoader();
}
public class TabsFileLoader extends FileLoader{
//read content from data/tabs_content
@Override
protected String localDataFileName() {
String cachePath = getContext().getCacheDir() + "/" + cacheFileName;
StringBuilder sb = readCacheFromFile(cachePath);
return sb.toString();
}
@Override
protected Tabs parseResult(String data) {
return new Gson().fromJson(data, Tabs.class);
}
}
public class TabsUpdateLoader extends UpdateLoader{
Object mLock = new Object();
@Override
protected void loadData(){
loadDataByGson();
synchronized (mLock) {
try {
mLock.wait(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Response.Listener<Tabs> listener = new Response.Listener<Tabs>() {
@Override
public void onResponse(Tabs response) {
Log.d(TAG, "response tabs:" + new Gson().toJson(response));
synchronized (mLock) {
mLock.notifyAll();
}
onPostExecute(response);
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "onErrorResponse error:" + error.toString());
synchronized (mLock) {
mLock.notifyAll();
}
onPostExecute(null);
}
};
private void loadDataByGson() {
RequestQueue requestQueue = Volley.newRequestQueue(getContext().getApplicationContext());
String url = "http://172.27.9.104:9300/testdata/1/1/1/zh/CN?api=index";
GsonRequest<Tabs> gsonRequest = new GsonRequest<Tabs>(url, Tabs.class, null, listener, errorListener);
gsonRequest.setCacheNeed(getContext().getCacheDir() + "/" + cacheFileName);
requestQueue.add(gsonRequest);
}
@Override
protected Tabs parseResult(JSONObject json) {
return null;
}
}
}