package com.jakeapp.gui.console;
import java.io.IOException;
import com.jakeapp.gui.console.commandline.LazyCommand;
import com.jakeapp.jake.ics.UserId;
import com.jakeapp.jake.ics.msgservice.IMessageReceiveListener;
import com.jakeapp.jake.ics.exceptions.NetworkException;
import com.jakeapp.jake.ics.exceptions.TimeoutException;
import com.jakeapp.jake.ics.exceptions.OtherUserOfflineException;
import com.jakeapp.jake.ics.impl.xmpp.XmppICService;
import com.jakeapp.jake.ics.impl.xmpp.XmppUserId;
/**
* Test client accepting cli input
*/
public class XmppCommander extends Commander {
public XmppCommander(String[] args) {
super(args);
}
public static void main(String[] args) {
new XmppCommander(args);
}
@Override
protected void onShutdown() {
//
}
@Override
protected void onStartup() {
//
}
private IMessageReceiveListener receiver = new IMessageReceiveListener() {
@Override
public void receivedMessage(UserId from_userid, String content) {
System.out.println("Got message from User: " + from_userid);
System.out.println("content = " + content);
}
};
private XmppICService ics = null;
class Login extends LazyCommand {
public Login() {
super("login", "login <xmppid> <passwd> <groupname>",
"xmppid = user@host/resource where resource is 'Jake' or the "
+ "projectid, groupname = projectname (group in roster)");
}
@Override
public boolean handleArguments(String[] args) {
if (args.length != 4)
return false;
XmppUserId id = new XmppUserId(args[1]);
XmppCommander.this.ics = new XmppICService(JakeCommander.namespace, args[3]);
try {
XmppCommander.this.ics.getStatusService().login(id, args[2], null, 0);
XmppCommander.this.ics.getMsgService().registerReceiveMessageListener(
new IMessageReceiveListener() {
@Override
public void receivedMessage(UserId from_userid, String content) {
System.out.println("Got message from User: " + from_userid);
System.out.println("content = " + content);
}
}
);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (NetworkException e) {
e.printStackTrace();
}
return true;
}
}
class SendMessage extends LazyCommand {
public SendMessage() {
super("sendMessage", "sendMessage <xmppuserid> <message>", "test");
}
@Override
public boolean handleArguments(String[] args) {
if (args.length < 3) {
System.out.println("Insufficient arguments");
return false;
}
if (XmppCommander.this.ics == null) {
System.out.println("ICS must be set");
return false;
}
String username = args[1];
StringBuffer sb = new StringBuffer(1000);
for (int i = 2, n = args.length; i < n; i++) {
sb.append(args[i]).append(" ");
}
String message = sb.toString();
System.out.println("username = " + username);
System.out.println("message = " + message);
UserId recipient = new XmppUserId(username);
try {
XmppCommander.this.ics.getMsgService().sendMessage(recipient, message);
} catch (NetworkException e) {
e.printStackTrace();
}
return true;
}
}
class Logout extends LazyCommand {
public Logout() {
super("logout", "logout", "groupname = projectname (group in roster)");
}
@Override
public boolean handleArguments(String[] args) {
try {
XmppCommander.this.ics.getStatusService().logout();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (NetworkException e) {
e.printStackTrace();
}
return true;
}
}
class ListUsers extends LazyCommand {
public ListUsers() {
super("listUsers", "listUsers", "bly");
}
@Override
public boolean handleArguments(String[] args) {
if (XmppCommander.this.ics == null) {
System.out.println("ICS not set!");
return true;
}
try {
System.out.println("getting users");
Iterable<UserId> users = XmppCommander.this.ics.getUsersService().getUsers();
for (UserId u : users) {
System.out.println("u = " + u);
System.out.println(u + " - capable? "
+ XmppCommander.this.ics.getUsersService().isCapable(u));
}
} catch (NetworkException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
}