|
|
|
|
@ -143,6 +143,9 @@ private class DemuxContactQuery
|
|
|
|
|
*/
|
|
|
|
|
private final ContactQuery sourceQuery;
|
|
|
|
|
|
|
|
|
|
private TreeSet<SourceContact> demuxContacts
|
|
|
|
|
= new TreeSet<SourceContact>();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Creates an instance of <tt>DemuxContactQuery</tt>.
|
|
|
|
|
*
|
|
|
|
|
@ -154,6 +157,8 @@ public DemuxContactQuery(ContactQuery sourceQuery)
|
|
|
|
|
|
|
|
|
|
this.sourceQuery = sourceQuery;
|
|
|
|
|
|
|
|
|
|
initQueryResults();
|
|
|
|
|
|
|
|
|
|
sourceQuery.addContactQueryListener(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -181,19 +186,14 @@ public String getQueryString()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the list of <tt>SourceContact</tt>s returned by this query.
|
|
|
|
|
*
|
|
|
|
|
* @return the list of <tt>SourceContact</tt>s returned by this query
|
|
|
|
|
* Initializes the query results.
|
|
|
|
|
*/
|
|
|
|
|
public List<SourceContact> getQueryResults()
|
|
|
|
|
public void initQueryResults()
|
|
|
|
|
{
|
|
|
|
|
List<SourceContact> sourceContacts = sourceQuery.getQueryResults();
|
|
|
|
|
|
|
|
|
|
if (sourceContacts == null)
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
List<SourceContact> newSourceContacts
|
|
|
|
|
= new ArrayList<SourceContact>();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
Iterator<SourceContact> contactIter = sourceContacts.iterator();
|
|
|
|
|
while (contactIter.hasNext())
|
|
|
|
|
@ -210,14 +210,25 @@ public List<SourceContact> getQueryResults()
|
|
|
|
|
if (preferredProtocolProviders == null
|
|
|
|
|
|| isPreferredContactDetail(detail))
|
|
|
|
|
{
|
|
|
|
|
newSourceContacts.add(
|
|
|
|
|
createSourceContact(sourceContact,
|
|
|
|
|
detail));
|
|
|
|
|
SortedGenericSourceContact
|
|
|
|
|
demuxContact
|
|
|
|
|
= (SortedGenericSourceContact)
|
|
|
|
|
createSourceContact(sourceContact,
|
|
|
|
|
detail);
|
|
|
|
|
demuxContacts.add(demuxContact);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return newSourceContacts;
|
|
|
|
|
/**
|
|
|
|
|
* Returns the list of <tt>SourceContact</tt>s returned by this query.
|
|
|
|
|
*
|
|
|
|
|
* @return the list of <tt>SourceContact</tt>s returned by this query
|
|
|
|
|
*/
|
|
|
|
|
public List<SourceContact> getQueryResults()
|
|
|
|
|
{
|
|
|
|
|
return new LinkedList<SourceContact>(demuxContacts);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void cancel()
|
|
|
|
|
@ -256,8 +267,12 @@ public void contactReceived(ContactReceivedEvent event)
|
|
|
|
|
if (preferredProtocolProviders == null
|
|
|
|
|
|| isPreferredContactDetail(detail))
|
|
|
|
|
{
|
|
|
|
|
fireContactReceived(
|
|
|
|
|
createSourceContact(sourceContact, detail));
|
|
|
|
|
SourceContact demuxContact
|
|
|
|
|
= createSourceContact(sourceContact, detail);
|
|
|
|
|
|
|
|
|
|
demuxContacts.add(demuxContact);
|
|
|
|
|
|
|
|
|
|
fireContactReceived(demuxContact);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -277,10 +292,22 @@ private SourceContact createSourceContact( SourceContact sourceContact,
|
|
|
|
|
|
|
|
|
|
contactDetails.add(contactDetail);
|
|
|
|
|
|
|
|
|
|
GenericSourceContact genericContact
|
|
|
|
|
= new GenericSourceContact( DemuxContactSource.this,
|
|
|
|
|
sourceContact.getDisplayName(),
|
|
|
|
|
contactDetails);
|
|
|
|
|
GenericSourceContact genericContact;
|
|
|
|
|
|
|
|
|
|
if (sourceContact instanceof SortedGenericSourceContact)
|
|
|
|
|
{
|
|
|
|
|
genericContact
|
|
|
|
|
= new SortedGenericSourceContact(
|
|
|
|
|
this,
|
|
|
|
|
DemuxContactSource.this,
|
|
|
|
|
sourceContact.getDisplayName(),
|
|
|
|
|
contactDetails);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
genericContact
|
|
|
|
|
= new GenericSourceContact( DemuxContactSource.this,
|
|
|
|
|
sourceContact.getDisplayName(),
|
|
|
|
|
contactDetails);
|
|
|
|
|
|
|
|
|
|
genericContact.setDisplayDetails(contactDetail.getDetail());
|
|
|
|
|
genericContact.setPresenceStatus(sourceContact.getPresenceStatus());
|
|
|
|
|
|