ForumPresenceProvider.java :  » App » alldroid » org » alldroid » forum » providers » Android Open Source

Android Open Source » App » alldroid 
alldroid » org » alldroid » forum » providers » ForumPresenceProvider.java
/**
 *
 */
package org.alldroid.forum.providers;

import java.security.InvalidParameterException;

import org.alldroid.forum.providers.MessengerPresence.Status;
import org.alldroid.forum.service.BaseForumService;
import org.xmlrpc.android.XmlRpcCallCompletedListener;
import org.xmlrpc.android.XmlRpcException;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

/**
 * @author trr4rac
 */
public class ForumPresenceProvider implements ChatPresenceProvider {
  private static final String TAG = ForumPresenceProvider.class.getSimpleName ( );
  private BaseForumService service;

  /**
   *
   */
  private ForumPresenceProvider ( BaseForumService service ) {
    this.setService ( service );
  }

  private static ForumPresenceProvider instance;

  public static ForumPresenceProvider getInstance ( BaseForumService service ) {
    if ( instance == null ) {
      instance = new ForumPresenceProvider ( service );
    }
    return instance;
  }

  /*
   * (non-Javadoc)
   * @see org.alldroid.forum.providers.ChatPresenceProvider#getStatus(java.lang.String)
   */
  @Override
  public Status getStatus ( String user ) {
    if ( this.getService ( ) != null ) {
      if ( this.getService ( ).isUserOnline ( user ) ) {
        return Status.Online;
      } else {
        return Status.Offline;
      }
    } else {
      return Status.Unknown;
    }
  }

  /**
   * @param service
   *          the service to set
   */
  protected void setService ( BaseForumService service ) {
    this.service = service;
  }

  /**
   * @return the service
   */
  public BaseForumService getService ( ) {
    return service;
  }

  /* (non-Javadoc)
   * @see org.alldroid.forum.providers.ChatPresenceProvider#getSendToIntent(java.lang.String)
   */
  @Override
  public Intent getSendToIntent ( String user ) {
    // TODO launch PM to user
    return null;
  }

  /* (non-Javadoc)
   * @see org.alldroid.forum.providers.ChatPresenceProvider#getStatusAsync(java.lang.String, org.alldroid.forum.providers.ChatPresenceStatusCallback)
   */
  @Override
  public void getStatusAsync ( String user, final ChatPresenceStatusCallback callback ) {
    if ( callback == null ) {
      throw new InvalidParameterException ( "callback cannot be null" );
    }

    Bundle state = new Bundle();

    try {
      this.getService ( ).isUserOnlineAsync ( user, new XmlRpcCallCompletedListener(this.getService ( ).getXmlrpcClient ( ), state ) {
        @Override
        public void onCompletion ( Object result ) {
          Boolean resultValue = ForumPresenceProvider.this.getService ( ).isUserOnlineAsyncEnd ( result );
          callback.onStatusReceived ( resultValue ? Status.Online : Status.Offline );
        }
      });
    } catch ( XmlRpcException ex ) {
      Log.e(TAG,ex.getMessage ( ),ex);
    }
  }

}
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.