package com.ch_linghu.fanfoudroid.db; import android.database.Cursor; import android.provider.BaseColumns; import android.util.Log; import com.ch_linghu.fanfoudroid.data.User; public final class UserInfoTable implements BaseColumns { public static final String TAG = "UserInfoTable"; public static final String TABLE_NAME = "userinfo"; public static final String FIELD_USER_NAME = "name"; public static final String FIELD_USER_SCREEN_NAME = "screen_name"; public static final String FIELD_LOCALTION = "location"; public static final String FIELD_DESCRIPTION = "description"; public static final String FIELD_PROFILE_IMAGE_URL = "profile_image_url"; public static final String FIELD_URL = "url"; public static final String FIELD_PROTECTED = "protected"; public static final String FIELD_FOLLOWERS_COUNT = "followers_count"; public static final String FIELD_FRIENDS_COUNT = "friends_count"; public static final String FIELD_FAVORITES_COUNT = "favourites_count"; public static final String FIELD_STATUSES_COUNT = "statuses_count"; public static final String FIELD_LAST_STATUS = "last_status"; public static final String FIELD_CREATED_AT = "created_at"; public static final String FIELD_FOLLOWING = "following"; public static final String FIELD_FOLLOWER_IDS = "follower_ids"; public static final String[] TABLE_COLUMNS = new String[] { _ID, FIELD_USER_NAME, FIELD_USER_SCREEN_NAME, FIELD_LOCALTION, FIELD_DESCRIPTION, FIELD_PROFILE_IMAGE_URL, FIELD_URL, FIELD_PROTECTED, FIELD_FOLLOWERS_COUNT, FIELD_FRIENDS_COUNT, FIELD_FAVORITES_COUNT, FIELD_STATUSES_COUNT, FIELD_LAST_STATUS, FIELD_CREATED_AT, FIELD_FOLLOWING }; public static final String CREATE_TABLE = "create table " + TABLE_NAME + " (" + _ID + " text primary key on conflict replace, " + FIELD_USER_NAME + " text not null, " + FIELD_USER_SCREEN_NAME + " text, " + FIELD_LOCALTION + " text, " + FIELD_DESCRIPTION + " text, " + FIELD_PROFILE_IMAGE_URL + " text, " + FIELD_URL + " text, " + FIELD_PROTECTED + " boolean, " + FIELD_FOLLOWERS_COUNT + " integer, " + FIELD_FRIENDS_COUNT + " integer, " + FIELD_FAVORITES_COUNT + " integer, " + FIELD_STATUSES_COUNT + " integer, " + FIELD_LAST_STATUS + " text, " + FIELD_CREATED_AT + " date, " + FIELD_FOLLOWING + " boolean " // +FIELD_FOLLOWER_IDS+" text" + ")"; /** * TODO: 将游标解析为一条用户信息 * * @param cursor * 该方法不会关闭游标 * @return 成功返回User类型的单条数据, 失败返回null */ public static User parseCursor(Cursor cursor) { if (null == cursor || 0 == cursor.getCount()) { Log.w(TAG, "Cann't parse Cursor, bacause cursor is null or empty."); return null; } User user = new User(); user.id = cursor.getString(cursor.getColumnIndex(_ID)); user.name = cursor.getString(cursor.getColumnIndex(FIELD_USER_NAME)); user.screenName = cursor.getString(cursor .getColumnIndex(FIELD_USER_SCREEN_NAME)); user.location = cursor .getString(cursor.getColumnIndex(FIELD_LOCALTION)); user.description = cursor.getString(cursor .getColumnIndex(FIELD_DESCRIPTION)); user.profileImageUrl = cursor.getString(cursor .getColumnIndex(FIELD_PROFILE_IMAGE_URL)); user.url = cursor.getString(cursor.getColumnIndex(FIELD_URL)); user.isProtected = (0 == cursor.getInt(cursor .getColumnIndex(FIELD_PROTECTED))) ? false : true; user.followersCount = cursor.getInt(cursor .getColumnIndex(FIELD_FOLLOWERS_COUNT)); user.lastStatus = cursor.getString(cursor .getColumnIndex(FIELD_LAST_STATUS)); user.friendsCount = cursor.getInt(cursor .getColumnIndex(FIELD_FRIENDS_COUNT)); user.favoritesCount = cursor.getInt(cursor .getColumnIndex(FIELD_FAVORITES_COUNT)); user.statusesCount = cursor.getInt(cursor .getColumnIndex(FIELD_STATUSES_COUNT)); user.isFollowing = (0 == cursor.getInt(cursor .getColumnIndex(FIELD_FOLLOWING))) ? false : true; // TODO:报空指针异常,待查 // try { // user.createdAt = // StatusDatabase.DB_DATE_FORMATTER.parse(cursor.getString(cursor.getColumnIndex(MessageTable.FIELD_CREATED_AT))); // } catch (ParseException e) { // Log.w(TAG, "Invalid created at data."); // } return user; } }