/** * $id$ * Copyright 2011-2012 Renren Inc. All rights reserved. */ package com.renren.api.connect.android.users; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONObject; import com.renren.api.connect.android.exception.RenrenException; import com.renren.api.connect.android.users.UserInfo; /** * user数据的封装 * * @author hecao (he.cao@renren-inc.com) * */ public class UserInfo { public static final String KEY_UID = "uid"; public static final String KEY_NAME = "name"; public static final String KEY_SEX = "sex"; public static final String KEY_STAR = "star"; public static final String KEY_ZIDOU = "zidou"; public static final String KEY_VIP = "vip"; public static final String KEY_BIRTHDAY = "birthday"; public static final String KEY_EMAIL_HASH = "email_hash"; public static final String KEY_TINYURL = "tinyurl"; public static final String KEY_HEADURL = "headurl"; public static final String KEY_MAINURL = "mainurl"; public static final String KEY_HOMETOWN_LOCATION = "hometown_location"; public static final String KEY_WORK_INFO = "work_history"; public static final String KEY_UNIVERSITY_INFO = "university_history"; public static final String KEY_HS_INFO = "hs_history"; /** * 家乡信息 * * @author hecao * */ public static class HomeTownLocation { public static final String KEY_COUNTRY = "country"; public static final String KEY_PROVINCE = "province"; public static final String KEY_CITY = "city"; /** * 所在国家 */ private String country; /** * 所在省份 */ private String province; /** * 所在城市 */ private String city; public static ArrayList<HomeTownLocation> parse(JSONArray array) { if (array == null) { return null; } ArrayList<HomeTownLocation> homeTownLocation = new ArrayList<UserInfo.HomeTownLocation>(); int size = array.length(); for (int i = 0; i < size; i++) { HomeTownLocation temp = parse(array.optJSONObject(i)); if (temp != null) { homeTownLocation.add(temp); } } return homeTownLocation; } public static HomeTownLocation parse (JSONObject object) { if (object == null) { return null; } HomeTownLocation homeTomeLocation = new HomeTownLocation(); homeTomeLocation.country = object.optString(KEY_COUNTRY); homeTomeLocation.province = object.optString(KEY_PROVINCE); homeTomeLocation.city = object.optString(KEY_CITY); return homeTomeLocation; } public void setCountry(String country) { this.country = country; } public String getCountry() { return country; } public void setProvince(String province) { this.province = province; } public String getProvince() { return province; } public void setCity(String city) { this.city = city; } public String getCity() { return city; } @Override public String toString () { StringBuffer sb = new StringBuffer(); sb.append("\t").append(KEY_COUNTRY).append(" = ").append(country).append("\r\n"); sb.append("\t").append(KEY_PROVINCE).append(" = ").append(province).append("\r\n"); sb.append("\t").append(KEY_CITY).append(" = ").append(city).append("\r\n"); return sb.toString(); } } /** * 工作信息 * * @author hecao * */ public static class WorkInfo { public static final String KEY_COMPANY_NAME = "company_name"; public static final String KEY_DESCRIPTION = "description"; public static final String KEY_START_DATE = "start_date"; public static final String KEY_END_DATE = "end_date"; /** * 公司名称 */ private String companyName; /** * 工作描述 */ private String description; /** * 入职时间 */ private String startDate; /** * 离职时间 */ private String endDate; public static ArrayList<WorkInfo> parse(JSONArray array) { if (array == null) { return null; } ArrayList<WorkInfo> workInfo = new ArrayList<UserInfo.WorkInfo>(); int size = array.length(); for (int i = 0; i < size; i++) { WorkInfo temp = parse(array.optJSONObject(i)); if (temp != null) { workInfo.add(temp); } } return workInfo; } public static WorkInfo parse (JSONObject object) { if (object == null) { return null; } WorkInfo workInfo = new WorkInfo(); workInfo.companyName = object.optString(KEY_COMPANY_NAME); workInfo.description = object.optString(KEY_DESCRIPTION); workInfo.startDate = object.optString(KEY_START_DATE); workInfo.endDate = object.optString(KEY_END_DATE); return workInfo; } public void setCompanyName(String companyName) { this.companyName = companyName; } public String getCompanyName() { return companyName; } public void setDescription(String description) { this.description = description; } public String getDescription() { return description; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getStartDate() { return startDate; } public void setEndDate(String endDate) { this.endDate = endDate; } public String getEndDate() { return endDate; } @Override public String toString () { StringBuffer sb = new StringBuffer(); sb.append("\t").append(KEY_COMPANY_NAME).append(" = ").append(companyName).append("\r\n"); sb.append("\t").append(KEY_DESCRIPTION).append(" = ").append(description).append("\r\n"); sb.append("\t").append(KEY_START_DATE).append(" = ").append(startDate).append("\r\n"); sb.append("\t").append(KEY_END_DATE).append(" = ").append(endDate).append("\r\n"); return sb.toString(); } } /** * 就读大学信息 * * @author hecao * */ public static class UniversityInfo { public static final String KEY_NAME = "name"; public static final String KEY_YEAR = "year"; public static final String KEY_DEPARTMENT = "department"; /** * 大学名称 */ private String name; /** * 入学年份 */ private long year; /** * 学院名称 */ private String department; public static ArrayList<UniversityInfo> parse(JSONArray array) { if (array == null) { return null; } ArrayList<UniversityInfo> universityInfo = new ArrayList<UserInfo.UniversityInfo>(); int size = array.length(); for (int i = 0; i < size; i ++) { UniversityInfo temp = parse(array.optJSONObject(i)); if (temp != null) { universityInfo.add(temp); } } return universityInfo; } public static UniversityInfo parse (JSONObject object) { if (object == null) { return null; } UniversityInfo universityInfo = new UniversityInfo(); universityInfo.name = object.optString(KEY_NAME); universityInfo.year = object.optLong(KEY_YEAR); universityInfo.department = object.optString(KEY_DEPARTMENT); return universityInfo; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setYear(long year) { this.year = year; } public long getYear() { return year; } public void setDepartment(String department) { this.department = department; } public String getDepartment() { return department; } @Override public String toString () { StringBuffer sb = new StringBuffer(); sb.append("\t").append(KEY_NAME).append(" = ").append(name).append("\r\n"); sb.append("\t").append(KEY_YEAR).append(" = ").append(year).append("\r\n"); sb.append("\t").append(KEY_DEPARTMENT).append(" = ").append(department).append("\r\n"); return sb.toString(); } } /** * 就读高中学校信息 * * @author hecao * */ public static class HSInfo { public static final String KEY_NAME = "name"; public static final String KEY_GRAD_YEAR = "grad_year"; /** * 学校名称 */ private String name; /** * 入学年份 */ private long gradYear; public static ArrayList<HSInfo> parse(JSONArray array) { if (array == null) { return null; } ArrayList<HSInfo> hsInfo = new ArrayList<UserInfo.HSInfo>(); int size = array.length(); for (int i = 0; i < size; i ++) { HSInfo temp = parse(array.optJSONObject(i)); if (temp != null) { hsInfo.add(temp); } } return hsInfo; } public static HSInfo parse (JSONObject object) { if (object == null) { return null; } HSInfo hsInfo = new HSInfo(); hsInfo.name = object.optString(KEY_NAME); hsInfo.gradYear = object.optLong(KEY_GRAD_YEAR); return hsInfo; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setGradYear(long gradYear) { this.gradYear = gradYear; } public long getGradYear() { return gradYear; } @Override public String toString () { StringBuffer sb = new StringBuffer(); sb.append("\t").append(KEY_NAME).append(" = ").append(name).append("\r\n"); sb.append("\t").append(KEY_GRAD_YEAR).append(" = ").append(gradYear).append("\r\n"); return sb.toString(); } } /** * 用户uid */ private long uid; /** * 用户姓名 */ private String name; /** * 性别,1表示男性,0表示女性 。。。。 */ private int sex; /** * 是否为星级用户,校内中值1表示是;值0表示不是,开心中0表示非真实姓名和头像,1表示非真实姓名,2表示非真实头像,3表示真实用户 */ private int star; /** * 是否为vip用户,值1表示是;值0表示不是 */ private int zidou; /** * 是否为vip用户等级,前提是zidou节点必须为1 */ private int vip; /** * 出生时间,格式为:yyyy-mm-dd,需要自行格式化日期显示格式。注:年份60后,实际返回1760-mm-dd;70后,返回1770- * mm-dd;80后,返回1780-mm-dd;90后,返回1790-mm-dd */ private String birthday; /** * 用户经过验证的email的信息字符串:email通过了connect.registerUsers接口。 * 字符串包含的email经过了crc32和md5的编码 */ private String emailHash; /** * 头像链接 50*50大小 */ private String tinyurl; /** * 头像链接 100*100大小 */ private String headurl; /** * 头像链接 200*200大小 */ private String mainurl; /** * 家乡信息 */ private ArrayList<HomeTownLocation> homeTownLocation; /** * 工作信息 */ private ArrayList<WorkInfo> workInfo; /** * 就读大学信息 */ private ArrayList<UniversityInfo> universityInfo; /** * 就读高中学校信息 */ private ArrayList<HSInfo> hsInfo; public UserInfo parse(JSONObject object) throws RenrenException { if (object == null) { return null; } uid = object.optLong(KEY_UID); name = object.optString(KEY_NAME); sex = object.optInt(KEY_SEX); star = object.optInt(KEY_STAR); zidou = object.optInt(KEY_ZIDOU); vip = object.optInt(KEY_VIP); birthday = object.optString(KEY_BIRTHDAY); emailHash = object.optString(KEY_EMAIL_HASH); tinyurl = object.optString(KEY_TINYURL); headurl = object.optString(KEY_HEADURL); mainurl = object.optString(KEY_MAINURL); homeTownLocation = HomeTownLocation.parse (object.optJSONArray(KEY_HOMETOWN_LOCATION)); workInfo = WorkInfo.parse (object.optJSONArray(KEY_WORK_INFO)); universityInfo = UniversityInfo.parse (object.optJSONArray(KEY_UNIVERSITY_INFO)); hsInfo = HSInfo.parse (object.optJSONArray(KEY_HS_INFO)); return this; } public void setUid(long uid) { this.uid = uid; } public long getUid() { return uid; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setSex(int sex) { this.sex = sex; } public int getSex() { return sex; } public void setStar(int star) { this.star = star; } public int getStar() { return star; } public void setZidou(int zidou) { this.zidou = zidou; } public int getZidou() { return zidou; } public void setVip(int vip) { this.vip = vip; } public int getVip() { return vip; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getBirthday() { return birthday; } public void setEmailHash(String emailHash) { this.emailHash = emailHash; } public String getEmailHash() { return emailHash; } public void setTinyurl(String tinyurl) { this.tinyurl = tinyurl; } public String getTinyurl() { return tinyurl; } public void setHeadurl(String headurl) { this.headurl = headurl; } public String getHeadurl() { return headurl; } public void setMainurl(String mainurl) { this.mainurl = mainurl; } public String getMainurl() { return mainurl; } public void setHomeTownLocation(ArrayList<HomeTownLocation> homeTownLocation) { this.homeTownLocation = homeTownLocation; } public ArrayList<HomeTownLocation> getHomeTownLocation() { return homeTownLocation; } public void setWorkInfo(ArrayList<WorkInfo> workInfo) { this.workInfo = workInfo; } public ArrayList<WorkInfo> getWorkInfo() { return workInfo; } public void setUniversityInfo(ArrayList<UniversityInfo> universityInfo) { this.universityInfo = universityInfo; } public ArrayList<UniversityInfo> getUniversityInfo() { return universityInfo; } public void setHsInfo(ArrayList<HSInfo> hsInfo) { this.hsInfo = hsInfo; } public ArrayList<HSInfo> getHsInfo() { return hsInfo; } @Override public String toString () { StringBuffer sb = new StringBuffer(); sb.append(KEY_UID).append(" = ").append(uid).append("\r\n"); sb.append(KEY_NAME).append(" = ").append(name).append("\r\n"); sb.append(KEY_SEX).append(" = ").append(sex).append("\r\n"); sb.append(KEY_STAR).append(" = ").append(star).append("\r\n"); sb.append(KEY_ZIDOU).append(" = ").append(zidou).append("\r\n"); sb.append(KEY_VIP).append(" = ").append(vip).append("\r\n"); sb.append(KEY_BIRTHDAY).append(" = ").append(birthday).append("\r\n"); sb.append(KEY_EMAIL_HASH).append(" = ").append(emailHash).append("\r\n"); sb.append(KEY_TINYURL).append(" = ").append(tinyurl).append("\r\n"); sb.append(KEY_HEADURL).append(" = ").append(headurl).append("\r\n"); sb.append(KEY_MAINURL).append(" = ").append(mainurl).append("\r\n"); if (homeTownLocation != null) { sb.append(KEY_HOMETOWN_LOCATION).append(" = ").append("\r\n"); for (HomeTownLocation h : homeTownLocation) { sb.append(h.toString()).append("\r\n"); } } if (workInfo != null) { sb.append(KEY_WORK_INFO).append(" = ").append("\r\n"); for (WorkInfo w: workInfo) { sb.append(w.toString()).append("\r\n"); } } if (universityInfo != null) { sb.append(KEY_UNIVERSITY_INFO).append(" = ").append("\r\n"); for (UniversityInfo u: universityInfo) { sb.append(u.toString()).append("\r\n"); } } if (hsInfo != null) { sb.append(KEY_HS_INFO).append(" = ").append("\r\n"); for (HSInfo h: hsInfo) { sb.append(h.toString()).append("\r\n"); } } return sb.toString(); } }