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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Frankie B
				Frankie B