/** * 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; }