mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-12-26 13:38:59 +00:00
Automatically clean users information cache.
This commit is contained in:
parent
81f5a80ed8
commit
10d382ccb6
@ -15,7 +15,7 @@ public final class DatabaseContract {
|
||||
public DatabaseContract(){}
|
||||
|
||||
/* Database basic information */
|
||||
public static final int DATABASE_VERSION = 4;
|
||||
public static final int DATABASE_VERSION = 5;
|
||||
public static final String DATABASE_NAME = "database.db";
|
||||
|
||||
/* Users info table */
|
||||
@ -23,6 +23,7 @@ public final class DatabaseContract {
|
||||
public static final String TABLE_NAME = "users_info";
|
||||
|
||||
public static final String COLUMN_NAME_USER_ID = "user_id";
|
||||
public static final String COLUMN_NAME_TIME_INSERT = "time_insert";
|
||||
public static final String COLUMN_NAME_USER_FIRSTNAME = "first_name";
|
||||
public static final String COLUMN_NAME_USER_LASTNAME = "last_name";
|
||||
public static final String COLUMN_NAME_USER_ACCOUNT_IMAGE = "account_image";
|
||||
|
@ -33,6 +33,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
"CREATE TABLE " + UsersInfoSchema.TABLE_NAME + " (" +
|
||||
UsersInfoSchema._ID + " INTEGER PRIMARY KEY," +
|
||||
UsersInfoSchema.COLUMN_NAME_USER_ID + INTEGER_TYPE + COMMA_SEP +
|
||||
UsersInfoSchema.COLUMN_NAME_TIME_INSERT + INTEGER_TYPE + COMMA_SEP +
|
||||
UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME + TEXT_TYPE + COMMA_SEP +
|
||||
UsersInfoSchema.COLUMN_NAME_USER_LASTNAME + TEXT_TYPE + COMMA_SEP +
|
||||
UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE + TEXT_TYPE
|
||||
|
@ -38,7 +38,7 @@ public class GetUsersHelper {
|
||||
/**
|
||||
* User information database helper
|
||||
*/
|
||||
private UsersInfosDbHelper udbHelper = null;
|
||||
private UsersInfoDbHelper udbHelper = null;
|
||||
|
||||
/**
|
||||
* Public constructor of the class
|
||||
@ -55,7 +55,7 @@ public class GetUsersHelper {
|
||||
* @param context The context of execution of the application
|
||||
* @param udbHelper User database helper
|
||||
*/
|
||||
public GetUsersHelper(@NonNull Context context, @NonNull UsersInfosDbHelper udbHelper){
|
||||
public GetUsersHelper(@NonNull Context context, @NonNull UsersInfoDbHelper udbHelper){
|
||||
mContext = context.getApplicationContext();
|
||||
this.udbHelper = udbHelper;
|
||||
}
|
||||
@ -68,7 +68,7 @@ public class GetUsersHelper {
|
||||
*/
|
||||
public GetUsersHelper(@NonNull Context context, @NonNull DatabaseHelper dbHelper){
|
||||
mContext = context;
|
||||
this.udbHelper = new UsersInfosDbHelper(dbHelper);
|
||||
this.udbHelper = new UsersInfoDbHelper(dbHelper);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,6 +6,10 @@ import android.database.sqlite.SQLiteDatabase;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.DatabaseContract.UsersInfoSchema;
|
||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||
|
||||
import static org.communiquons.android.comunic.client.data.DatabaseContract.UsersInfoSchema.COLUMN_NAME_TIME_INSERT;
|
||||
import static org.communiquons.android.comunic.client.data.DatabaseContract.UsersInfoSchema.TABLE_NAME;
|
||||
|
||||
/**
|
||||
* Users information helpers
|
||||
@ -16,7 +20,12 @@ import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||
* Created by pierre on 11/2/17.
|
||||
*/
|
||||
|
||||
class UsersInfosDbHelper {
|
||||
class UsersInfoDbHelper {
|
||||
|
||||
/**
|
||||
* Max age of user information in cache
|
||||
*/
|
||||
private static final int USER_INFO_MAX_AGE = 36000; //10 hours
|
||||
|
||||
/**
|
||||
* Database helper
|
||||
@ -28,8 +37,9 @@ class UsersInfosDbHelper {
|
||||
*
|
||||
* @param dbHelper Database helper object
|
||||
*/
|
||||
UsersInfosDbHelper(DatabaseHelper dbHelper){
|
||||
UsersInfoDbHelper(DatabaseHelper dbHelper){
|
||||
this.dbHelper = dbHelper;
|
||||
clean();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -51,7 +61,7 @@ class UsersInfosDbHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check wether a user is present in the database or not
|
||||
* Check whether a user is present in the database or not
|
||||
*
|
||||
* @param userID The user to research on the database
|
||||
* @return boolean True if the user exists / false else
|
||||
@ -73,7 +83,7 @@ class UsersInfosDbHelper {
|
||||
|
||||
//Perform the request on the database
|
||||
Cursor c = db.query(
|
||||
UsersInfoSchema.TABLE_NAME,
|
||||
TABLE_NAME,
|
||||
projection,
|
||||
selection,
|
||||
selectionArgs,
|
||||
@ -87,9 +97,6 @@ class UsersInfosDbHelper {
|
||||
//Close cursor
|
||||
c.close();
|
||||
|
||||
//Close the database
|
||||
//db.close();
|
||||
|
||||
return number_entries > 0;
|
||||
}
|
||||
|
||||
@ -105,17 +112,10 @@ class UsersInfosDbHelper {
|
||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||
|
||||
//Prepare the insertion
|
||||
ContentValues newValues = new ContentValues();
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_ID, user.getId());
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME, user.getFirstName());
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_LASTNAME, user.getLastName());
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE, user.getAcountImageURL());
|
||||
ContentValues newValues = UserInfoToDb(user);
|
||||
|
||||
//Insert it
|
||||
long newRowId = db.insert(UsersInfoSchema.TABLE_NAME, null, newValues);
|
||||
|
||||
//Close the database
|
||||
//db.close();
|
||||
long newRowId = db.insert(TABLE_NAME, null, newValues);
|
||||
|
||||
return (int) newRowId;
|
||||
}
|
||||
@ -150,7 +150,7 @@ class UsersInfosDbHelper {
|
||||
|
||||
//Perform the request
|
||||
Cursor c = db.query(
|
||||
UsersInfoSchema.TABLE_NAME,
|
||||
TABLE_NAME,
|
||||
requestedFields,
|
||||
selection,
|
||||
selectionArgs,
|
||||
@ -164,31 +164,14 @@ class UsersInfosDbHelper {
|
||||
result = null;
|
||||
else {
|
||||
|
||||
//Initialize User object
|
||||
result = new UserInfo();
|
||||
|
||||
c.moveToFirst();
|
||||
|
||||
//Extract the information and record them
|
||||
result.setId(c.getInt(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_ID)));
|
||||
|
||||
result.setFirstName(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME)));
|
||||
|
||||
result.setLastName(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_LASTNAME)));
|
||||
|
||||
result.setAccountImageURL(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE)));
|
||||
c.moveToFirst();
|
||||
result = DbToUserInfo(c);
|
||||
}
|
||||
|
||||
//Close the cursor
|
||||
c.close();
|
||||
|
||||
//Close the database
|
||||
//db.close();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -208,10 +191,7 @@ class UsersInfosDbHelper {
|
||||
String[] conditionArgs = {""+userID};
|
||||
|
||||
//Perform the request
|
||||
int result = db.delete(UsersInfoSchema.TABLE_NAME, condition, conditionArgs);
|
||||
|
||||
//Close database
|
||||
//db.close();
|
||||
int result = db.delete(TABLE_NAME, condition, conditionArgs);
|
||||
|
||||
return result > 0;
|
||||
}
|
||||
@ -219,7 +199,7 @@ class UsersInfosDbHelper {
|
||||
/**
|
||||
* Update a user entry
|
||||
*
|
||||
* @param userInfo New informations about the user
|
||||
* @param userInfo New information about the user
|
||||
* @return True if the operation seems to be a success / false else
|
||||
*/
|
||||
private boolean update(UserInfo userInfo){
|
||||
@ -228,10 +208,7 @@ class UsersInfosDbHelper {
|
||||
|
||||
//Prepare the request
|
||||
//Set the new values
|
||||
ContentValues newValues = new ContentValues();
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME, userInfo.getFirstName());
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_LASTNAME, userInfo.getLastName());
|
||||
newValues.put(UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE, userInfo.getAcountImageURL());
|
||||
ContentValues newValues = UserInfoToDb(userInfo);
|
||||
|
||||
//Set the condition
|
||||
String conditions = UsersInfoSchema.COLUMN_NAME_USER_ID + " = ?";
|
||||
@ -241,10 +218,51 @@ class UsersInfosDbHelper {
|
||||
|
||||
|
||||
//Perform the request
|
||||
int result = db.update(UsersInfoSchema.TABLE_NAME, newValues, conditions, conditionArgs);
|
||||
return db.update(TABLE_NAME, newValues, conditions, conditionArgs) > 0;
|
||||
|
||||
//db.close();
|
||||
}
|
||||
|
||||
return result > 0;
|
||||
/**
|
||||
* Remove old user data
|
||||
*/
|
||||
private void clean(){
|
||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||
String whereClauses = COLUMN_NAME_TIME_INSERT + " < ?";
|
||||
String[] whereArgs = {(TimeUtils.time() - USER_INFO_MAX_AGE)+""};
|
||||
db.delete(TABLE_NAME, whereClauses, whereArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn user information object into database entry
|
||||
*
|
||||
* @param user Information about the user
|
||||
* @return Generated database entry
|
||||
*/
|
||||
private ContentValues UserInfoToDb(UserInfo user){
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(UsersInfoSchema.COLUMN_NAME_USER_ID, user.getId());
|
||||
values.put(UsersInfoSchema.COLUMN_NAME_TIME_INSERT, TimeUtils.time());
|
||||
values.put(UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME, user.getFirstName());
|
||||
values.put(UsersInfoSchema.COLUMN_NAME_USER_LASTNAME, user.getLastName());
|
||||
values.put(UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE, user.getAcountImageURL());
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn a database entry into a UserInfo object
|
||||
*
|
||||
* @param c The cursor to parse
|
||||
* @return Generated user information
|
||||
*/
|
||||
private UserInfo DbToUserInfo(Cursor c){
|
||||
UserInfo user = new UserInfo();
|
||||
user.setId(c.getInt(c.getColumnIndexOrThrow(UsersInfoSchema.COLUMN_NAME_USER_ID)));
|
||||
user.setFirstName(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME)));
|
||||
user.setLastName(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_LASTNAME)));
|
||||
user.setAccountImageURL(c.getString(c.getColumnIndexOrThrow(
|
||||
UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE)));
|
||||
return user;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user