package com.tomclaw.mandarin.im;
import android.database.Cursor;
import com.tomclaw.mandarin.core.GlobalProvider;
import java.io.Closeable;
/**
* Created by solkin on 23/03/14.
*/
public class BuddyCursor implements Closeable {
private Cursor cursor;
private boolean isColumnsRead;
/**
* Columns
*/
private static int COLUMN_ROW_AUTO_ID;
private static int COLUMN_ROSTER_BUDDY_ACCOUNT_DB_ID;
private static int COLUMN_ROSTER_BUDDY_ID;
private static int COLUMN_ROSTER_BUDDY_NICK;
private static int COLUMN_ROSTER_BUDDY_GROUP;
private static int COLUMN_ROSTER_BUDDY_GROUP_ID;
private static int COLUMN_ROSTER_BUDDY_DIALOG;
private static int COLUMN_ROSTER_BUDDY_STATUS;
private static int COLUMN_ROSTER_BUDDY_STATUS_TITLE;
private static int COLUMN_ROSTER_BUDDY_STATUS_MESSAGE;
private static int COLUMN_ROSTER_BUDDY_ACCOUNT_TYPE;
private static int COLUMN_ROSTER_BUDDY_ALPHABET_INDEX;
private static int COLUMN_ROSTER_BUDDY_UNREAD_COUNT;
private static int COLUMN_ROSTER_BUDDY_AVATAR_HASH;
private static int COLUMN_ROSTER_BUDDY_DRAFT;
private static int COLUMN_ROSTER_BUDDY_LAST_SEEN;
private static int COLUMN_ROSTER_BUDDY_LAST_TYPING;
private static int COLUMN_ROSTER_BUDDY_OPERATION;
public BuddyCursor() {
}
public BuddyCursor(Cursor cursor) {
switchCursor(cursor);
}
public void switchCursor(Cursor cursor) {
this.cursor = cursor;
readColumns();
}
public void invalidateColumns() {
isColumnsRead = false;
readColumns();
}
private void readColumns() {
if (!isColumnsRead && cursor != null) {
COLUMN_ROW_AUTO_ID = cursor.getColumnIndex(GlobalProvider.ROW_AUTO_ID);
COLUMN_ROSTER_BUDDY_ACCOUNT_DB_ID = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_ACCOUNT_DB_ID);
COLUMN_ROSTER_BUDDY_ID = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_ID);
COLUMN_ROSTER_BUDDY_NICK = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_NICK);
COLUMN_ROSTER_BUDDY_GROUP = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_GROUP);
COLUMN_ROSTER_BUDDY_GROUP_ID = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_GROUP_ID);
COLUMN_ROSTER_BUDDY_DIALOG = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_DIALOG);
COLUMN_ROSTER_BUDDY_STATUS = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_STATUS);
COLUMN_ROSTER_BUDDY_STATUS_TITLE = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_STATUS_TITLE);
COLUMN_ROSTER_BUDDY_STATUS_MESSAGE = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_STATUS_MESSAGE);
COLUMN_ROSTER_BUDDY_ACCOUNT_TYPE = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_ACCOUNT_TYPE);
COLUMN_ROSTER_BUDDY_ALPHABET_INDEX = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_ALPHABET_INDEX);
COLUMN_ROSTER_BUDDY_UNREAD_COUNT = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_UNREAD_COUNT);
COLUMN_ROSTER_BUDDY_AVATAR_HASH = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_AVATAR_HASH);
COLUMN_ROSTER_BUDDY_DRAFT = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_DRAFT);
COLUMN_ROSTER_BUDDY_LAST_SEEN = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_LAST_SEEN);
COLUMN_ROSTER_BUDDY_LAST_TYPING = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_LAST_TYPING);
COLUMN_ROSTER_BUDDY_OPERATION = cursor.getColumnIndex(GlobalProvider.ROSTER_BUDDY_OPERATION);
isColumnsRead = true;
}
}
public boolean moveToPosition(int position) {
return cursor.moveToPosition(position);
}
public int getCount() {
return cursor.getCount();
}
public Cursor getRawCursor() {
return cursor;
}
public int getBuddyAccountDbId() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_ACCOUNT_DB_ID);
}
public int getBuddyDbId() {
return cursor.getInt(COLUMN_ROW_AUTO_ID);
}
public String getBuddyId() {
return cursor.getString(COLUMN_ROSTER_BUDDY_ID);
}
public String getBuddyNick() {
return cursor.getString(COLUMN_ROSTER_BUDDY_NICK);
}
public String getBuddyGroup() {
return cursor.getString(COLUMN_ROSTER_BUDDY_GROUP);
}
public int getBuddyGroupId() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_GROUP_ID);
}
public boolean getBuddyDialog() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_DIALOG) != 0;
}
public int getBuddyStatus() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_STATUS);
}
public String getBuddyStatusTitle() {
return cursor.getString(COLUMN_ROSTER_BUDDY_STATUS_TITLE);
}
public String getBuddyStatusMessage() {
return cursor.getString(COLUMN_ROSTER_BUDDY_STATUS_MESSAGE);
}
public String getBuddyAccountType() {
return cursor.getString(COLUMN_ROSTER_BUDDY_ACCOUNT_TYPE);
}
public int getBuddyAlphabetIndex() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_ALPHABET_INDEX);
}
public int getBuddyUnreadCount() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_UNREAD_COUNT);
}
public String getBuddyAvatarHash() {
return cursor.getString(COLUMN_ROSTER_BUDDY_AVATAR_HASH);
}
public String getBuddyDraft() {
return cursor.getString(COLUMN_ROSTER_BUDDY_DRAFT);
}
public long getBuddyLastSeen() {
return cursor.getLong(COLUMN_ROSTER_BUDDY_LAST_SEEN);
}
public long getBuddyLastTyping() {
return cursor.getLong(COLUMN_ROSTER_BUDDY_LAST_TYPING);
}
public int getBuddyOperation() {
return cursor.getInt(COLUMN_ROSTER_BUDDY_OPERATION);
}
public boolean moveToFirst() {
return cursor.moveToFirst();
}
public boolean isAfterLast() {
return cursor.isAfterLast();
}
public boolean moveToNext() {
return cursor.moveToNext();
}
@Override
public void close() {
if (cursor != null) {
cursor.close();
}
}
public boolean isClosed() {
return cursor.isClosed();
}
}