editing data of frequent users in memory

This commit is contained in:
Rubén Martín Hidalgo 2016-08-24 00:08:11 +02:00
parent 0c87120a4d
commit b8c3ad989a
2 changed files with 38 additions and 11 deletions

View File

@ -1417,6 +1417,30 @@ public class DataBaseHelper {
ent.save(); ent.save();
} }
/**
* Inserts a list of frequent recipients
*
* @param list the list of users
* @return number of users inserted in the table
*/
public int insertFrequentsList(List<FrequentUser> list) {
int numElements = 0;
for(int i=0; i<list.size(); i++){
Entity ent = new Entity(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS);
ent.setValue("nicknameRecipient", list.get(i).getUserNickname());
ent.setValue("surname1Recipient", list.get(i).getUserSurname1());
ent.setValue("surname2Recipient", list.get(i).getUserSurname2());
ent.setValue("firstnameRecipient", list.get(i).getUserFirstname());
ent.setValue("photoRecipient", list.get(i).getUserPhoto());
ent.setValue("score", list.get(i).getScore());
ent.save();
numElements++;
}
return numElements;
}
/** /**
* Updates a course in database * Updates a course in database
* *

View File

@ -352,17 +352,14 @@ public class Messages extends Module {
*/ */
@Override @Override
protected void postConnect() { protected void postConnect() {
progressLayout.setVisibility(View.GONE);
String messageSent = getString(R.string.messageSentMsg) + ":\n" + receiversNames;
frequentsList = dbHelper.getAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS);
boolean frequent = false; boolean frequent = false;
int newFrequents = 0;
double score; double score;
String nickname; String nickname;
dbHelper.beginTransaction(); //get data of frequent users
frequentsList = dbHelper.getAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS);
//modify data in memory
for(int i=0; i < frequentsList.size(); i++){ for(int i=0; i < frequentsList.size(); i++){
nickname = frequentsList.get(i).getUserNickname(); nickname = frequentsList.get(i).getUserNickname();
for(int j=0; j < arrayReceivers.size(); j++){ for(int j=0; j < arrayReceivers.size(); j++){
@ -372,7 +369,7 @@ public class Messages extends Module {
if(score > MAX_SCORE) if(score > MAX_SCORE)
score = MAX_SCORE; score = MAX_SCORE;
dbHelper.updateFrequentRecipient(nickname, score); frequentsList.get(i).setScore(score);
arrayReceivers.remove(j); arrayReceivers.remove(j);
arrayReceiversFirstNames.remove(j); arrayReceiversFirstNames.remove(j);
arrayReceiversSurNames1.remove(j); arrayReceiversSurNames1.remove(j);
@ -385,10 +382,10 @@ public class Messages extends Module {
if(frequent == false){ if(frequent == false){
score = frequentsList.get(i).getScore() * DECREASE_FACTOR; score = frequentsList.get(i).getScore() * DECREASE_FACTOR;
if(score < MIN_SCORE) { if(score < MIN_SCORE) {
dbHelper.removeAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS, "nicknameRecipient", nickname); frequentsList.remove(i);
Log.d(TAG, "frequent user '" + nickname + "' removed"); Log.d(TAG, "frequent user '" + nickname + "' removed");
}else { }else {
dbHelper.updateFrequentRecipient(nickname, score); frequentsList.get(i).setScore(score);
Log.d(TAG, "frequent user '" + nickname + "' updated, score = " + score); Log.d(TAG, "frequent user '" + nickname + "' updated, score = " + score);
} }
} }
@ -396,12 +393,18 @@ public class Messages extends Module {
} }
for(int i=0; i < arrayReceivers.size(); i++){ for(int i=0; i < arrayReceivers.size(); i++){
dbHelper.insertFrequentRecipient(new FrequentUser(arrayReceivers.get(i), arrayReceiversSurNames1.get(i), arrayReceiversSurNames2.get(i), arrayReceiversFirstNames.get(i), arrayPhotos.get(i), false, INITIAL_SCORE)); frequentsList.add(new FrequentUser(arrayReceivers.get(i), arrayReceiversSurNames1.get(i), arrayReceiversSurNames2.get(i), arrayReceiversFirstNames.get(i), arrayPhotos.get(i), false, INITIAL_SCORE));
Log.d(TAG, "frequent user '" + arrayReceivers.get(i) + "' added = " + INITIAL_SCORE); Log.d(TAG, "frequent user '" + arrayReceivers.get(i) + "' added = " + INITIAL_SCORE);
} }
dbHelper.endTransaction(true); //empty table of frequent recipients
dbHelper.emptyTable(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS);
//insert new data in data base
dbHelper.insertFrequentsList(frequentsList);
progressLayout.setVisibility(View.GONE);
String messageSent = getString(R.string.messageSentMsg) + ":\n" + receiversNames;
Toast.makeText(this, messageSent, Toast.LENGTH_LONG).show(); Toast.makeText(this, messageSent, Toast.LENGTH_LONG).show();
finish(); finish();
} }