diff --git a/src/net/java/sip/communicator/service/protocol/OperationSetServerStoredContactInfo.java b/src/net/java/sip/communicator/service/protocol/OperationSetServerStoredContactInfo.java new file mode 100644 index 000000000..a4e260774 --- /dev/null +++ b/src/net/java/sip/communicator/service/protocol/OperationSetServerStoredContactInfo.java @@ -0,0 +1,77 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.service.protocol; + +import java.util.Iterator; +import java.util.*; + +/** + * The User Info Operation set is a means of accessing detailed information of + * Contacts that have made it available on-line (on a protocol server, p2p net + * or others). Examples of such details are your picture, postal or e-mail + * addresses, work, hobbies, interests, and many many others. + *
+ * Various types of details have been defined in the ServerStoredDetails class + * and can be used with the get methods of this interface. Implementors may also + * define their own details by extending or instantiating the + * ServerStoredDetails.GenericDetail class. + *
+ * Note that this is a read only Operation Set, as it only provides access to + * information stored by Contacts themselves, and not notes that you have been + * adding for them.. + *
+ * The OperationSetServerStoredContactInfo only concerns Contact-s other than us. + * For accessing and modifying the information of the user that we are logged in + * with, we need to use the OperationSetServerStoredAccountInfo + * + * @author Emil Ivov + */ +public interface OperationSetServerStoredContactInfo + extends OperationSet +{ + /** + * Returns an iterator over all details that are instances or descendants of + * the specified class. If for example an existing contact has a workaddress + * and an address detail, a call to this method with AddressDetail.class + * would return both of them. + *
+ * @param detailClass one of the detail classes defined in the + * ServerStoredDetails class, indicating the kind of details we're + * interested in. + * @param contact the contact whose details we're interested in. + *
+ * @return a java.util.Iterator over all details that are instances or + * descendants of the specified class. + */ + public Iterator getDetailsAndDescendants(Contact contat, Class detailClass); + + /** + * Returns an iterator over all details that are instances of exactly the + * same class as the one specified. Not that, contrary to the + * getDetailsAndDescendants() method this one would only return details + * that are instances of the specified class and not only its desendants. + * If for example an existing contact has both a workaddress + * and an address detail, a call to this method with AddressDetail.class + * would return only the AddressDetail instance and not the + * WorkAddressDetail instance. + *
+ * @param detailClass one of the detail classes defined in the + * ServerStoredDetails class, indicating the kind of details we're + * interested in. + * @param contact the contact whose details we're interested in. + *
+ * @return a java.util.Iterator over all details of specified class. + */ + public Iterator getDetails(Contact contat, Class detailClass); + + /** + * Returns all details existing for the specified cotact. + * @return a java.util.Iterator over all details existing for the specified + * contact. + */ + public Iterator getAllDetailsForContact(Contact contact); +}