コード例 #1
0
  /**
   * Sets the IM capabilities of a specific <tt>ContactDetail</tt> (e.g. <tt>supportedOpSets</tt>).
   *
   * @param contactDetail the <tt>ContactDetail</tt> to set the capabilities of
   * @param protocol protocol
   * @return <tt>contactDetail</tt>
   */
  private ContactDetail setIMCapabilities(
      ContactDetail contactDetail, GoogleContactsEntry.IMProtocol protocol) {
    List<Class<? extends OperationSet>> supportedOpSets =
        new LinkedList<Class<? extends OperationSet>>();
    Map<Class<? extends OperationSet>, String> preferredProtocols =
        new HashMap<Class<? extends OperationSet>, String>();

    switch (protocol) {
      case GOOGLETALK:
        supportedOpSets.add(OperationSetBasicInstantMessaging.class);
        preferredProtocols.put(OperationSetBasicInstantMessaging.class, ProtocolNames.AIM);
        break;
      case ICQ:
        supportedOpSets.add(OperationSetBasicInstantMessaging.class);
        preferredProtocols.put(OperationSetBasicInstantMessaging.class, ProtocolNames.ICQ);
        break;
      case JABBER:
        supportedOpSets.add(OperationSetBasicInstantMessaging.class);
        preferredProtocols.put(OperationSetBasicInstantMessaging.class, ProtocolNames.JABBER);
        supportedOpSets.add(OperationSetBasicTelephony.class);
        preferredProtocols.put(OperationSetBasicTelephony.class, ProtocolNames.JABBER);
        break;
      case MSN:
        supportedOpSets.add(OperationSetBasicInstantMessaging.class);
        preferredProtocols.put(OperationSetBasicInstantMessaging.class, ProtocolNames.MSN);
        break;
      case YAHOO:
        supportedOpSets.add(OperationSetBasicInstantMessaging.class);
        preferredProtocols.put(OperationSetBasicInstantMessaging.class, ProtocolNames.YAHOO);
        break;
      default:
        break;
    }
    contactDetail.setSupportedOpSets(supportedOpSets);

    if (!preferredProtocols.isEmpty()) contactDetail.setPreferredProtocols(preferredProtocols);

    return contactDetail;
  }