1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-26 16:22:06 +01:00

Allows to filter messages by message type and sender or by thread

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@2162 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Gaston Dombiak 2003-11-05 17:46:34 +00:00 committed by gdombiak
parent 7b8c9d1780
commit a063ecd602

View file

@ -54,8 +54,7 @@ package org.jivesoftware.smack;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smack.filter.ThreadFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.*;
/**
* A chat is a series of messages sent between two users. Each chat has
@ -70,7 +69,14 @@ public class Chat {
* A prefix helps to make sure that ID's are unique across mutliple instances.
*/
private static String prefix = StringUtils.randomString(5);
/**
* Value that indicates the message filter type to use. When true, only the messages with
* the Chat's id will be filtered, otherwise the messages of type "chat" and from the Chat´s
* participant will be filtered.
*/
public static boolean FILTER_ONLY_BY_THREAD = true;
/**
* Keeps track of the current increment, which is appended to the prefix to
* forum a unique ID.
@ -100,13 +106,8 @@ public class Chat {
* @param participant the user to chat with.
*/
public Chat(XMPPConnection connection, String participant) {
this.connection = connection;
this.participant = participant;
// Automatically assign the next chat ID.
chatID = nextID();
messageFilter = new ThreadFilter(chatID);
messageCollector = connection.createPacketCollector(messageFilter);
this(connection, participant, nextID());
}
/**
@ -121,7 +122,19 @@ public class Chat {
this.participant = participant;
this.chatID = chatID;
messageFilter = new ThreadFilter(chatID);
if (FILTER_ONLY_BY_THREAD) {
// Filter the messages whose thread equals Chat's id
messageFilter = new ThreadFilter(chatID);
}
else {
// Filter the messages of type "chat" and sender equals Chat's participant
messageFilter =
new OrFilter(
new AndFilter(
new MessageTypeFilter(Message.Type.CHAT),
new FromContainsFilter(participant)),
new ThreadFilter(chatID));
}
messageCollector = connection.createPacketCollector(messageFilter);
}