package person.bangbang.im.Androidgin.Framework;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.MethodNotSupportedException;
import person.bangbang.im.Androidgin.Util.Log;
/*
* a collection of all buddies.
* corresponding to pidgin's buddy [subsystem]
*
* @author bangbang.song@gmail.com
*/
public class Buddies {
private static final String TAG = "Framework.Buddies";
private static Buddies _instance;
/*
* the buddy data, this mab be change in future for optimization.
*/
private List<Buddy> mList = new ArrayList<Buddy>();
private List<OnBuddiesEvent> mBuddyListeners = new ArrayList<OnBuddiesEvent>();
private Buddies() {
}
/**
* do Initialization work. e.g load saved buddies.
*/
private void init(){
}
public static Buddies getInstance() {
if (null == _instance) {
_instance = new Buddies();
_instance.init();
}
return _instance;
}
/**
*
* @param buddyId NOTE format [protoclId]:[userName]
* @return
*/
public Buddy findBuddyById(String buddyId) {
for (Buddy b : mList) {
if (b.getID().equals(buddyId)) {
return b;
}
}
return null;
}
public List<Buddy> getAll() {
return mList;
}
public void rem(Buddy b) {
Buddy bb = findBuddyById(b.getID());
if (null != bb) {
mList.remove(bb);
doBuddyRem(bb);
}
}
// this is NO duplicate check, you must be sure this.
// public void addBuddy(Buddy b) {
public void add(Buddy b){
Log.d(TAG, "buddy added: " + b.toString());
mList.add(b);
doBuddyAdd(b);
}
// this is NO duplicate check, you must be sure this.
// public void addBuddies(List<Buddy> l) {
public void add(List<Buddy> l) {
for (Buddy b : l) {
add(b);
}
}
// public Buddy getBuddyByName(String userName) {
// for (Buddy b : mList) {
// if (userName.equals(b.getUserName())) {
// return b;
// }
// }
//
// return null;
// }
/**
* @param groupName
* @return
*/
public List<Buddy> getBuddiesByGroup(String groupName) {
return null;
}
/**
* Schedule a save of the blist.xml file.
* @throws MethodNotSupportedException
*/
public void ScheduleSave() throws MethodNotSupportedException{
throw new MethodNotSupportedException("ScheduleSave");
}
public void regOnBuddyEventListener(OnBuddiesEvent l) {
mBuddyListeners.add(l);
}
public void unRegOnBuddyEventListener(OnBuddiesEvent l) {
mBuddyListeners.remove(l);
}
protected void doBuddyAdd(Buddy b) {
for (OnBuddiesEvent l : mBuddyListeners) {
l.onAdd(b);
}
}
protected void doBuddyRem(Buddy b) {
for (OnBuddiesEvent l : mBuddyListeners) {
l.onRem(b);
}
}
/**
*
*/
public interface OnBuddiesEvent {
/**
* a budy has added.
*/
public void onAdd(Buddy b);
/**
* guess by the name.
*/
public void onRem(Buddy b);
}
}
|