package net.dev123.mblog.netease;
import java.text.ParseException;
import java.util.ArrayList;
import net.dev123.commons.ServiceProvider;
import net.dev123.commons.util.ParseUtil;
import net.dev123.exception.ExceptionCode;
import net.dev123.exception.LibException;
import net.dev123.mblog.Emotions;
import net.dev123.mblog.entity.DirectMessage;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* NetEaseDirectMessageAdaptor
*
* @version
* @author 马庆升
* @time 2010-8-30 下午03:56:24
*/
public class NetEaseDirectMessageAdaptor {
/**
* 从JSON字符串创建DirectMessage对象
*
* @param jsonString
* JSON字符串
* @return DirectMessage对象
* @throws LibException
*/
public static DirectMessage createDirectMessage(String jsonString) throws LibException {
try {
JSONObject json = new JSONObject(jsonString);
return createDirectMessage(json);
} catch (JSONException e) {
throw new LibException(ExceptionCode.JSON_PARSE_ERROR);
}
}
/**
* 从JSON字符串创建DirectMessage对象列表
*
* @param jsonString
* JSON字符串
* @return JSON对象列表
* @throws LibException
*/
public static ArrayList<DirectMessage> createDirectMessageList(String jsonString) throws LibException {
try {
if ("[]".equals(jsonString) || "{}".equals(jsonString)) {
return new ArrayList<DirectMessage>(0);
}
JSONArray jsonList = new JSONArray(jsonString);
int size = jsonList.length();
ArrayList<DirectMessage> msgs = new ArrayList<DirectMessage>(size);
for (int i = 0; i < size; i++) {
msgs.add(createDirectMessage(jsonList.getJSONObject(i)));
}
return msgs;
} catch (JSONException e) {
throw new LibException(ExceptionCode.JSON_PARSE_ERROR);
}
}
/**
* 从JSON对象创建DirectMessage对象,包级别访问控制
*
* @param json
* JSON对象
* @return DirectMessage对象
* @throws LibException
*/
static DirectMessage createDirectMessage(JSONObject json) throws LibException {
try {
DirectMessage dmsg = new DirectMessage();
dmsg.setCreatedAt(ParseUtil.getDate("created_at", json));
dmsg.setId(ParseUtil.getRawString("id", json));
dmsg.setRecipientId(ParseUtil.getRawString("recipient_id", json));
dmsg.setRecipientScreenName(ParseUtil.getRawString("recipient_screen_name", json));
dmsg.setSenderId(ParseUtil.getRawString("sender_id", json));
dmsg.setSenderScreenName(ParseUtil.getRawString("sender_screen_name", json));
dmsg.setText(Emotions.normalizeEmotion(
ServiceProvider.NetEase, ParseUtil.getUnescapedString("text", json)));
if (!json.isNull("sender")) {
dmsg.setSender(NetEaseUserAdaptor.createUser(json.getJSONObject("sender")));
dmsg.setSenderScreenName(dmsg.getSender().getScreenName());
}
if (!json.isNull("recipient")) {
dmsg.setRecipient(NetEaseUserAdaptor.createUser(json.getJSONObject("recipient")));
dmsg.setRecipientScreenName(dmsg.getRecipient().getScreenName());
}
dmsg.setServiceProvider(ServiceProvider.NetEase);
return dmsg;
} catch (JSONException e) {
throw new LibException(ExceptionCode.JSON_PARSE_ERROR);
} catch (ParseException e) {
throw new LibException(ExceptionCode.DATE_PARSE_ERROR);
}
}
}