Package org.eclipse.ecf.example.clients.applications

Source Code of org.eclipse.ecf.example.clients.applications.ChatRobotApplication

/*******************************************************************************
* Copyright (c) 2010 Composent, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.example.clients.applications;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.example.clients.IMessageReceiver;
import org.eclipse.ecf.example.clients.XMPPChatClient;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceListener;
import org.eclipse.ecf.presence.im.IChatID;
import org.eclipse.ecf.presence.im.IChatMessage;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;

public class ChatRobotApplication implements IApplication, IMessageReceiver, IPresenceListener {

  // this map contains the account -> XMPPID.  Items are added to it via the IPresenceListener.handlePresence method
  private Map rosterUsers = Collections.synchronizedMap(new HashMap());
 
  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.
   * IApplicationContext)
   */
  public Object start(IApplicationContext context) throws Exception {
    // process program arguments
    String[] originalArgs = (String[]) context.getArguments().get(
        "application.args");
    if (originalArgs.length < 3) {
      System.out
          .println("Parameters:  <senderAccount> <senderPassword> <targetAccount> [<message>].  e.g. sender@gmail.com senderpassword receiver@gmail.com \"Hello there\"");
      return new Integer(-1);
    }
    String message = null;
    if (originalArgs.length > 3) message = originalArgs[3];
   
    // Create client
    XMPPChatClient client = new XMPPChatClient(this,this);
    // connect
    client.connect(originalArgs[0], originalArgs[1]);
   
    // Wait for 5s for the roster/presence information to be received
    final Object lock = new Object();
    synchronized (lock) {
      lock.wait(5000);
    }
   
    // Get desired user ID from rosterUsers map.  This is just looking for a user that's active and on our contacts list
    ID targetID = (ID) rosterUsers.get(originalArgs[2]);
    if (targetID == null) {
      System.out.println("target user="+originalArgs[2]+" is not on active on your contacts list.  Cannot send message to this user");
      return new Integer(0);
    }
    // Construct message
    String msgToSend = (message==null)?"Hi, I'm an ECF chat robot.":message;
    System.out.println("ECF chat robot example sending to targetAccount=" + originalArgs[2] + " message="+msgToSend);
   
    // Send message to targetID
    client.sendChat(targetID, msgToSend);

    // Close up nicely and return
    client.close();
    return IApplication.EXIT_OK;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.equinox.app.IApplication#stop()
   */
  public void stop() {
  }

  public void handleMessage(IChatMessage chatMessage) {
    System.out.println("handleMessage(" + chatMessage + ")");
  }

  /**
   * @since 2.0
   */
  public void handlePresence(ID fromID, IPresence presence) {
    System.out.println("handlePresence fromID="+fromID+" presence="+presence);
    IChatID fromChatID = (IChatID) fromID.getAdapter(IChatID.class);
    if (fromChatID != null) {
      rosterUsers.put(fromChatID.getUsername() + "@" + fromChatID.getHostname(), fromID);
    }
  }

}
TOP

Related Classes of org.eclipse.ecf.example.clients.applications.ChatRobotApplication

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.