/** * Gets the <tt>ContactDetail</tt>s of this <tt>SourceContact</tt> which support a specific * <tt>OperationSet</tt>. * * @param operationSet the <tt>OperationSet</tt> the supporting <tt>ContactDetail</tt>s of which * are to be returned * @return the <tt>ContactDetail</tt>s of this <tt>SourceContact</tt> which support the specified * <tt>operationSet</tt> * @see SourceContact#getContactDetails(Class) */ public List<ContactDetail> getContactDetails(Class<? extends OperationSet> operationSet) { List<ContactDetail> contactDetails = new LinkedList<ContactDetail>(); for (ContactDetail contactDetail : getContactDetails()) { List<Class<? extends OperationSet>> supportedOperationSets = contactDetail.getSupportedOperationSets(); if ((supportedOperationSets != null) && supportedOperationSets.contains(operationSet)) contactDetails.add(contactDetail); } return contactDetails; }
/** * Gets the <tt>contactDetails</tt> to be set on a <tt>SourceContact</tt>. * * @param entry <tt>GoogleContactsEntry</tt> * @return the <tt>contactDetails</tt> to be set on a <tt>SourceContact</tt> */ private List<ContactDetail> getContactDetails(GoogleContactsEntry entry) { List<ContactDetail> ret = new LinkedList<ContactDetail>(); List<String> homeMails = entry.getHomeMails(); List<String> workMails = entry.getWorkMails(); List<String> mobilePhones = entry.getMobilePhones(); List<String> homePhones = entry.getHomePhones(); List<String> workPhones = entry.getWorkPhones(); Map<String, GoogleContactsEntry.IMProtocol> ims = entry.getIMAddresses(); ContactDetail detail = null; for (String mail : homeMails) { List<Class<? extends OperationSet>> supportedOpSets = new ArrayList<Class<? extends OperationSet>>(1); // can be added as contacts supportedOpSets.add(OperationSetPersistentPresence.class); detail = new ContactDetail( mail, ContactDetail.Category.Email, new ContactDetail.SubCategory[] {ContactDetail.SubCategory.Home}); detail.setSupportedOpSets(supportedOpSets); ret.add(detail); } for (String mail : workMails) { List<Class<? extends OperationSet>> supportedOpSets = new ArrayList<Class<? extends OperationSet>>(1); // can be added as contacts supportedOpSets.add(OperationSetPersistentPresence.class); detail = new ContactDetail( mail, ContactDetail.Category.Email, new ContactDetail.SubCategory[] {ContactDetail.SubCategory.Work}); detail.setSupportedOpSets(supportedOpSets); ret.add(detail); } for (String homePhone : homePhones) { List<Class<? extends OperationSet>> supportedOpSets = new ArrayList<Class<? extends OperationSet>>(2); supportedOpSets.add(OperationSetBasicTelephony.class); // can be added as contacts supportedOpSets.add(OperationSetPersistentPresence.class); homePhone = PhoneNumberI18nService.normalize(homePhone); detail = new ContactDetail( homePhone, ContactDetail.Category.Phone, new ContactDetail.SubCategory[] {ContactDetail.SubCategory.Home}); detail.setSupportedOpSets(supportedOpSets); ret.add(detail); } for (String workPhone : workPhones) { List<Class<? extends OperationSet>> supportedOpSets = new ArrayList<Class<? extends OperationSet>>(2); supportedOpSets.add(OperationSetBasicTelephony.class); // can be added as contacts supportedOpSets.add(OperationSetPersistentPresence.class); workPhone = PhoneNumberI18nService.normalize(workPhone); detail = new ContactDetail( workPhone, ContactDetail.Category.Phone, new ContactDetail.SubCategory[] {ContactDetail.SubCategory.Work}); detail.setSupportedOpSets(supportedOpSets); ret.add(detail); } for (String mobilePhone : mobilePhones) { List<Class<? extends OperationSet>> supportedOpSets = new ArrayList<Class<? extends OperationSet>>(2); supportedOpSets.add(OperationSetBasicTelephony.class); // can be added as contacts supportedOpSets.add(OperationSetPersistentPresence.class); mobilePhone = PhoneNumberI18nService.normalize(mobilePhone); detail = new ContactDetail( mobilePhone, ContactDetail.Category.Phone, new ContactDetail.SubCategory[] {ContactDetail.SubCategory.Mobile}); detail.setSupportedOpSets(supportedOpSets); ret.add(detail); } for (Map.Entry<String, GoogleContactsEntry.IMProtocol> im : ims.entrySet()) { if (im.getValue() != GoogleContactsEntry.IMProtocol.OTHER) { ContactDetail.SubCategory imSubCat; switch (im.getValue()) { case AIM: imSubCat = ContactDetail.SubCategory.AIM; break; case ICQ: imSubCat = ContactDetail.SubCategory.ICQ; break; case YAHOO: imSubCat = ContactDetail.SubCategory.Yahoo; break; case JABBER: imSubCat = ContactDetail.SubCategory.Jabber; break; case MSN: imSubCat = ContactDetail.SubCategory.MSN; break; case GOOGLETALK: imSubCat = ContactDetail.SubCategory.GoogleTalk; break; default: imSubCat = null; break; } detail = new ContactDetail( im.getKey(), ContactDetail.Category.InstantMessaging, new ContactDetail.SubCategory[] {imSubCat}); setIMCapabilities(detail, im.getValue()); // can be added as contacts detail.getSupportedOperationSets().add(OperationSetPersistentPresence.class); ret.add(detail); } } return ret; }