blob: 1aaa253c1aeb941163687b5e68bc76d613578412 (
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
116
117
118
|
/*
* 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.plugin.addrbook;
import net.java.sip.communicator.service.contactsource.*;
import java.util.*;
import java.util.regex.*;
/**
* Abstract query that keep tracks of the source contacts
* that were created.
*
* @author Damian Minkov
*/
public abstract class AbstractAddrBookContactQuery<T extends ContactSourceService>
extends AsyncContactQuery<T>
{
/**
* A list of all source contact results.
*/
protected final List<SourceContact> sourceContacts
= new LinkedList<SourceContact>();
/**
* Initializes a new <tt>AbstractAddrBookContactQuery</tt> which is to perform
* a specific <tt>query</tt> in the Address Book on behalf of a
* specific <tt>ContactSourceService</tt>.
*
* @param contactSource the <tt>ContactSourceService</tt> which is to
* perform the new <tt>ContactQuery</tt> instance
* @param query the <tt>Pattern</tt> for which <tt>contactSource</tt> is
* being queried
**/
public AbstractAddrBookContactQuery(
T contactSource,
Pattern query)
{
super(contactSource, query);
}
/**
* Notifies the <tt>ContactQueryListener</tt>s registered with this
* <tt>ContactQuery</tt> that a new <tt>SourceContact</tt> has been
* received.
*
* @param contact the <tt>SourceContact</tt> which has been received and
* which the registered <tt>ContactQueryListener</tt>s are to be notified
* about
*/
@Override
protected void fireContactReceived(SourceContact contact)
{
synchronized (sourceContacts)
{
sourceContacts.add(contact);
}
super.fireContactReceived(contact);
}
/**
* Notifies the <tt>ContactQueryListener</tt>s registered with this
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
* removed.
*
* @param contact the <tt>SourceContact</tt> which has been removed and
* which the registered <tt>ContactQueryListener</tt>s are to be notified
* about
*/
@Override
protected void fireContactRemoved(SourceContact contact)
{
synchronized (sourceContacts)
{
sourceContacts.remove(contact);
}
super.fireContactRemoved(contact);
}
/**
* Clear.
*/
public void clear()
{
synchronized (sourceContacts)
{
sourceContacts.clear();
}
}
/**
* Searches for source contact with the specified id.
* @param id the id to search for
* @return the source contact found or null.
*/
protected SourceContact findSourceContactByID(String id)
{
synchronized(sourceContacts)
{
for(SourceContact sc : sourceContacts)
{
Object scID = sc.getData(SourceContact.DATA_ID);
if(id.equals(scID))
return sc;
}
}
// not found
return null;
}
}
|