package by.istin.android.xcore.test.vk; import android.content.ContentValues; import android.provider.BaseColumns; import by.istin.android.xcore.annotations.dbByte; import by.istin.android.xcore.annotations.dbInteger; import by.istin.android.xcore.annotations.dbLong; import by.istin.android.xcore.annotations.dbString; import by.istin.android.xcore.db.impl.DBHelper; import by.istin.android.xcore.db.entity.IBeforeArrayUpdate; import by.istin.android.xcore.db.IDBConnection; import by.istin.android.xcore.db.entity.IMerge; import by.istin.android.xcore.source.DataSourceRequest; import by.istin.android.xcore.utils.StringUtil; import com.google.gson.annotations.SerializedName; public class User implements BaseColumns, IMerge, IBeforeArrayUpdate { @dbLong @SerializedName(value="uid") public static final String ID = _ID; @dbString public static final String FIRST_NAME = "first_name"; @dbString public static final String LAST_NAME = "last_name"; @dbString public static final String PHOTO = "photo"; @dbString public static final String PHOTO_MEDIUM = "photo_medium"; @dbString public static final String PHOTO_50 = "photo_50"; @dbString public static final String PHOTO_100 = "photo_100"; @dbString public static final String PHOTO_BIG = "photo_big"; @dbByte public static final String ONLINE_MOBILE = "online_mobile"; @dbString public static final String ONLINE_APP = "online_app"; @dbByte public static final String ONLINE = "online"; @dbByte public static final String SEX = "sex"; @dbLong @SerializedName(value="last_seen:time") public static final String LAST_SEEN_TIME = "last_seen_time"; //local fields @dbString public static final String FULL_NAME = "full_name"; @dbString public static final String SEARCH_VALUE = "search_value"; @dbInteger public static final String POSITION = "position"; @Override public void merge(DBHelper dbHelper, IDBConnection db, DataSourceRequest dataSourceRequest, ContentValues oldValues, ContentValues newValues) { if (newValues.getAsInteger(POSITION) == null) { newValues.put(POSITION, oldValues.getAsInteger(POSITION)); } } @Override public void onBeforeListUpdate(DBHelper dbHelper, IDBConnection db, DataSourceRequest dataSourceRequest, int position, ContentValues contentValues) { String fullName = contentValues.getAsString(FIRST_NAME) + " " + contentValues.getAsString(LAST_NAME); contentValues.put(FULL_NAME, fullName); contentValues.put(SEARCH_VALUE, StringUtil.translit(fullName)); contentValues.put(POSITION, position); } }