package com.talk.demo.sync;
import android.util.Log;
import com.talk.demo.persistence.DBManager;
import com.talk.demo.persistence.FriendRecord;
import com.talk.demo.types.Friend;
import com.talk.demo.types.Group;
import java.util.ArrayList;
import java.util.List;
public class SyncCompaign2 {
private static String TAG = "SyncCompaign2";
private static String myLog(FriendRecord fr) {
return fr.getFriend().toString();
}
/*
* add for get dirty friends
*/
public static List<Friend> getDirtyFriends(DBManager db) {
List<Friend> dirtyFriends = new ArrayList<Friend>() ;
/*
* get dirty records from db
*/
List<FriendRecord> frlist = db.queryFriend();
for(FriendRecord fr: frlist) {
Log.d(TAG, "friend record: "+myLog(fr));
//check the dirty and deleted flag
final boolean isDeleted = (1 == fr.getFriend().getDeleted());
final boolean isDirty = (1 == fr.getFriend().getDirty());
if (isDeleted) {
Log.i(TAG, "friend is marked for deletion");
Friend friend = Friend.createDeletedFriend(fr.getFriend().getDataId(),
fr.getFriend().getServerId());
dirtyFriends.add(friend);
} else if (isDirty) {
Friend rawFriend = fr.getFriend();
Log.i(TAG, "friend Name: " + rawFriend.getUserName());
dirtyFriends.add(rawFriend);
}
}
return dirtyFriends;
}
/*
* update records from server
*/
public static void updateFriends(DBManager db, Group<Friend> updateFriends) {
/*
* 1: Update server id
* 2: Clear dirty flag
* 3: Delete deleted record
* 4: Get sync state
*/
for(Friend rf: updateFriends) {
FriendRecord fr = new FriendRecord(rf);
Log.d(TAG, "server id: " + rf.getServerId());
Log.d(TAG, "client id: " + rf.getDataId());
if(rf.getDataId() == 0) {
Log.d(TAG, "[need add] server id: " + fr.getFriend().server_id);
db.addFriendFromServer(fr);
} else {
Log.d(TAG, "[update] server id: " + fr.getFriend().server_id);
db.updateFriendServerInfo(fr.getFriend());
}
}
}
}