Accounts.java :  » UnTagged » androidgin » person » bangbang » im » Androidgin » Framework » Android Open Source

Android Open Source » UnTagged » androidgin 
androidgin » person » bangbang » im » Androidgin » Framework » Accounts.java
package person.bangbang.im.Androidgin.Framework;

import java.util.ArrayList;
import java.util.List;
/**
 * 
 * corresponding to pidgin's accounts [subsystem].
 * 
 * @author bangbang.song@gmail.com
 */
public class Accounts {
  private List<Account> mList = new ArrayList<Account>();
  private List<OnAccountsEvent> mAccEventListener = new ArrayList<OnAccountsEvent>();
  
  public Account createAccount(String protocolId, String userName, String passward, StatusType type) {
    Account acc = null;
    if (null != findAccount(protocolId, userName)) {
      return acc;
    }
    acc = new Account(protocolId, userName, passward, type);
    add(acc);
    
    return acc;
  }
  
  public void add(Account acc) {
    mList.add(acc);
    
    doAccountAdd(acc);
  }
  public void rem(Account acc) {
    mList.remove(acc);
    
    doAccountRem(acc);
  }
  public Account findAccount(String protocolId, String userName) {
    for ( Account acc : mList) {
      if (protocolId.equals(acc.getProtocolID()) &&
        userName.equals(acc.getUserName())) {
        
        return acc;
      }
    }
    
    return null;
  }
  public List<Account> getAll(boolean isActive) {
    return mList;
  }
  public void regOnAccountEventListener(OnAccountsEvent l) {
    mAccEventListener.add(l);
  }
  public void unRegOnAccountEventListener(OnAccountsEvent l) {
    mAccEventListener.remove(l);
  }
  protected void doAccountAdd(Account acc) {
    for (OnAccountsEvent e : mAccEventListener) {
      e.onAccountAdd(acc);
    }
  }
  protected void doAccountRem(Account acc) {
    for (OnAccountsEvent e : mAccEventListener) {
      e.onAccountRem(acc);
    }
  }
  
  private Accounts(){
  }
  /**
   * do initialization, e.g loads saved accounts.
   */
  private void init(){
    
  }
  private void uninit(){
    
  }
  private static Accounts _instance;
  public static Accounts getInstance() {
    if (null == _instance) {
      _instance = new Accounts();
      _instance.init();
    }
    
    return  _instance;
  }
  
  
  /**
   * 
   * more see pidgin'docs. (sec account signal)
   *
   */
  public interface OnAccountsEvent {
    /**
     * u can guess
     * @param acc
     */
    public void onAccountAdd(Account acc);
    /**
     * u can guess
     * @param acc
     */
    public void onAccountRem(Account acc);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.