From 2a368ae59341cd57e05863bd91e8bd8210bc7cb6 Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Mon, 16 Dec 2013 12:22:12 +0200 Subject: [PATCH] Reverts changes from 160bccf16f2eb0ff8d560c52e4d15f95336a3512 , dfac8a056e02d996eadc435450fbc83bf93b5912 and 79214016b4ed3342707f1b5a0d7dcd10921cec78 . --- .../callhistory/CallHistoryContactSource.java | 93 ++++++++----------- .../googlecontacts/GoogleContactsQuery.java | 18 ---- .../GoogleContactsSourceService.java | 53 ++++++----- .../impl/gui/main/call/CallManager.java | 4 +- .../chat/conference/ChatInviteDialog.java | 18 ++++ .../main/contactlist/CallHistoryFilter.java | 54 +++++------ .../gui/main/contactlist/PresenceFilter.java | 91 +++++++++++------- .../gui/main/contactlist/SearchFilter.java | 89 ++++++++++++++---- .../gui/main/contactlist/TreeContactList.java | 71 +++++--------- .../gui/main/contactlist/UIFilterQuery.java | 6 ++ .../contactsource/MetaContactListSource.java | 53 ++++------- .../ProtocolContactSourceServiceImpl.java | 60 +++++------- .../StringContactSourceServiceImpl.java | 24 ++--- .../gui/utils/InviteContactListFilter.java | 5 +- .../impl/ldap/LdapContactQuery.java | 18 ---- .../impl/ldap/LdapContactSourceService.java | 55 ++++++----- .../muc/ChatRoomContactSourceService.java | 13 ++- .../ServerChatRoomContactSourceService.java | 14 ++- .../impl/muc/ServerChatRoomQuery.java | 1 + .../MacOSXAddrBookContactSourceService.java | 5 +- ...MsOutlookAddrBookContactSourceService.java | 7 +- .../DemuxContactSource.java | 58 +++++++++--- .../PhoneNumberContactSource.java | 13 ++- .../ThunderbirdContactSourceService.java | 15 ++- .../AsyncContactSourceService.java | 13 ++- .../service/contactsource/ContactQuery.java | 5 - .../contactsource/ContactSourceService.java | 23 +++-- .../ExtendedContactSourceService.java | 4 +- 28 files changed, 458 insertions(+), 425 deletions(-) diff --git a/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java b/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java index b18443028..f78ec657a 100644 --- a/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java +++ b/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java @@ -36,36 +36,31 @@ public String getDisplayName() } /** - * Creates query for the given searchString. + * Queries this contact source for the given searchString. * @param queryString the string to search for - * @param listener the listener that receives the found contacts * @return the created query */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, 50); + return queryContactSource(queryString, 50); } /** - * Creates query for the given searchString. + * Queries this contact source for the given searchString. * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ - public ContactQuery createContactQuery(String queryString, int contactCount) + public ContactQuery queryContactSource(String queryString, int contactCount) { if (queryString != null && queryString.length() > 0) - { return new CallHistoryContactQuery( CallHistoryActivator.getCallHistoryService() .findByPeer(queryString, contactCount)); - } else - { return new CallHistoryContactQuery( CallHistoryActivator.getCallHistoryService() .findLast(contactCount)); - } } /** @@ -98,11 +93,6 @@ private class CallHistoryContactQuery * progress. */ private int status = QUERY_IN_PROGRESS; - - /** - * Iterator for the queried contacts. - */ - Iterator recordsIter = null; /** * Creates an instance of CallHistoryContactQuery by specifying @@ -112,7 +102,6 @@ private class CallHistoryContactQuery */ public CallHistoryContactQuery(Collection callRecords) { - recordsIter = callRecords.iterator(); Iterator recordsIter = callRecords.iterator(); while (recordsIter.hasNext() && status != QUERY_CANCELED) @@ -127,45 +116,6 @@ public CallHistoryContactQuery(Collection callRecords) status = QUERY_COMPLETED; } - @Override - public void start() - { - if(callHistoryQuery != null) - { - callHistoryQuery.addQueryListener(new CallHistoryQueryListener() - { - public void callRecordReceived(CallRecordEvent event) - { - if (getStatus() == ContactQuery.QUERY_CANCELED) - return; - - SourceContact contact = new CallHistorySourceContact( - CallHistoryContactSource.this, - event.getCallRecord()); - sourceContacts.add(contact); - fireQueryEvent(contact); - } - - public void queryStatusChanged( - CallHistoryQueryStatusEvent event) - { - status = event.getEventType(); - fireQueryStatusEvent(status); - } - }); - recordsIter = callHistoryQuery.getCallRecords().iterator(); - } - - while (recordsIter.hasNext()) - { - SourceContact contact = new CallHistorySourceContact( - CallHistoryContactSource.this, - recordsIter.next()); - sourceContacts.add(contact); - fireQueryEvent(contact); - } - } - /** * Creates an instance of CallHistoryContactQuery based on the * given callHistoryQuery. @@ -175,7 +125,38 @@ public CallHistoryContactQuery(CallHistoryQuery callHistoryQuery) { this.callHistoryQuery = callHistoryQuery; - + callHistoryQuery.addQueryListener(new CallHistoryQueryListener() + { + public void callRecordReceived(CallRecordEvent event) + { + if (getStatus() == ContactQuery.QUERY_CANCELED) + return; + + SourceContact contact = new CallHistorySourceContact( + CallHistoryContactSource.this, + event.getCallRecord()); + sourceContacts.add(contact); + fireQueryEvent(contact); + } + + public void queryStatusChanged( + CallHistoryQueryStatusEvent event) + { + status = event.getEventType(); + fireQueryStatusEvent(status); + } + }); + + Iterator callRecords + = callHistoryQuery.getCallRecords().iterator(); + + while (callRecords.hasNext()) + { + SourceContact contact = new CallHistorySourceContact( + CallHistoryContactSource.this, + callRecords.next()); + sourceContacts.add(contact); + } } /** diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java index b653b950a..4286a15e1 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java @@ -135,24 +135,6 @@ public void callback(GoogleContactsEntry entry) }); } - @Override - public synchronized void start() - { - boolean hasStarted = false; - - try - { - super.start(); - hasStarted = true; - } - finally - { - if (!hasStarted) - { - getContactSource().removeQuery(this); - } - } - } /** * Gets the contactDetails to be set on a SourceContact. * diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java index 6a15559fa..b0f578c88 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java @@ -126,49 +126,56 @@ public boolean isGoogleTalk() } /** - * Creates query for the given searchPattern. + * Queries this search source for the given searchPattern. * * @param queryPattern the pattern to search for - * @param listener the listener that receives the found contacts * @return the created query */ - public ContactQuery createContactQuery(Pattern queryPattern) + public ContactQuery queryContactSource(Pattern queryPattern) { - return createContactQuery(queryPattern, + return queryContactSource(queryPattern, GoogleContactsQuery.GOOGLECONTACTS_MAX_RESULTS); } /** - * Creates query for the given searchPattern. + * Queries this search source for the given searchPattern. * * @param queryPattern the pattern to search for * @param count maximum number of contact returned * @return the created query */ - public ContactQuery createContactQuery(Pattern queryPattern, int count) + public ContactQuery queryContactSource(Pattern queryPattern, int count) { GoogleContactsQuery query = new GoogleContactsQuery(this, queryPattern, count); - + synchronized (queries) { queries.add(query); } + boolean hasStarted = false; + + try + { + query.start(); + hasStarted = true; + } + finally + { + if (!hasStarted) + { + synchronized (queries) + { + if (queries.remove(query)) + queries.notify(); + } + } + } + return query; } - /** - * Removes query from the list of queries. - * - * @param query the query that will be removed. - */ - public synchronized void removeQuery(ContactQuery query) - { - if (queries.remove(query)) - queries.notify(); - } - /** * Returns the Google Contacts connection. * @@ -324,21 +331,21 @@ public int getType() * @param query the string to search for * @return the created query */ - public ContactQuery createContactQuery(String query) + public ContactQuery queryContactSource(String query) { - return createContactQuery( + return queryContactSource( query, GoogleContactsQuery.GOOGLECONTACTS_MAX_RESULTS); } /** - *Creates query for the given queryString. + * Queries this search source for the given queryString. * * @param query the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ - public ContactQuery createContactQuery(String query, int contactCount) + public ContactQuery queryContactSource(String query, int contactCount) { Pattern pattern = null; try @@ -353,7 +360,7 @@ public ContactQuery createContactQuery(String query, int contactCount) if(pattern != null) { - return createContactQuery(pattern, contactCount); + return queryContactSource(pattern, contactCount); } return null; } diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java index f66880cc3..bd6d21704 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java @@ -4143,13 +4143,11 @@ private static String resolveContactSource(String peerAddress) // use the pattern method of (ExtendedContactSourceService) ContactQuery query = ((ExtendedContactSourceService)contactSourceService) - .createContactQuery(pattern); + .queryContactSource(pattern); resolvers.add( new ResolveAddressToDisplayNameContactQueryListener( query)); - - query.start(); } long startTime = System.currentTimeMillis(); diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java index b8cac1a45..a97ed19b5 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java @@ -117,6 +117,24 @@ public ChatInviteContactListFilter(ContactList sourceContactList) } return true; } + + @Override + protected void addMatching(List sourceContacts) + { + Iterator contactsIter = sourceContacts.iterator(); + + List matchedContacts = new ArrayList(); + while (contactsIter.hasNext()) + { + SourceContact contact = contactsIter.next(); + if(!opSetMUC.isPrivateMessagingContact( + contact.getContactAddress())) + { + matchedContacts.add(contact); + } + } + super.addMatching(matchedContacts); + } } /** diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java index 1fe7332a1..82d93e401 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java @@ -46,14 +46,14 @@ public void applyFilter(FilterQuery filterQuery) // We're in a case of call history contact source. ContactQuery query = contactSource.getContactSourceService() - .createContactQuery("", 50); + .queryContactSource("", 50); - query.start(); - filterQuery.addContactQuery(query); - addMatching(query.getQueryResults(), contactSource); - + // Add first available results. + addMatching(query.getQueryResults(), + contactSource); + // We know that this query should be finished here and we do not // expect any further results from it. filterQuery.removeQuery(query); @@ -98,6 +98,28 @@ public boolean isMatching(UIGroup uiGroup) return (uiGroup instanceof NotificationGroup); } + /** + * Adds matching sourceContacts to the result tree model. + * + * @param sourceContacts the list of SourceContacts to add + * @param uiSource the ExternalContactSource, which contacts + * we're adding + */ + private void addMatching( List sourceContacts, + UIContactSource uiSource) + { + Iterator contactsIter = sourceContacts.iterator(); + + while (contactsIter.hasNext()) + { + GuiActivator.getContactList().addContact( + uiSource.createUIContact(contactsIter.next()), + uiSource.getUIGroup(), + false, + true); + } + } + /** * Adds matching notification contacts to the result tree model. * @@ -125,26 +147,4 @@ private void addMatching(NotificationContactSource notifSource) } } } - - /** - * Adds matching sourceContacts to the result tree model. - * - * @param sourceContacts the list of SourceContacts to add - * @param uiSource the ExternalContactSource, which contacts - * we're adding - */ - private void addMatching( List sourceContacts, - UIContactSource uiSource) - { - Iterator contactsIter = sourceContacts.iterator(); - - while (contactsIter.hasNext()) - { - GuiActivator.getContactList().addContact( - uiSource.createUIContact(contactsIter.next()), - uiSource.getUIGroup(), - false, - true); - } - } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java index b30a517bc..8f9446859 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java @@ -86,6 +86,8 @@ public void applyFilter(FilterQuery filterQuery) // Add this query to the filterQuery. filterQuery.addContactQuery(query); + List contactQueryList = new ArrayList(); + for(int cssType : contactSourcePreferences.keySet()) { Iterator filterSources @@ -105,17 +107,12 @@ public void applyFilter(FilterQuery filterQuery) ContactSourceService sourceService = filterSource.getContactSourceService(); - - ContactQuery contactQuery - = sourceService.createContactQuery(null); - + ContactQuery contactQuery = sourceService.queryContactSource(null); + + contactQueryList.add(contactQuery); + // Add this query to the filterQuery. filterQuery.addContactQuery(contactQuery); - - contactQuery.addContactQueryListener( - GuiActivator.getContactList()); - - contactQuery.start(); } } @@ -123,11 +120,21 @@ public void applyFilter(FilterQuery filterQuery) filterQuery.close(); query.addContactQueryListener(GuiActivator.getContactList()); + int resultCount = 0; addMatching(GuiActivator.getContactListService().getRoot(), query, resultCount); + for(ContactQuery contactQuery : contactQueryList) + { + for(SourceContact contact : contactQuery.getQueryResults()) + { + addSourceContact(contact); + } + contactQuery.addContactQueryListener(GuiActivator.getContactList()); + } + query.fireQueryEvent( query.isCanceled() ? MetaContactQueryStatusEvent.QUERY_CANCELED @@ -283,7 +290,6 @@ private void addMatching( MetaContactGroup metaGroup, if(isMatching(metaContact)) { - resultCount++; if (resultCount <= INITIAL_CONTACT_COUNT) { @@ -311,36 +317,20 @@ private void addMatching( MetaContactGroup metaGroup, UIContact newUIContact; synchronized (metaContact) { - newUIContact - = MetaContactListSource.getUIContact(metaContact); - - if (newUIContact == null) - { - newUIContact = MetaContactListSource - .createUIContact(metaContact); - - GuiActivator.getContactList().addContact( - newUIContact, - uiGroup, - true, - true); - } - + newUIContact = MetaContactListSource + .createUIContact(metaContact); } + GuiActivator.getContactList().addContact( + newUIContact, + uiGroup, + true, + true); + query.setInitialResultCount(resultCount); } else - { - synchronized (metaContact) - { - if (MetaContactListSource.getUIContact(metaContact) - == null) - { - query.fireQueryEvent(metaContact); - } - } - } + query.fireQueryEvent(metaContact); } } @@ -372,4 +362,35 @@ private void addMatching( MetaContactGroup metaGroup, } } } + + /** + * Adds the given sourceContact to the contact list. + * @param sourceContact the SourceContact to add + */ + private void addSourceContact(SourceContact sourceContact) + { + ContactSourceService contactSource + = sourceContact.getContactSource(); + + TreeContactList sourceContactList = GuiActivator.getContactList(); + UIContactSource sourceUI + = sourceContactList .getContactSource(contactSource); + + if (sourceUI != null + // ExtendedContactSourceService has already matched the + // SourceContact over the pattern + && (contactSource instanceof ExtendedContactSourceService) + || isMatching(sourceContact)) + { + boolean isSorted = (sourceContact.getIndex() > -1) ? true : false; + + sourceContactList.addContact( + sourceUI.createUIContact(sourceContact), + sourceUI.getUIGroup(), + isSorted, + true); + } + else + sourceUI.removeUIContact(sourceContact); + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java index e8cc6036b..1a04516f8 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java @@ -104,14 +104,13 @@ public void applyFilter(FilterQuery filterQuery) if (sourceContactList.getDefaultFilter() .equals(TreeContactList.presenceFilter)) { - final MetaContactQuery defaultQuery = new MetaContactQuery(); - + MetaContactQuery defaultQuery + = mclSource.queryMetaContactSource(filterPattern); + defaultQuery.addContactQueryListener(sourceContactList); - + // First add the MetaContactListSource filterQuery.addContactQuery(defaultQuery); - - mclSource.startQuery(defaultQuery, filterPattern); } else if (sourceContactList.getDefaultFilter() .equals(TreeContactList.historyFilter)) @@ -156,7 +155,10 @@ else if (sourceContactList.getDefaultFilter() if (filterQuery.isCanceled()) return; - applyFilter(filterSource, filterQuery); + ContactQuery query = applyFilter(filterSource); + + if (query.getStatus() == ContactQuery.QUERY_IN_PROGRESS) + filterQuery.addContactQuery(query); } // Closes this filter to indicate that we finished adding queries to it. @@ -171,11 +173,9 @@ else if (!sourceContactList.isEmpty()) * * @param contactSource the ExternalContactSource to apply the * filter to - * @param filterQuery the filter query object. * @return the ContactQuery that tracks this filter */ - protected ContactQuery applyFilter(UIContactSource contactSource, - FilterQuery filterQuery) + protected ContactQuery applyFilter(UIContactSource contactSource) { ContactSourceService sourceService = contactSource.getContactSourceService(); @@ -184,19 +184,15 @@ protected ContactQuery applyFilter(UIContactSource contactSource, if (sourceService instanceof ExtendedContactSourceService) contactQuery = ((ExtendedContactSourceService) sourceService) - .createContactQuery(filterPattern); + .queryContactSource(filterPattern); else - contactQuery = sourceService.createContactQuery(filterString); + contactQuery = sourceService.queryContactSource(filterString); + + // Add first available results. + this.addMatching(contactQuery.getQueryResults()); contactQuery.addContactQueryListener(sourceContactList); - - if (contactQuery.getStatus() == ContactQuery.QUERY_IN_PROGRESS) - { - filterQuery.addContactQuery(contactQuery); - } - - contactQuery.start(); - + return contactQuery; } @@ -256,6 +252,19 @@ public void setFilterString(String filter) | Pattern.UNICODE_CASE); } + /** + * Checks if the given contact is matching the current filter. + * A SourceContact would be matching the filter if its display + * name is matching the search string. + * @param contact the ContactListContactDescriptor to check + * @return true to indicate that the given contact is + * matching the current filter, otherwise returns false + */ + private boolean isMatching(SourceContact contact) + { + return isMatching(contact.getDisplayName()); + } + /** * Indicates if the given string matches this filter. * @param text the text to check @@ -269,4 +278,46 @@ private boolean isMatching(String text) return true; } + + /** + * Adds the list of sourceContacts to the contact list. + * @param sourceContacts the list of SourceContacts to add + */ + protected void addMatching(List sourceContacts) + { + Iterator contactsIter = sourceContacts.iterator(); + + while (contactsIter.hasNext()) + addSourceContact(contactsIter.next()); + } + + /** + * Adds the given sourceContact to the contact list. + * @param sourceContact the SourceContact to add + */ + private void addSourceContact(SourceContact sourceContact) + { + ContactSourceService contactSource + = sourceContact.getContactSource(); + + UIContactSource sourceUI + = sourceContactList.getContactSource(contactSource); + + if (sourceUI != null + // ExtendedContactSourceService has already matched the + // SourceContact over the pattern + && (contactSource instanceof ExtendedContactSourceService) + || isMatching(sourceContact)) + { + boolean isSorted = (sourceContact.getIndex() > -1) ? true : false; + + sourceContactList.addContact( + sourceUI.createUIContact(sourceContact), + sourceUI.getUIGroup(), + isSorted, + true); + } + else + sourceUI.removeUIContact(sourceContact); + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java index 7da4d5e6b..157ea094e 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java @@ -324,6 +324,7 @@ public void metaContactReceived(MetaContactQueryEvent event) { MetaContact metaContact = event.getMetaContact(); MetaContactGroup parentGroup = metaContact.getParentMetaContactGroup(); + UIGroup uiGroup = MetaContactListSource .getUIGroup(parentGroup); if (!MetaContactListSource.isRootGroup(parentGroup)) @@ -569,34 +570,23 @@ private void createMetaUIRootGroup() { MetaContactGroup rootGroup = GuiActivator.getContactListService().getRoot(); - UIGroup uiGroup; - synchronized (rootGroup) - { - uiGroup = MetaContactListSource - .getUIGroup(rootGroup); + UIGroup uiGroup = MetaContactListSource + .getUIGroup(rootGroup); - if (uiGroup != null) - return; - + if (uiGroup == null) uiGroup = MetaContactListSource .createUIGroup(rootGroup); - } treeModel.getRoot().sortedAddContactGroup((UIGroupImpl)uiGroup); + Iterator i = rootGroup.getChildContacts(); while (i.hasNext()) { MetaContact contact = i.next(); - UIContact uiContact; - synchronized (contact) - { - uiContact - = MetaContactListSource.getUIContact(contact); - if(uiContact == null) - continue; - removeContact(uiContact); - uiContact = MetaContactListSource.createUIContact(contact); - } + UIContact uiContact + = MetaContactListSource.getUIContact(contact); + removeContact(uiContact); + uiContact = MetaContactListSource.createUIContact(contact); if (currentFilter.isMatching(uiContact)) addContact(uiContact, uiGroup, true, true); else @@ -611,16 +601,11 @@ private void removeMetaUIRootGroup() { MetaContactGroup rootGroup = GuiActivator.getContactListService().getRoot(); - - UIGroup uiGroup; - synchronized (rootGroup) - { - uiGroup = MetaContactListSource - .getUIGroup(rootGroup); + UIGroup uiGroup = MetaContactListSource + .getUIGroup(rootGroup); - if (uiGroup == null) - return; - } + if (uiGroup == null) + return; GroupNode parentNode = treeModel.getRoot(); @@ -628,16 +613,10 @@ private void removeMetaUIRootGroup() while (i.hasNext()) { MetaContact contact = i.next(); - UIContact uiContact; - synchronized (contact) - { - uiContact - = MetaContactListSource.getUIContact(contact); - if(uiContact == null) - continue; - removeContact(uiContact); - uiContact = MetaContactListSource.createUIContact(contact); - } + UIContact uiContact + = MetaContactListSource.getUIContact(contact); + removeContact(uiContact); + uiContact = MetaContactListSource.createUIContact(contact); if (currentFilter.isMatching(uiContact)) addContact(uiContact, treeModel.getRoot().getGroupDescriptor(), true, true); @@ -1957,7 +1936,12 @@ public void setSourceContactImage( String contactString, if (contactSource instanceof ExtendedContactSourceService) { - ContactQueryListener queryListener = new ContactQueryListener() + ContactQuery query = ((ExtendedContactSourceService) + contactSource).queryContactSource(filterPattern); + + loadedQueries.add(query); + + query.addContactQueryListener(new ContactQueryListener() { public void queryStatusChanged(ContactQueryStatusEvent event) {} @@ -2042,14 +2026,7 @@ public void contactChanged(ContactChangedEvent event) if (contactNode != null) nodeChanged(contactNode); } - }; - - ContactQuery query = ((ExtendedContactSourceService) - contactSource).createContactQuery(filterPattern); - - loadedQueries.add(query); - - query.start(); + }); // If the image search has been canceled from one of the // previous sources, we return here. diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java index 6e6c8d717..c18b825c6 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java @@ -114,6 +114,12 @@ public void addContactQuery(Object contactQuery) { ContactQuery externalQuery = (ContactQuery) contactQuery; + List externalResults + = externalQuery.getQueryResults(); + + if (externalResults != null && externalResults.size() > 0) + queryResults = new ArrayList(externalResults); + externalQuery.addContactQueryListener(this); } else if (contactQuery instanceof MetaContactQuery) diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java index cdc47815b..411e90560 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java @@ -185,14 +185,17 @@ public static boolean isRootGroup(MetaContactGroup group) } /** - * Starts the query. - * + * Filters the MetaContactListService to match the given + * filterPattern and stores the result in the given + * treeModel. * @param filterPattern the pattern to filter through - * @param query the query to be started + * @return the created MetaContactQuery corresponding to the + * query this method does */ - public void startQuery(final MetaContactQuery query, - final Pattern filterPattern) + public MetaContactQuery queryMetaContactSource(final Pattern filterPattern) { + final MetaContactQuery query = new MetaContactQuery(); + new Thread() { @Override @@ -212,6 +215,8 @@ public void run() MetaContactQueryStatusEvent.QUERY_CANCELED); } }.start(); + + return query; } /** @@ -258,40 +263,22 @@ public void queryMetaContactSource(Pattern filterPattern, } UIContact newUIContact; - boolean uiContactCreated = false; synchronized (metaContact) { - newUIContact - = MetaContactListSource.getUIContact(metaContact); - - if (newUIContact == null) - { - newUIContact - = MetaContactListSource - .createUIContact(metaContact); - - GuiActivator.getContactList().addContact( - newUIContact, - uiGroup, - true, - true); - } - + newUIContact + = MetaContactListSource.createUIContact(metaContact); } - + + GuiActivator.getContactList().addContact( + newUIContact, + uiGroup, + true, + true); + query.setInitialResultCount(resultCount); } else - { - synchronized (metaContact) - { - if (MetaContactListSource.getUIContact(metaContact) - == null) - { - query.fireQueryEvent(metaContact); - } - } - } + query.fireQueryEvent(metaContact); } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java index b7dde5b39..9471b27db 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java @@ -83,24 +83,24 @@ public String getDisplayName() } /** - * Creates query for the given searchPattern. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @return the created query */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, -1); + return queryContactSource(queryString, -1); } /** - * Creates query for the given searchPattern. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ - public ContactQuery createContactQuery( String queryString, + public ContactQuery queryContactSource( String queryString, int contactCount) { if (queryString == null) @@ -108,24 +108,32 @@ public ContactQuery createContactQuery( String queryString, ProtocolCQuery contactQuery = new ProtocolCQuery(queryString, contactCount); - + 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; } - - /** - * Removes query from the list. - * @param contactQuery the query - */ - public synchronized void removeQuery(ContactQuery contactQuery) - { - if (queries.remove(contactQuery)) - queries.notify(); - } /** * The ProtocolCQuery performing the query for this contact source. @@ -192,26 +200,6 @@ public void run() setStatus(QUERY_COMPLETED); } - @Override - public synchronized void start() - { - boolean queryHasStarted = false; - - try - { - super.start(); - queryHasStarted = true; - } - finally - { - if (!queryHasStarted) - { - getContactSource().removeQuery(this); - } - } - - } - /** * Adds the result for the given group. * diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java index 343e60a3d..bbeaebd36 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java @@ -69,24 +69,24 @@ public String getDisplayName() } /** - * Creates query for the given queryString. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @return the created query */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, -1); + return queryContactSource(queryString, -1); } /** - * Creates query for the given queryString. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ - public ContactQuery createContactQuery( String queryString, + public ContactQuery queryContactSource( String queryString, int contactCount) { return new StringQuery(queryString); @@ -120,6 +120,10 @@ public StringQuery(String queryString) this.queryString = queryString; this.results = new ArrayList(); + results.add(getSourceContact()); + + if (getStatus() != QUERY_CANCELED) + setStatus(QUERY_COMPLETED); } /** @@ -142,16 +146,6 @@ public List getQueryResults() return results; } - @Override - public void start() - { - SourceContact contact = getSourceContact(); - results.add(contact); - - fireContactReceived(contact); - if (getStatus() != QUERY_CANCELED) - setStatus(QUERY_COMPLETED); - } /** * Returns the source contact corresponding to the query string. * diff --git a/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java b/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java index 5aa0edf46..17cc5e34c 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java +++ b/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java @@ -69,7 +69,10 @@ public void applyFilter(FilterQuery filterQuery) if (filterQuery.isCanceled()) return; - applyFilter(filterSource, filterQuery); + ContactQuery query = applyFilter(filterSource); + + if (query.getStatus() == ContactQuery.QUERY_IN_PROGRESS) + filterQuery.addContactQuery(query); } // Closes this filter to indicate that we finished adding queries to it. diff --git a/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java b/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java index 714e9b681..eff5efabb 100644 --- a/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java +++ b/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java @@ -123,24 +123,6 @@ public void ldapEventReceived(LdapEvent evt) } } - @Override - public synchronized void start() - { - boolean hasStarted = false; - - try - { - super.start(); - hasStarted = true; - } - finally - { - if (!hasStarted) - { - getContactSource().removeQuery(this); - } - } - } /** * Gets the contactDetails to be set on a SourceContact. * diff --git a/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java b/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java index 40b005b49..48ec8e0b3 100644 --- a/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java +++ b/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java @@ -49,47 +49,56 @@ public LdapContactSourceService(LdapDirectory ldapDirectory) } /** - * Creates query for the given searchPattern. + * Queries this search source for the given searchPattern. * * @param queryPattern the pattern to search for * @return the created query */ - public ContactQuery createContactQuery(Pattern queryPattern) + public ContactQuery queryContactSource(Pattern queryPattern) { - return createContactQuery(queryPattern, + return queryContactSource(queryPattern, LdapContactQuery.LDAP_MAX_RESULTS); } /** - * Creates query for the given searchPattern. + * Queries this search source for the given searchPattern. * * @param queryPattern the pattern to search for * @param count maximum number of contact returned * @return the created query */ - public ContactQuery createContactQuery(Pattern queryPattern, int count) + public ContactQuery queryContactSource(Pattern queryPattern, int count) { LdapContactQuery query = new LdapContactQuery(this, queryPattern, count); - + synchronized (queries) { queries.add(query); } + boolean hasStarted = false; + + try + { + query.start(); + hasStarted = true; + } + finally + { + if (!hasStarted) + { + synchronized (queries) + { + if (queries.remove(query)) + queries.notify(); + } + } + } + return query; } - /** - * Removes a query from the list. - * @param query the query - */ - public synchronized void removeQuery(ContactQuery query) - { - if (queries.remove(query)) - queries.notify(); - } - /** * Returns a user-friendly string that identifies this contact source. * @return the display name of this contact source @@ -111,25 +120,23 @@ public int getType() } /** - * Creates query for the given query. + * Queries this search source for the given queryString. * @param query the string to search for - * @param listener the listener that receives the found contacts. * @return the created query */ - public ContactQuery createContactQuery(String query) + public ContactQuery queryContactSource(String query) { - return createContactQuery(query, LdapContactQuery.LDAP_MAX_RESULTS); + return queryContactSource(query, LdapContactQuery.LDAP_MAX_RESULTS); } /** - * Creates query for the given query. + * Queries this search source for the given queryString. * * @param query the string to search for * @param contactCount the maximum count of result contacts - * @param listener the listener that receives the found contacts. * @return the created query */ - public ContactQuery createContactQuery(String query, int contactCount) + public ContactQuery queryContactSource(String query, int contactCount) { Pattern pattern = null; try @@ -143,7 +150,7 @@ public ContactQuery createContactQuery(String query, int contactCount) if(pattern != null) { - return createContactQuery(pattern, contactCount); + return queryContactSource(pattern, contactCount); } return null; } diff --git a/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java b/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java index 3856ffdc1..3f718010f 100644 --- a/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java +++ b/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java @@ -37,32 +37,35 @@ public String getDisplayName() } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for * @return the created query */ @Override - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, -1); + return queryContactSource(queryString, -1); } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ @Override - public ContactQuery createContactQuery(String queryString, int contactCount) + public ContactQuery queryContactSource(String queryString, int contactCount) { if (queryString == null) queryString = ""; ChatRoomQuery contactQuery = new ChatRoomQuery(queryString, this); + + contactQuery.start(); + return contactQuery; } diff --git a/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java b/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java index 929b5ceff..d2f19e6ec 100644 --- a/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java +++ b/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java @@ -44,32 +44,36 @@ public String getDisplayName() } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for * @return the created query */ @Override - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, -1); + return queryContactSource(queryString, -1); } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ @Override - public ContactQuery createContactQuery(String queryString, int contactCount) + public ContactQuery queryContactSource(String queryString, int contactCount) { if (queryString == null) queryString = ""; ServerChatRoomQuery contactQuery = new ServerChatRoomQuery(queryString, this, provider); + + contactQuery.start(); + + return contactQuery; } diff --git a/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java b/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java index 78edd8ad1..fd8fc23e0 100644 --- a/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java +++ b/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java @@ -11,6 +11,7 @@ import net.java.sip.communicator.service.contactsource.*; import net.java.sip.communicator.service.muc.*; import net.java.sip.communicator.service.protocol.*; +import net.java.sip.communicator.util.Logger; /** * The ServerChatRoomQuery is a query over the diff --git a/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java b/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java index 2a90e7b84..5ed85639d 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java +++ b/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java @@ -91,7 +91,7 @@ public int getType() } /** - * Creates query that searches for SourceContacts + * Queries this ContactSourceService for SourceContacts * which match a specific query Pattern. * * @param query the Pattern which this @@ -102,13 +102,14 @@ public int getType() * any) will be returned * @see ExtendedContactSourceService#queryContactSource(Pattern) */ - public ContactQuery createContactQuery(Pattern query) + public ContactQuery queryContactSource(Pattern query) { if(latestQuery != null) latestQuery.clear(); latestQuery = new MacOSXAddrBookContactQuery(this, query); + latestQuery.start(); return latestQuery; } diff --git a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java index bcac00386..3335e07ae 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java +++ b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java @@ -161,7 +161,7 @@ private static native void MAPIInitialize( public static native int getOutlookVersion(); /** - * Creates query that searches for SourceContacts + * Queries this ContactSourceService for SourceContacts * which match a specific query Pattern. * * @param query the Pattern which this @@ -172,13 +172,14 @@ private static native void MAPIInitialize( * any) will be returned * @see ExtendedContactSourceService#queryContactSource(Pattern) */ - public ContactQuery createContactQuery(Pattern query) + public ContactQuery queryContactSource(Pattern query) { if(latestQuery != null) latestQuery.clear(); latestQuery = new MsOutlookAddrBookContactQuery(this, query); - + + latestQuery.start(); return latestQuery; } diff --git a/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java b/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java index 96bbbc03b..d50a05b83 100644 --- a/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java +++ b/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java @@ -94,12 +94,12 @@ public String getDisplayName() } /** - * Creates query for the given queryString. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @return the created query */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { if (logger.isDebugEnabled()) logger.debug("Demux query contact source: " + contactSource @@ -112,7 +112,7 @@ public ContactQuery createContactQuery(String queryString) { return new DemuxContactQuery( ((ExtendedContactSourceService) contactSource) - .createContactQuery(Pattern.compile( + .queryContactSource(Pattern.compile( Pattern.quote(queryString), Pattern.MULTILINE | Pattern.CASE_INSENSITIVE @@ -120,20 +120,20 @@ public ContactQuery createContactQuery(String queryString) } else return new DemuxContactQuery( - contactSource.createContactQuery(queryString)); + contactSource.queryContactSource(queryString)); } /** - * Creates query for the given queryString. + * Queries this search source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts * @return the created query */ - public ContactQuery createContactQuery(String queryString, int contactCount) + public ContactQuery queryContactSource(String queryString, int contactCount) { return new DemuxContactQuery( - contactSource.createContactQuery(queryString, contactCount)); + contactSource.queryContactSource(queryString, contactCount)); } /** @@ -175,6 +175,8 @@ public DemuxContactQuery(ContactQuery sourceQuery) this.sourceQuery = sourceQuery; + initQueryResults(); + sourceQuery.addContactQueryListener(this); } @@ -202,6 +204,42 @@ public String getQueryString() return sourceQuery.getQueryString(); } + /** + * Initializes the query results. + */ + public void initQueryResults() + { + List sourceContacts = sourceQuery.getQueryResults(); + + if (sourceContacts == null) + return; + + Iterator contactIter = sourceContacts.iterator(); + while (contactIter.hasNext()) + { + SourceContact sourceContact = contactIter.next(); + + Iterator detailsIter + = sourceContact.getContactDetails().iterator(); + + while (detailsIter.hasNext()) + { + ContactDetail detail = detailsIter.next(); + + if (preferredProtocolProviders == null + || isPreferredContactDetail(detail)) + { + SortedGenericSourceContact + demuxContact + = (SortedGenericSourceContact) + createSourceContact(sourceContact, + detail); + addContact(demuxContact); + } + } + } + } + /** * Returns the list of SourceContacts returned by this query. * @@ -220,12 +258,6 @@ public void cancel() { sourceQuery.cancel(); } - - @Override - public void start() - { - sourceQuery.start(); - } /** * Returns the status of this query. One of the static constants diff --git a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java index e5f4d74a3..3df220605 100644 --- a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java +++ b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java @@ -41,26 +41,24 @@ public String getDisplayName() } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for - * @param listener the listener that receives the found contacts. * @return the created query */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { - return createContactQuery(queryString, -1); + return queryContactSource(queryString, -1); } /** - * Creates query for the given queryString. + * Queries this contact source for the given queryString. * * @param queryString the string to search for * @param contactCount the maximum count of result contacts - * @param listener the listener that receives the found contacts. * @return the created query */ - public ContactQuery createContactQuery( String queryString, + public ContactQuery queryContactSource( String queryString, int contactCount) { if (queryString == null) @@ -69,6 +67,7 @@ public ContactQuery createContactQuery( String queryString, PhoneNumberContactQuery contactQuery = new PhoneNumberContactQuery(this, queryString, contactCount); + contactQuery.start(); return contactQuery; } diff --git a/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java b/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java index 4d78fcc52..27e4fe095 100644 --- a/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java +++ b/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java @@ -141,7 +141,7 @@ public String getDisplayName() * @see net.java.sip.communicator.service.contactsource * .ContactSourceService#queryContactSource(java.lang.String) */ - public ContactQuery createContactQuery(String queryString) + public ContactQuery queryContactSource(String queryString) { Pattern pattern = null; try @@ -157,7 +157,7 @@ public ContactQuery createContactQuery(String queryString) if(pattern != null) { - return createContactQuery(pattern); + return queryContactSource(pattern); } return null; } @@ -169,11 +169,11 @@ public ContactQuery createContactQuery(String queryString) * net.java.sip.communicator.service.contactsource.ContactSourceService# * queryContactSource(java.lang.String, int) */ - public ContactQuery createContactQuery(String queryString, int contactCount) + public ContactQuery queryContactSource(String queryString, int contactCount) { // XXX: The ThunderbirdContactQuery does not tqke a contactCount // argument yet. Thus, call the default queryContactSource function. - return createContactQuery(queryString); + return queryContactSource(queryString); } /* @@ -183,12 +183,9 @@ public ContactQuery createContactQuery(String queryString, int contactCount) * net.java.sip.communicator.service.contactsource.ExtendedContactSourceService * #queryContactSource(java.util.regex.Pattern) */ - public ContactQuery createContactQuery(Pattern queryPattern) + public ContactQuery queryContactSource(Pattern queryPattern) { - ThunderbirdContactQuery query - = new ThunderbirdContactQuery(this, queryPattern); - - return query; + return new ThunderbirdContactQuery(this, queryPattern); } /* diff --git a/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java index d734efb7e..55e5b3f25 100644 --- a/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java +++ b/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java @@ -18,26 +18,25 @@ public abstract class AsyncContactSourceService implements ExtendedContactSourceService { /** - * Creates query that searches for SourceContacts + * Queries this ContactSourceService for SourceContacts * which match a specific query String. * * @param query the String which this ContactSourceService * is being queried for - * @param listener the listener that receives the found contacts. * @return a ContactQuery which represents the query of this * ContactSourceService implementation for the specified * String and via which the matching SourceContacts (if * any) will be returned * @see ContactSourceService#queryContactSource(String) */ - public ContactQuery createContactQuery(String query) + public ContactQuery queryContactSource(String query) { - return createContactQuery( + return queryContactSource( Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL)); } /** - * Creates query that searches for SourceContacts + * Queries this ContactSourceService for SourceContacts * which match a specific query String. * * @param query the String which this ContactSourceService @@ -49,9 +48,9 @@ public ContactQuery createContactQuery(String query) * any) will be returned * @see ContactSourceService#queryContactSource(String) */ - public ContactQuery createContactQuery(String query, int contactCount) + public ContactQuery queryContactSource(String query, int contactCount) { - return createContactQuery( + return queryContactSource( Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL)); } diff --git a/src/net/java/sip/communicator/service/contactsource/ContactQuery.java b/src/net/java/sip/communicator/service/contactsource/ContactQuery.java index 0a630a0d5..8b245c496 100644 --- a/src/net/java/sip/communicator/service/contactsource/ContactQuery.java +++ b/src/net/java/sip/communicator/service/contactsource/ContactQuery.java @@ -57,11 +57,6 @@ public interface ContactQuery * @return the list of SourceContacts returned by this query */ public List getQueryResults(); - - /** - * Starts the query. - */ - public void start(); /** * Cancels this query. diff --git a/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java index ceca03acd..886462db6 100644 --- a/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java +++ b/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java @@ -48,25 +48,24 @@ public interface ContactSourceService * @return the display name of this contact source */ public String getDisplayName(); - + /** - * Creates and returns new ContactQuery instance. - * + * Queries this search source for the given queryString. + * * @param queryString the string to search for - * - * @return new ContactQuery instance. + * @return the created query */ - public ContactQuery createContactQuery(String queryString); - + public ContactQuery queryContactSource(String queryString); + /** - * Creates and returns new ContactQuery instance. - * + * Queries this search source for the given queryString. + * * @param queryString the string to search for * @param contactCount the maximum count of result contacts - * @return new ContactQuery instance. + * @return the created query */ - public ContactQuery createContactQuery(String queryString, - int contactCount); + public ContactQuery queryContactSource(String queryString, + int contactCount); /** * Returns the index of the contact source in the result list. diff --git a/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java index d897765b4..4a06b2cc9 100644 --- a/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java +++ b/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java @@ -29,11 +29,11 @@ public interface ExtendedContactSourceService extends ContactSourceService { /** - * Creates query for the given searchPattern. + * Queries this search source for the given searchPattern. * @param queryPattern the pattern to search for * @return the created query */ - public ContactQuery createContactQuery(Pattern queryPattern); + public ContactQuery queryContactSource(Pattern queryPattern); /** * Returns the global phone number prefix to be used when calling contacts