package com.martin.ionichinabystudio.model.impl;
import android.content.Context;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.google.gson.Gson;
import com.martin.ionichinabystudio.config.HttpConfig;
import com.martin.ionichinabystudio.model.entity.TopicDetialResult;
import com.martin.ionichinabystudio.model.entity.TopicListResult;
import com.martin.ionichinabystudio.model.inter.RepliesModel;
import com.martin.ionichinabystudio.presenter.inter.OnResultListener;
import com.martin.simpledevelop.utils.cache.ACache;
import com.martin.simpledevelop.utils.file.SaFileUtils;
import com.martin.simpledevelop.utils.http.volley.VolleyRequest;
import com.martin.simpledevelop.utils.security.SaMD5Utils;
import java.io.File;
/**
* @Description
* @File ${FILE_NAME}
* @Package com.martin.ionichinabystudio.model.impl
* @Date 2015/7/1323:48
* @Author Donghongyu 1358506549@qq.com
* @Version v1.0.0
*/
public class RepliesModelImple implements RepliesModel {
/**
* 数据缓存工具
*/
private ACache mCache = null;
//将json数据转换成对象
private Gson gson;
public RepliesModelImple(Context context) {
// 构建指定文件夹的缓存
mCache = ACache
.get(new File(SaFileUtils.getCacheDownloadDir(context)));
gson = new Gson();
}
@Override
public void getReplies(String topicId, final OnResultListener listener) {
//进行网络访问链接的拼装操作
final String url = HttpConfig.API_GET_TOPIC_DETAILS + "/" + topicId;
/*数据层操作*/
VolleyRequest.newInstance().newGsonRequest(url,
TopicDetialResult.class, new Response.Listener<TopicDetialResult>() {
@Override
public void onResponse(TopicDetialResult result) {
if (result != null) {
// 进行Http响应数据缓存,将请求连接加密作为key
mCache.put(SaMD5Utils.encode(url), gson.toJson(result));
//回调成功的监听
listener.onSuccess(result);
} else {
listener.onError();
//从缓存中获取到数据
String jsonReslut = mCache.getAsString(SaMD5Utils.encode(url));
if (jsonReslut != null) {
result = gson.fromJson(jsonReslut, TopicDetialResult.class);
listener.onSuccess(result);
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
listener.onError();
TopicDetialResult result;
//从缓存中获取到数据
String jsonReslut = mCache.getAsString(SaMD5Utils.encode(url));
if (jsonReslut != null) {
result = gson.fromJson(jsonReslut, TopicDetialResult.class);
listener.onSuccess(result);
}
}
});
}
}