@Provides UsersCacher usersCacher(ContentResolver contentResolver, EventBus eventBus, Logger logger) { return new UsersCacher(contentResolver, eventBus, logger); }
public void updateOrInsertUserAndNotify(UserEntity user) { updateOrInsertUser(user); notifyUserDataChanged(user); }
private void processResponse(List<UserInfoScheme> usersInfo) { if (usersInfo == null || usersInfo.isEmpty()) { mLogger.d(TAG, "empty users info list - deleting all users data"); mUsersCacher.deleteAllUsers(); } else { List<String> processedUserIds = updateOrInsertUsers(usersInfo); mUsersCacher.deleteAllUsersWithNonMatchingIds(processedUserIds); } }
private List<String> updateOrInsertUsers(List<UserInfoScheme> usersInfo) { List<String> processedUsersIds = new ArrayList<>(usersInfo.size()); for (UserInfoScheme userInfoScheme : usersInfo) { UserEntity user = convertSchemeToUser(userInfoScheme); mUsersCacher.updateOrInsertUserAndNotify(user); processedUsersIds.add(user.getUserId()); } return processedUsersIds; }
public void updateOrInsertUser(UserEntity user) { mLogger.d(TAG, "updateOrInsertUser() called; user ID: " + user.getUserId()); // TODO: make operations atomic ContentValues cv = userToContentValues(user); int updateCount = mContentResolver.update( IDoCareContract.Users.CONTENT_URI, cv, IDoCareContract.Users.COL_USER_ID + " = ?", new String[] {user.getUserId()} ); if (updateCount <= 0) { mContentResolver.insert( IDoCareContract.Users.CONTENT_URI, cv ); mLogger.v(TAG, "new user inserted"); } else { mLogger.v(TAG, "user updated"); } }