Implement remaining group chat responses
This commit is contained in:
parent
d73fb78686
commit
b656a44e24
7 changed files with 452 additions and 6 deletions
8
TODO.md
8
TODO.md
|
@ -12,8 +12,8 @@
|
|||
|
||||
## Server commands
|
||||
|
||||
- [ ] CHAT_JOIN
|
||||
- [ ] CHAT_IN
|
||||
- [ ] CHAT_UPDATE_BUDDY
|
||||
- [x] CHAT_JOIN
|
||||
- [x] CHAT_IN
|
||||
- [x] CHAT_UPDATE_BUDDY
|
||||
- [x] CHAT_INVITE
|
||||
- [ ] CHAT_LEFT
|
||||
- [x] CHAT_LEFT
|
||||
|
|
|
@ -132,6 +132,10 @@ public class JaimConnection implements java.lang.Runnable {
|
|||
TocResponseFactory.addResponseHandler(new GotoTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ConfigTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ChatInviteTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ChatJoinTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ChatBuddyUpdateTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ChatMessageTocResponse());
|
||||
TocResponseFactory.addResponseHandler(new ChatLeftTocResponse());
|
||||
messageQueue = new Vector();
|
||||
myThread = new Thread(this);
|
||||
myThread.setDaemon(true);
|
||||
|
|
110
src/com/wilko/jaim/responses/ChatBuddyUpdateTocResponse.java
Normal file
110
src/com/wilko/jaim/responses/ChatBuddyUpdateTocResponse.java
Normal file
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* (C) 2002 Paul Wilkinson wilko@users.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* BuddyUpdateTocResponse.java
|
||||
*
|
||||
* Created on 5 May 2002, 21:19
|
||||
*/
|
||||
|
||||
package com.wilko.jaim.responses;
|
||||
|
||||
import com.wilko.jaim.JaimEventListener;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* A BuddyUpdateTocResponse is delivered to a {@link JaimEventListener } when a buddy update is received from the TOC server
|
||||
*
|
||||
* @author paulw
|
||||
* @version $Revision: 1.7 $
|
||||
*/
|
||||
public class ChatBuddyUpdateTocResponse extends TocResponse implements TocResponseHandler {
|
||||
|
||||
public static String RESPONSE_TYPE = "CHAT_UPDATE_BUDDY";
|
||||
private String roomID;
|
||||
private String type;
|
||||
private String[] screennames;
|
||||
|
||||
/**
|
||||
* Creates new BuddyUpdateTocResponse
|
||||
*/
|
||||
public ChatBuddyUpdateTocResponse() {
|
||||
roomID = "";
|
||||
type = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* The parseString method is used to populate the fields of this class from a Buddy Update string from the TOC server
|
||||
*
|
||||
* @param str The String containing the buddy update
|
||||
*/
|
||||
public TocResponse parseString(String str) {
|
||||
ChatBuddyUpdateTocResponse tr = new ChatBuddyUpdateTocResponse();
|
||||
tr.doParse(str);
|
||||
return (tr);
|
||||
}
|
||||
|
||||
private void doParse(String str) {
|
||||
cmd = str;
|
||||
StringTokenizer st = new StringTokenizer(str, ":");
|
||||
|
||||
st.nextToken();
|
||||
roomID = st.nextToken();
|
||||
type = st.nextToken();
|
||||
List<String> usersTemp = new ArrayList<String>();
|
||||
while(st.hasMoreElements()) {
|
||||
usersTemp.add(st.nextToken());
|
||||
}
|
||||
screennames = new String[usersTemp.size()];
|
||||
usersTemp.toArray(screennames);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response type of this response. This method is used by the response dispatcher within JaimConnection
|
||||
*
|
||||
* @return The response type
|
||||
*/
|
||||
public String getResponseType() {
|
||||
return RESPONSE_TYPE;
|
||||
}
|
||||
|
||||
public String getRoomID() {
|
||||
return roomID;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return Objects.equals(type, "T") ? "joined" : "left";
|
||||
}
|
||||
|
||||
public String[] getScreennames() {
|
||||
return screennames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this response handler can handle the specified response.
|
||||
*
|
||||
* @param Response - the response string from TOC. This is the part of the response before the first ':'
|
||||
* @return true if the response can be handled
|
||||
*/
|
||||
public boolean canHandle(String Response) {
|
||||
return (Response.equalsIgnoreCase(RESPONSE_TYPE));
|
||||
}
|
||||
|
||||
}
|
100
src/com/wilko/jaim/responses/ChatJoinTocResponse.java
Normal file
100
src/com/wilko/jaim/responses/ChatJoinTocResponse.java
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* (C) 2002 Paul Wilkinson wilko@users.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* BuddyUpdateTocResponse.java
|
||||
*
|
||||
* Created on 5 May 2002, 21:19
|
||||
*/
|
||||
|
||||
package com.wilko.jaim.responses;
|
||||
|
||||
import com.wilko.jaim.JaimEventListener;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* A BuddyUpdateTocResponse is delivered to a {@link JaimEventListener } when a buddy update is received from the TOC server
|
||||
*
|
||||
* @author paulw
|
||||
* @version $Revision: 1.7 $
|
||||
*/
|
||||
public class ChatJoinTocResponse extends TocResponse implements TocResponseHandler {
|
||||
|
||||
public static String RESPONSE_TYPE = "CHAT_JOIN";
|
||||
private String roomID;
|
||||
private String roomName;
|
||||
|
||||
/**
|
||||
* Creates new BuddyUpdateTocResponse
|
||||
*/
|
||||
public ChatJoinTocResponse() {
|
||||
roomID = "";
|
||||
roomName = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* The parseString method is used to populate the fields of this class from a Buddy Update string from the TOC server
|
||||
*
|
||||
* @param str The String containing the buddy update
|
||||
*/
|
||||
public TocResponse parseString(String str) {
|
||||
ChatJoinTocResponse tr = new ChatJoinTocResponse();
|
||||
tr.doParse(str);
|
||||
return (tr);
|
||||
}
|
||||
|
||||
private void doParse(String str) {
|
||||
cmd = str;
|
||||
StringTokenizer st = new StringTokenizer(str, ":");
|
||||
|
||||
st.nextToken();
|
||||
roomID = st.nextToken();
|
||||
roomName = st.nextToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response type of this response. This method is used by the response dispatcher within JaimConnection
|
||||
*
|
||||
* @return The response type
|
||||
*/
|
||||
public String getResponseType() {
|
||||
return RESPONSE_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public String getRoomID() {
|
||||
return roomID;
|
||||
}
|
||||
public String getRoomName() {
|
||||
return roomName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if this response handler can handle the specified response.
|
||||
*
|
||||
* @param Response - the response string from TOC. This is the part of the response before the first ':'
|
||||
* @return true if the response can be handled
|
||||
*/
|
||||
public boolean canHandle(String Response) {
|
||||
return (Response.equalsIgnoreCase(RESPONSE_TYPE));
|
||||
}
|
||||
|
||||
}
|
94
src/com/wilko/jaim/responses/ChatLeftTocResponse.java
Normal file
94
src/com/wilko/jaim/responses/ChatLeftTocResponse.java
Normal file
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
* (C) 2002 Paul Wilkinson wilko@users.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* BuddyUpdateTocResponse.java
|
||||
*
|
||||
* Created on 5 May 2002, 21:19
|
||||
*/
|
||||
|
||||
package com.wilko.jaim.responses;
|
||||
|
||||
import com.wilko.jaim.JaimEventListener;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* A BuddyUpdateTocResponse is delivered to a {@link JaimEventListener } when a buddy update is received from the TOC server
|
||||
*
|
||||
* @author paulw
|
||||
* @version $Revision: 1.7 $
|
||||
*/
|
||||
public class ChatLeftTocResponse extends TocResponse implements TocResponseHandler {
|
||||
|
||||
public static String RESPONSE_TYPE = "CHAT_LEFT";
|
||||
private String roomID;
|
||||
|
||||
/**
|
||||
* Creates new BuddyUpdateTocResponse
|
||||
*/
|
||||
public ChatLeftTocResponse() {
|
||||
roomID = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* The parseString method is used to populate the fields of this class from a Buddy Update string from the TOC server
|
||||
*
|
||||
* @param str The String containing the buddy update
|
||||
*/
|
||||
public TocResponse parseString(String str) {
|
||||
ChatLeftTocResponse tr = new ChatLeftTocResponse();
|
||||
tr.doParse(str);
|
||||
return (tr);
|
||||
}
|
||||
|
||||
private void doParse(String str) {
|
||||
cmd = str;
|
||||
StringTokenizer st = new StringTokenizer(str, ":");
|
||||
|
||||
st.nextToken();
|
||||
roomID = st.nextToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response type of this response. This method is used by the response dispatcher within JaimConnection
|
||||
*
|
||||
* @return The response type
|
||||
*/
|
||||
public String getResponseType() {
|
||||
return RESPONSE_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public String getRoomID() {
|
||||
return roomID;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if this response handler can handle the specified response.
|
||||
*
|
||||
* @param Response - the response string from TOC. This is the part of the response before the first ':'
|
||||
* @return true if the response can be handled
|
||||
*/
|
||||
public boolean canHandle(String Response) {
|
||||
return (Response.equalsIgnoreCase(RESPONSE_TYPE));
|
||||
}
|
||||
|
||||
}
|
122
src/com/wilko/jaim/responses/ChatMessageTocResponse.java
Normal file
122
src/com/wilko/jaim/responses/ChatMessageTocResponse.java
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* (C) 2002 Paul Wilkinson wilko@users.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* TocIMResponse.java
|
||||
*
|
||||
* Created on 4 May 2002, 14:38
|
||||
*/
|
||||
|
||||
package com.wilko.jaim.responses;
|
||||
|
||||
import com.wilko.jaim.JaimEventListener;
|
||||
import com.wilko.jaim.Utils;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* This response is delivered to a {@link JaimEventListener } when an instant message is received
|
||||
*
|
||||
* @author paulw
|
||||
* @version $Revision: 1.6 $
|
||||
*/
|
||||
public class ChatMessageTocResponse extends TocResponse implements TocResponseHandler {
|
||||
|
||||
public static final String RESPONSE_TYPE = "CHAT_IN";
|
||||
String roomID;
|
||||
String screenname;
|
||||
Boolean whisper;
|
||||
String message;
|
||||
|
||||
/**
|
||||
* Creates new TocIMResponse
|
||||
*/
|
||||
public ChatMessageTocResponse() {
|
||||
roomID = "";
|
||||
screenname = "";
|
||||
whisper = false;
|
||||
message = "";
|
||||
}
|
||||
|
||||
public String getRoomID() {
|
||||
return (roomID);
|
||||
}
|
||||
|
||||
public String getScreenname() {
|
||||
return (screenname);
|
||||
}
|
||||
|
||||
public Boolean getWhisper() {
|
||||
return whisper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Obtain the message
|
||||
*
|
||||
* @return The message
|
||||
* @see Utils#stripHTML
|
||||
*/
|
||||
public String getMessage() {
|
||||
return (message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse an incoming IM response string
|
||||
*
|
||||
* @param str The string to be parsed
|
||||
*/
|
||||
public TocResponse parseString(String str) {
|
||||
ChatMessageTocResponse tr = new ChatMessageTocResponse();
|
||||
tr.doParse(str);
|
||||
return (tr);
|
||||
}
|
||||
|
||||
private void doParse(String str) {
|
||||
cmd = str;
|
||||
StringTokenizer st = new StringTokenizer(str, ":");
|
||||
|
||||
st.nextToken();
|
||||
roomID = st.nextToken();
|
||||
screenname = st.nextToken();
|
||||
whisper = (Objects.equals(st.nextToken(), "T"));
|
||||
message = st.nextToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain the response type for response dispatching purposes
|
||||
*
|
||||
* @return The response type
|
||||
*/
|
||||
public String getResponseType() {
|
||||
return (RESPONSE_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this response handler can handle the specified response.
|
||||
*
|
||||
* @param Response - the response string from TOC. This is the part of the response before the first ':'
|
||||
* @return true if the response can be handled
|
||||
*/
|
||||
public boolean canHandle(String Response) {
|
||||
return (Response.equalsIgnoreCase(RESPONSE_TYPE));
|
||||
}
|
||||
|
||||
}
|
|
@ -135,7 +135,13 @@ public class JaimTest implements JaimEventListener {
|
|||
} else if (responseType.equalsIgnoreCase(ConnectionLostTocResponse.RESPONSE_TYPE)) {
|
||||
System.out.println("Connection lost!");
|
||||
} else if (responseType.equalsIgnoreCase(ChatInviteTocResponse.RESPONSE_TYPE)) {
|
||||
recieveChatInvite((ChatInviteTocResponse) tr);
|
||||
receiveChatInvite((ChatInviteTocResponse) tr);
|
||||
} else if (responseType.equalsIgnoreCase(ChatBuddyUpdateTocResponse.RESPONSE_TYPE)) {
|
||||
receiveChatBuddyUpdate((ChatBuddyUpdateTocResponse) tr);
|
||||
} else if (responseType.equalsIgnoreCase(ChatJoinTocResponse.RESPONSE_TYPE)) {
|
||||
receiveChatJoin((ChatJoinTocResponse) tr);
|
||||
} else if (responseType.equalsIgnoreCase(ChatMessageTocResponse.RESPONSE_TYPE)) {
|
||||
receiveChatMessage((ChatMessageTocResponse) tr);
|
||||
} else {
|
||||
System.out.println("Unknown TOC Response:" + tr);
|
||||
}
|
||||
|
@ -156,6 +162,10 @@ public class JaimTest implements JaimEventListener {
|
|||
}
|
||||
}
|
||||
|
||||
private void receiveChatMessage(ChatMessageTocResponse message) {
|
||||
System.out.println(message.getScreenname() + "@" + message.getRoomID() + "->" + Utils.stripHTML(message.getMessage()));
|
||||
}
|
||||
|
||||
private void receiveBuddyUpdate(BuddyUpdateTocResponse bu) {
|
||||
System.out.println("Buddy update: " + bu.getBuddy());
|
||||
if (bu.isOnline()) {
|
||||
|
@ -209,7 +219,7 @@ public class JaimTest implements JaimEventListener {
|
|||
}
|
||||
}
|
||||
|
||||
private void recieveChatInvite(ChatInviteTocResponse inviteTocResponse) {
|
||||
private void receiveChatInvite(ChatInviteTocResponse inviteTocResponse) {
|
||||
c.joinChat(inviteTocResponse.getRoomName());
|
||||
}
|
||||
|
||||
|
@ -241,5 +251,11 @@ public class JaimTest implements JaimEventListener {
|
|||
}
|
||||
}
|
||||
|
||||
private void receiveChatBuddyUpdate(ChatBuddyUpdateTocResponse tr) {
|
||||
System.out.println("Buddies " + (tr.getType()) + " " + tr.getRoomID() + ": " + String.join(", ", tr.getScreennames()));
|
||||
}
|
||||
|
||||
private void receiveChatJoin(ChatJoinTocResponse tr) {
|
||||
System.out.println("Joined " + tr.getRoomName());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue