mirror of https://github.com/sipwise/jitsi.git
parent
ab08cd7a00
commit
721f22def0
@ -0,0 +1,241 @@
|
||||
/*
|
||||
* 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.msghistory;
|
||||
|
||||
import net.java.sip.communicator.service.contactsource.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.regex.*;
|
||||
|
||||
/**
|
||||
* The query which creates source contacts and uses the values stored in
|
||||
* <tt>MessageSourceService</tt>.
|
||||
*
|
||||
* @author Damian Minkov
|
||||
*/
|
||||
public class MessageSourceContactQuery
|
||||
extends AsyncContactQuery<MessageSourceService>
|
||||
{
|
||||
/**
|
||||
* Constructs.
|
||||
*
|
||||
* @param messageSourceService
|
||||
*/
|
||||
MessageSourceContactQuery(MessageSourceService messageSourceService)
|
||||
{
|
||||
super(messageSourceService,
|
||||
Pattern.compile("",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.LITERAL),
|
||||
false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates <tt>MessageSourceContact</tt> for all currently cached
|
||||
* recent messages in the <tt>MessageSourceService</tt>.
|
||||
*/
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
getContactSource().updateRecentMessages();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates capabilities from <tt>EventObject</tt> for the found
|
||||
* <tt>MessageSourceContact</tt> equals to the <tt>Object</tt> supplied.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
* @param srcObj used to search for <tt>MessageSourceContact</tt>
|
||||
* @param eventObj the values used for the update
|
||||
*/
|
||||
public void updateCapabilities(Object srcObj, EventObject eventObj)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
((MessageSourceContact)msc).initDetails(eventObj);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates capabilities from <tt>Contact</tt> for the found
|
||||
* <tt>MessageSourceContact</tt> equals to the <tt>Object</tt> supplied.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
* @param srcObj used to search for <tt>MessageSourceContact</tt>
|
||||
* @param contact the values used for the update
|
||||
*/
|
||||
public void updateCapabilities(Object srcObj, Contact contact)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
((MessageSourceContact)msc).initDetails(false, contact);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the <tt>ContactQueryListener</tt>s registered with this
|
||||
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
|
||||
* changed.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
*
|
||||
* @param srcObj the <tt>Object</tt> representing a recent message
|
||||
* which has been changed and corresponding <tt>SourceContact</tt>
|
||||
* which the registered <tt>ContactQueryListener</tt>s are to be
|
||||
* notified about
|
||||
*/
|
||||
public void updateContact(Object srcObj, EventObject eventObject)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
((MessageSourceContact)msc).update(eventObject);
|
||||
|
||||
super.fireContactChanged(msc);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the <tt>ContactQueryListener</tt>s registered with this
|
||||
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
|
||||
* changed.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
*
|
||||
* @param srcObj the <tt>Object</tt> representing a recent message
|
||||
* which has been changed and corresponding <tt>SourceContact</tt>
|
||||
* which the registered <tt>ContactQueryListener</tt>s are to be
|
||||
* notified about
|
||||
*/
|
||||
public void fireContactChanged(Object srcObj)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
super.fireContactChanged(msc);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the <tt>ContactQueryListener</tt>s registered with this
|
||||
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
|
||||
* changed.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
*
|
||||
* @param srcObj the <tt>Object</tt> representing a recent message
|
||||
* which has been changed and corresponding <tt>SourceContact</tt>
|
||||
* which the registered <tt>ContactQueryListener</tt>s are to be
|
||||
* notified about
|
||||
*/
|
||||
public void updateContactStatus(Object srcObj,
|
||||
PresenceStatus status)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
((MessageSourceContact)msc).setStatus(status);
|
||||
|
||||
super.fireContactChanged(msc);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the <tt>ContactQueryListener</tt>s registered with this
|
||||
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
|
||||
* changed.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
*
|
||||
* @param srcObj the <tt>Object</tt> representing a recent message
|
||||
* which has been changed and corresponding <tt>SourceContact</tt>
|
||||
* which the registered <tt>ContactQueryListener</tt>s are to be
|
||||
* notified about
|
||||
*/
|
||||
public void updateContactDisplayName(Object srcObj,
|
||||
String newName)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc)
|
||||
&& msc instanceof MessageSourceContact)
|
||||
{
|
||||
((MessageSourceContact)msc).setDisplayName(newName);
|
||||
|
||||
super.fireContactChanged(msc);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the <tt>ContactQueryListener</tt>s registered with this
|
||||
* <tt>ContactQuery</tt> that a <tt>SourceContact</tt> has been
|
||||
* removed.
|
||||
* Note that Object may not be <tt>MessageSourceContact</tt>, but its
|
||||
* equals method can return true for message source contact instances.
|
||||
*
|
||||
* @param srcObj representing the message and its corresponding
|
||||
* <tt>SourceContact</tt> which has been removed and which the registered
|
||||
* <tt>ContactQueryListener</tt>s are to be notified about
|
||||
*/
|
||||
public void fireContactRemoved(Object srcObj)
|
||||
{
|
||||
for(SourceContact msc : getQueryResults())
|
||||
{
|
||||
if(srcObj.equals(msc))
|
||||
{
|
||||
super.fireContactRemoved(msc);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a specific <tt>SourceContact</tt> to the list of
|
||||
* <tt>SourceContact</tt>s to be returned by this <tt>ContactQuery</tt> in
|
||||
* response to {@link #getQueryResults()}.
|
||||
*
|
||||
* @param sourceContact the <tt>SourceContact</tt> to be added to the
|
||||
* <tt>queryResults</tt> of this <tt>ContactQuery</tt>
|
||||
* @return <tt>true</tt> if the <tt>queryResults</tt> of this
|
||||
* <tt>ContactQuery</tt> has changed in response to the call
|
||||
*/
|
||||
public boolean addQueryResult(SourceContact sourceContact)
|
||||
{
|
||||
return super.addQueryResult(sourceContact, false);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue