package com.tekinarslan.material.sample.container.news.model;
import com.tekinarslan.material.sample.base.Urls;
import com.tekinarslan.material.sample.bean.NewsBean;
import com.tekinarslan.material.sample.bean.NewsDetailBean;
import com.tekinarslan.material.sample.container.news.widget.NewsFragment;
import com.tekinarslan.material.sample.uitls.MyOkHttpUtils;
import java.util.List;
/**
* Description : 新闻业务处理类
* Author : lauren
* Email : lauren.liuling@gmail.com
* Blog : http://www.liuling123.com
* Date : 15/12/19
*/
public class NewsModelImpl implements com.tekinarslan.material.sample.container.news.model.NewsModel {
/**
* 加载新闻列表
* @param url
* @param listener
*/
@Override
public void loadNews(String url, final int type, final OnLoadNewsListListener listener) {
MyOkHttpUtils.ResultCallback<String> loadNewsCallback = new MyOkHttpUtils.ResultCallback<String>() {
@Override
public void onSuccess(String response) {
List<NewsBean> newsBeanList = com.tekinarslan.material.sample.container.news.NewsJsonUtils.readJsonNewsBeans(response, getID(type));
listener.onSuccess(newsBeanList);
}
@Override
public void onFailure(Exception e) {
listener.onFailure("load news list failure.", e);
}
};
MyOkHttpUtils.get(url, loadNewsCallback);
}
/**
* 加载新闻详情
* @param docid
* @param listener
*/
@Override
public void loadNewsDetail(final String docid, final OnLoadNewsDetailListener listener) {
String url = getDetailUrl(docid);
MyOkHttpUtils.ResultCallback<String> loadNewsCallback = new MyOkHttpUtils.ResultCallback<String>() {
@Override
public void onSuccess(String response) {
NewsDetailBean newsDetailBean = com.tekinarslan.material.sample.container.news.NewsJsonUtils.readJsonNewsDetailBeans(response, docid);
listener.onSuccess(newsDetailBean);
}
@Override
public void onFailure(Exception e) {
listener.onFailure("load news detail info failure.", e);
}
};
MyOkHttpUtils.get(url, loadNewsCallback);
}
/**
* 获取ID
* @param type
* @return
*/
private String getID(int type) {
String id;
switch (type) {
case NewsFragment.NEWS_TYPE_TOP:
id = Urls.TOP_ID;
break;
case NewsFragment.NEWS_TYPE_NBA:
id = Urls.NBA_ID;
break;
case NewsFragment.NEWS_TYPE_CARS:
id = Urls.CAR_ID;
break;
case NewsFragment.NEWS_TYPE_JOKES:
id = Urls.JOKE_ID;
break;
default:
id = Urls.TOP_ID;
break;
}
return id;
}
private String getDetailUrl(String docId) {
StringBuffer sb = new StringBuffer(Urls.NEW_DETAIL);
sb.append(docId).append(Urls.END_DETAIL_URL);
return sb.toString();
}
public interface OnLoadNewsListListener {
void onSuccess(List<NewsBean> list);
void onFailure(String msg, Exception e);
}
public interface OnLoadNewsDetailListener {
void onSuccess(NewsDetailBean newsDetailBean);
void onFailure(String msg, Exception e);
}
}