package com.buaa.shortytall.util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
import com.buaa.shortytall.bean.Comment;
import com.buaa.shortytall.bean.News;
import com.buaa.shortytall.bean.News.NewsBuider;
import com.buaa.shortytall.bean.QuestionAnswer;
public class JsonUtil {
public static class Keys{
//general
public static final String ERRORCODE = "error";
//this is for news
public static final String NEWS = "news";
public static final String ITEM = "item";
public static final String ID = "id";
public static final String _ID = "_id";
public static final String NEWS_ID = "news_id";
public static final String TITLE = "title";
public static final String DESCRIPTION = "description";
public static final String ICON = "icon";
public static final String DETAILS = "details";
public static final String PUBLISH_TIME = "publish_time";
public static final String CATEGROY = "category";
public static final String TAGS = "tags";
public static final String COMMENTS = "comments";
public static final String SCORE_AVG = "score_ave";
public static final String NEWS_INDIVIDUAL = "news_individual";
public static final String TASKS_INDIVIDUAL = "tasks_individual";
public static final String QUESTIONS = "questions";
}
public static News praseDetailJson(String json){
NewsBuider builder = new NewsBuider();
News detail = builder.build();
try{
JSONObject object = new JSONObject(json);
if (object.getInt(Keys.ERRORCODE) == 0){
JSONObject news = object.getJSONObject(Keys.NEWS);
detail = builder.setTitle(news.getString(Keys.TITLE))
.setContent(" "+news.getString(Keys.DETAILS))
.setDate(paresTimeLine(news.getLong(Keys.PUBLISH_TIME))).build();
}
} catch (JSONException e) {
e.printStackTrace();
}
return detail;
}
private static String paresTimeLine(long date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date(date * 1000L));
}
public static ArrayList<News> praseNewsJson(String json){
ArrayList<News> allnews = new ArrayList<News>();
try {
JSONObject jsonobject = new JSONObject(json);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray newses = jsonobject.getJSONArray(Keys.NEWS);
for (int i = 0 ; i < newses.length(); i ++){
JSONObject news = (JSONObject)newses.get(i);
NewsBuider builder = new NewsBuider();
News newsitem = builder.build();
newsitem = builder.setAvatart(news.getString(Keys.ICON))
.setTitle(news.getString(Keys.TITLE))
.setContent(news.getString(Keys.DETAILS))
.setDate(paresTimeLine(news.getLong(Keys.PUBLISH_TIME)))
.setId(news.getString(Keys._ID)).build();
Log.d("id", news.getString(Keys._ID));
allnews.add(newsitem);
//System.out.println(news.getString(Keys.ICON)+" "+news.getLong(Keys.PUBLISH_TIME)+" ");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return allnews;
}
@SuppressWarnings("unchecked")
public static ArrayList<HashMap<String, Object>> prasePersonDrugJson(String json){
ArrayList<HashMap<String, Object>> drugidlist=new ArrayList<HashMap<String, Object>>();
try {
JSONObject jsonobject = new JSONObject(json);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray drugs = jsonobject.getJSONArray("drugs_collected");
for (int i = 0 ; i < drugs.length(); i ++){
JSONObject drug = (JSONObject)drugs.get(i);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("drug_id", drug.getString("drug_id"));
map.put("drug_time", "收藏时间 "+paresTimeLine(drug.getLong("collect_time")));
drugidlist.add(map);
//System.out.println(news.getString(Keys.ICON)+" "+news.getLong(Keys.PUBLISH_TIME)+" ");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return drugidlist;
}
public static ArrayList<HashMap<String, Object>> prasePersonalTaskJson(String json){
ArrayList<HashMap<String, Object>> listdata = new ArrayList<HashMap<String, Object>>();
try {
JSONObject jsonobject = new JSONObject(json);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray tasks = jsonobject.getJSONArray(Keys.TASKS_INDIVIDUAL);
for (int i = 0 ; i < tasks.length(); i ++){
JSONObject task = (JSONObject)tasks.get(i);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("task_title", task.getString("title"));
map.put("task_description", task.getString("description"));
//Log.d("id", news.getString(Keys._ID));
listdata.add(map);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return listdata;
}
public static ArrayList<News> prasePersonalNewsJson(String json){
ArrayList<News> allnews = new ArrayList<News>();
try {
JSONObject jsonobject = new JSONObject(json);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray newses = jsonobject.getJSONArray(Keys.NEWS_INDIVIDUAL);
for (int i = 0 ; i < newses.length(); i ++){
JSONObject news = (JSONObject)newses.get(i);
NewsBuider builder = new NewsBuider();
News newsitem = builder.build();
newsitem = builder.setAvatart(news.getString(Keys.ICON))
.setTitle(news.getString(Keys.TITLE))
.setDate(paresTimeLine(news.getLong(Keys.PUBLISH_TIME)))
.setId(news.getString(Keys.NEWS_ID)).build();
//Log.d("id", news.getString(Keys._ID));
allnews.add(newsitem);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return allnews;
}
public static ArrayList<Comment> praseCommentsJson(String json){
ArrayList<Comment> allcomments = new ArrayList<Comment>();
try {
JSONObject jsonobject = new JSONObject(json);
JSONObject jsondrug = jsonobject.getJSONObject("drugs");
String total = jsondrug.getString(Keys.SCORE_AVG);
Comment commentitemtotal = new Comment("","",total,"");
allcomments.add(commentitemtotal);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray comments = jsondrug.getJSONArray(Keys.COMMENTS);
for (int i = 0 ; i < comments.length(); i ++){
JSONObject comment = (JSONObject)comments.get(i);
Comment commentitem = new Comment(comment.getString("user"),comment.getString("description"),comment.getString("score"),comment.getString("comment_time"));
allcomments.add(commentitem);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return allcomments;
}
public static ArrayList<QuestionAnswer> prasePersonalQuestionJson(String json){
ArrayList<QuestionAnswer> allquestions = new ArrayList<QuestionAnswer>();
try {
JSONObject jsonobject = new JSONObject(json);
if (jsonobject.getInt(Keys.ERRORCODE) == 0){
JSONArray questions = jsonobject.getJSONArray(Keys.QUESTIONS);
for (int i = 0 ; i < questions.length(); i ++){
JSONObject question = (JSONObject)questions.get(i);
QuestionAnswer item = new QuestionAnswer();
item.setQtitle(question.getString("title"));
item.setQconsulttime(question.getString("consult_time"));
item.setQdescription(question.getString("description"));
JSONArray answers = question.getJSONArray("answers");
JSONObject answer = (JSONObject) answers.get(0);
item.setAconsulttime(answer.getString("answer_time"));
item.setAName(answer.getString("expert_name"));
item.setAdescription(answer.getString("description"));
//Log.d("id", news.getString(Keys._ID));
allquestions.add(item);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return allquestions;
}
}