package com.brady.jlulife.Models;
import android.os.Message;
import android.util.Log;
import com.brady.jlulife.Entities.News;
import com.brady.jlulife.Entities.NewsBaseInfo;
import com.brady.jlulife.Models.Listener.OnListinfoGetListener;
import com.brady.jlulife.Models.Listener.OnObjectGetListener;
import com.brady.jlulife.Utils.ConstValue;
import com.loopj.android.http.AsyncHttpResponseHandler;
import org.apache.http.Header;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by brady on 15-11-21.
*/
public class JLUNewsModel extends NewsModel {
private static JLUNewsModel instance;
public static JLUNewsModel getInstance(){
if(instance == null)
instance = new JLUNewsModel();
return instance;
}
public void getNewsDetail(String newsId,OnObjectGetListener newsDetailinfoGetListener){
mNewsDetailinfoGetListener = newsDetailinfoGetListener;
initClient();
String parseURI = ConstValue.NEWS_MORE+"?id="+newsId;
mClient.get(parseURI, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
String parseString = "";
News news = null;
try {
parseString = new String(bytes,"gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
xmlPullParserFactory.setNamespaceAware(true);
XmlPullParser parser = xmlPullParserFactory.newPullParser();
parser.setInput(new StringReader(parseString));
int eventType = parser.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:{
String tagName = parser.getName();
if(tagName!=null && tagName.equals("MsgItem"))
news= new News();
if(tagName !=null && tagName.equals("CTitle")){
String title = parser.nextText();
news.setTitle(title);
}
if(tagName!=null && tagName.equals("CID")){
String cid = parser.nextText();
news.setId(cid);
}
if(tagName!=null && tagName.equals("CAuthor")){
String cAuthor = parser.nextText();
news.setSubmitDepartment(cAuthor);
}
if(tagName!=null && tagName.equals("CTime")){
String cTime = parser.nextText();
news.setSubmitTime(cTime);
}
if(tagName!=null && tagName.equals("CContent")){
String CContent = parser.nextText();
news.setContent(CContent);
}
if(tagName!=null && tagName.equals("CTop")) {
String CTop = parser.nextText();
news.setcTop(CTop);
}
if(tagName!=null && tagName.equals("CAttach")) {
String CAttach = parser.nextText();
news.setcAttach(CAttach);
}
if(tagName!=null && tagName.equals("CAttachName")) {
String CAttachName = parser.nextText();
news.setcAttachName(CAttachName);
}
break;
}
case XmlPullParser.END_TAG:{
break;
}
case XmlPullParser.TEXT:
break;
default:
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(news!=null) {
Message msg = new Message();
msg.what = MSG_GET_NEWSDETAIL_SUCCESS;
msg.obj = news;
mHandler.sendMessage(msg);
}else{
mHandler.sendEmptyMessage(MSG_GET_NEWSDETAIL_FAIL);
}
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
mHandler.sendEmptyMessage(MSG_GET_NEWSDETAIL_FAIL);
}
});
}
@Override
public void getNewsList(int pageId, OnListinfoGetListener listinfoGetListener) {
initClient();
mListinfoGetListener = listinfoGetListener;
String parseURI = ConstValue.NEWS_HOST + "?p=" + pageId + "&id=1";
Log.i("news model", "load start");
mClient.get(parseURI, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
String parseString = "";
NewsBaseInfo baseInfo = null;
List<NewsBaseInfo> list = new ArrayList<NewsBaseInfo>();
try {
parseString = new String(bytes, "gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
xmlPullParserFactory.setNamespaceAware(true);
XmlPullParser parser = xmlPullParserFactory.newPullParser();
parser.setInput(new StringReader(parseString));
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG: {
String tagName = parser.getName();
if (tagName != null && tagName.equals("MsgItem"))
baseInfo = new NewsBaseInfo();
if (tagName != null && tagName.equals("CTitle")) {
String title = parser.nextText();
baseInfo.setTitle(title);
}
if (tagName != null && tagName.equals("CID")) {
String cid = parser.nextText();
baseInfo.setHref(cid);
}
if (tagName != null && tagName.equals("CAuthor")) {
String cAuthor = parser.nextText();
baseInfo.setDep(cAuthor);
}
if (tagName != null && tagName.equals("CTime")) {
String cTime = parser.nextText();
baseInfo.setDate(cTime);
}
break;
}
case XmlPullParser.END_TAG: {
if (parser.getName().equals("MsgItem"))
list.add(baseInfo);
break;
}
case XmlPullParser.TEXT:
break;
default:
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Message msg = new Message();
msg.what = MSG_GET_NEWSLIST_SUCCESS;
msg.obj = list;
mHandler.sendMessage(msg);
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
mHandler.sendEmptyMessage(MSG_GET_NEWSLIST_FAIL);
}
});
}
}