package com.brady.jlulife.Models;
import android.os.Message;
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.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import org.apache.http.Header;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by brady on 15-11-21.
*/
public class JWNewsModel extends NewsModel{
private static JWNewsModel instance;
public static JWNewsModel getInstance(){
if(instance == null)
instance = new JWNewsModel();
return instance;
}
@Override
public void getNewsDetail(String newsId, OnObjectGetListener newsDetailinfoGetListener) {
mNewsDetailinfoGetListener = newsDetailinfoGetListener;
initClient();
mClient.get(ConstValue.JWC_HOST + newsId, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
String parseString = "";
mNews = new News();
try {
parseString = new String(bytes,"gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Document doc = Jsoup.parse(parseString);
Elements contents = doc.getElementsByClass("content");
Element content = contents.get(0);
String title = content.getElementsByTag("h4").text();
String info = content.getElementsByClass("info").text();
StringBuilder builder = new StringBuilder();
Elements elements = content.getElementsByTag("div");
for(int j=0;j<elements.size();j++){
if(j==0)
continue;
Element element = elements.get(j);
String text = element.text();
text.replace("\n","");
builder.append(text);
builder.append("\n");
}
Elements eles = content.getElementsByTag("p");
for(int j=0;j<eles.size();j++){
if (j==0)
continue;
Element element = eles.get(j);
String text = element.text();
text.replace("\n","");
text.replace(" "," ");
builder.append(text);
builder.append("\n");
}
String contentText = builder.toString();
// String cont = elements.html();
// String contentText = cont.replace("\n","</p>");
String[] arr = info.split(" 发表于");
String dep = arr[0];
String date = arr[1].substring(0,19);
mNews.setTitle(title);
mNews.setContent(contentText);
mNews.setSubmitDepartment(dep);
mNews.setSubmitTime(date);
Message msg = new Message();
msg.what = MSG_GET_NEWSDETAIL_SUCCESS;
msg.obj = mNews;
mHandler.sendMessage(msg);
}
@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();
AsyncHttpClient client = new AsyncHttpClient();
mListinfoGetListener = listinfoGetListener;
client.get(ConstValue.JWC_BASIC_INFO + "&page=" + pageId, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
List<NewsBaseInfo> newsList = new ArrayList<>();
String parseString = "";
try {
parseString = new String(bytes, "gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Document doc = Jsoup.parse(parseString);
Element element = doc.getElementById("content");
Elements elements = element.getElementsByTag("li");
for (Element ele : elements) {
NewsBaseInfo baseInfo = new NewsBaseInfo();
Elements eles1 = ele.getElementsByTag("a");
Element ele0 = eles1.get(0);
String title = ele0.text();
String href = ele0.attr("href");
String date = ele.getElementsByClass("right").text();
String dep = eles1.get(1).text();
baseInfo.setTitle(title);
baseInfo.setDate(date);
baseInfo.setDep(dep);
baseInfo.setHref(href);
newsList.add(baseInfo);
}
Message message = new Message();
message.what = MSG_GET_NEWSLIST_SUCCESS;
message.obj = newsList;
mHandler.sendMessage(message);
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
mHandler.sendEmptyMessage(MSG_GET_NEWSLIST_FAIL);
}
});
}
}