/** * Operation to save user record into SQLite DB * * @param name username * @param score user score * @param overwrite overwrite the existing record or not */ public void saveRecord(String name, int score, boolean overwrite) { if (overwrite) { writeIntoDB(name, score, overwrite); } else { List<UserScoreData> resultList = getAllUsersData(true); if ((resultList != null) && (resultList.size() > 0)) { boolean nameFound = false; Iterator iterator = resultList.iterator(); while (iterator.hasNext()) { UserScoreData userdata = (UserScoreData) iterator.next(); if (name.equalsIgnoreCase(userdata.getName())) { nameFound = true; break; } } if (nameFound) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setErrorCode(IAppConstants.ERROR_RESPONSE_DUPLICATE_ENTRY); errorResponse.setMessage("Duplicate Entry"); mPresenterNotifier.PostNotification( IPresenterNotifier.NOTIFICATION_SAVE_RECORD, errorResponse); } else { writeIntoDB(name, score, overwrite); } } else { writeIntoDB(name, score, overwrite); } } }
/** Returns highest score row from DB. */ public void getHighestScore() { try { Dao<UserScoreData, Integer> usersScoreData = getHelper().getUserScoreData(); QueryBuilder<UserScoreData, Integer> builder = usersScoreData.queryBuilder(); builder.orderBy("score", false); UserScoreData result = usersScoreData.queryForFirst(builder.prepare()); mPresenterNotifier.PostNotification(IPresenterNotifier.NOTIFICATION_HIGHEST_SCORE, result); } catch (SQLException e) { e.printStackTrace(); } if (databaseHelper != null) { OpenHelperManager.releaseHelper(); databaseHelper = null; } }
/** * Add data into new row of DB. If data already exist it checks whether it needs to overwrite or * not. * * @param name user name * @param score user score * @param overwrite overwrite data or not if duplicate exist. */ private void writeIntoDB(String name, int score, boolean overwrite) { UserScoreData userScore = new UserScoreData(name, score); try { final Dao<UserScoreData, Integer> userScoreData = getHelper().getUserScoreData(); if (overwrite) { QueryBuilder<UserScoreData, Integer> query = userScoreData.queryBuilder(); query.where().eq("name", name); UserScoreData sub = userScoreData.queryForFirst(query.prepare()); userScoreData.delete(sub); userScoreData.create(userScore); } else { userScoreData.create(userScore); } } catch (SQLException e) { e.printStackTrace(); } mPresenterNotifier.PostNotification(IPresenterNotifier.NOTIFICATION_SAVE_RECORD, userScore); }
/** * Returns all the data from Table in sorted order by score. * * @param isWriting isQuery purpose to write/update data * @return all data list in table */ public List<UserScoreData> getAllUsersData(boolean isWriting) { List<UserScoreData> resultList = null; try { Dao<UserScoreData, Integer> usersScoreData = getHelper().getUserScoreData(); QueryBuilder<UserScoreData, Integer> builder = usersScoreData.queryBuilder(); builder.orderBy("score", false); resultList = usersScoreData.query(builder.prepare()); if (!isWriting && (resultList.size() > 0)) { AllUsersRecord usersList = new AllUsersRecord(); usersList.setUserScoreDataList(resultList); mPresenterNotifier.PostNotification(IPresenterNotifier.NOTIFICATION_ALL_RECORDS, usersList); } } catch (SQLException e) { e.printStackTrace(); } if (databaseHelper != null) { OpenHelperManager.releaseHelper(); databaseHelper = null; } return resultList; }