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); } } }); } }