blob: 24b0870d88c8f4bd80fd9de15b75c4306fb91bb3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.muc;
import java.util.*;
import net.java.sip.communicator.service.contactsource.*;
/**
* Contact source service for chat rooms.
*
* @author Hristo Terezov
*/
public class ChatRoomContactSourceService
implements ContactSourceService
{
/**
* The <tt>List</tt> of <tt>ChatRoomQuery</tt> instances
* which have been started and haven't stopped yet.
*/
private final List<ChatRoomQuery> queries
= new LinkedList<ChatRoomQuery>();
/**
* Returns the type of this contact source.
*
* @return the type of this contact source
*/
public int getType()
{
return PRESENCE_TYPE;
}
/**
* Returns a user-friendly string that identifies this contact source.
*
* @return the display name of this contact source
*/
public String getDisplayName()
{
return MUCActivator.getResources().getI18NString(
"service.gui.CHAT_ROOMS");
}
/**
* Queries this contact source for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
@Override
public ContactQuery queryContactSource(String queryString)
{
return queryContactSource(queryString, -1);
}
/**
* Queries this contact source for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
@Override
public ContactQuery queryContactSource(String queryString, int contactCount)
{
if (queryString == null)
queryString = "";
ChatRoomQuery contactQuery
= new ChatRoomQuery(queryString, this);
synchronized (queries)
{
queries.add(contactQuery);
}
boolean queryHasStarted = false;
try
{
contactQuery.start();
queryHasStarted = true;
}
finally
{
if (!queryHasStarted)
{
synchronized (queries)
{
if (queries.remove(contactQuery))
queries.notify();
}
}
}
return contactQuery;
}
public synchronized List<ChatRoomQuery> getQueries()
{
return queries;
}
/**
* Returns the index of the contact source in the result list.
*
* @return the index of the contact source in the result list
*/
@Override
public int getIndex()
{
return -1;
}
}
|