package org.exoplatform.ks.ext.common; import org.exoplatform.container.PortalContainer; import org.exoplatform.ks.common.user.CommonContact; import org.exoplatform.ks.common.user.ContactProvider; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.social.core.identity.model.Identity; import org.exoplatform.social.core.identity.model.Profile; import org.exoplatform.social.core.identity.provider.OrganizationIdentityProvider; import org.exoplatform.social.core.manager.IdentityManager; /** * ContactProvider based on eXo Social profile. * @author exo */ public class SocialContactProvider implements ContactProvider { static private final Log LOG = ExoLogger.getLogger(SocialContactProvider.class); @Override public CommonContact getCommonContact(String userId) { CommonContact contact = new CommonContact(); try { IdentityManager identityM = (IdentityManager) PortalContainer.getInstance().getComponentInstanceOfType(IdentityManager.class); Identity userIdentity = identityM.getIdentity(OrganizationIdentityProvider.NAME, userId, true); Profile profile = userIdentity.getProfile(); if (profile.contains(Profile.EMAIL)) { contact.setEmailAddress(profile.getProperty(Profile.EMAIL).toString()); } if (profile.contains(Profile.FIRST_NAME)) { contact.setFirstName(profile.getProperty(Profile.FIRST_NAME).toString()); } if (profile.contains(Profile.LAST_NAME)) { contact.setLastName(profile.getProperty(Profile.LAST_NAME).toString()); } contact.setAvatarUrl(profile.getAvatarUrl()); if (profile.contains(Profile.GENDER)) { contact.setGender(profile.getProperty(Profile.GENDER).toString()); } if (profile.contains(Profile.CONTACT_PHONES)) { contact.setPhone(profile.getProperty(Profile.CONTACT_PHONES).toString()); } if (profile.contains(Profile.URL)) { contact.setWebSite(profile.getProperty(Profile.URL).toString()); } } catch (Exception e) { if (LOG.isErrorEnabled()) LOG.error(String.format("can not load contact from eXo Social Profile with user [%s]", userId), e); } return contact; } }