/**
  * Create new social account.
  *
  * @param socialAccountId
  * @param token
  * @param tokenSecret
  * @param expiresToken
  * @param username
  * @param socialUserProfile
  * @param socialProvider
  * @param userAccount
  * @return
  */
 public SocialAccount createSocialAccount(
     final String socialAccountId,
     final String token,
     final String tokenSecret,
     final String expiresToken,
     final String username,
     final SocialUserProfile socialUserProfile,
     final SocialProvider socialProvider,
     final UserAccount userAccount) {
   final SocialAccount socialAccount = new SocialAccount();
   socialAccount.setAccessToken(token);
   socialAccount.setSecretToken(tokenSecret);
   socialAccount.setAccount(userAccount.getAccount());
   socialAccount.setUserOwner(userAccount);
   socialAccount.setExpires(expiresToken);
   socialAccount.setAccounType(socialProvider);
   socialAccount.setAddedAccount(new Date());
   socialAccount.setVerfied(Boolean.TRUE);
   socialAccount.setSocialAccountName(socialUserProfile.getUsername());
   socialAccount.setType(SocialProvider.getTypeAuth(socialProvider));
   socialAccount.setUpgradedCredentials(new Date());
   socialAccount.setSocialProfileId(socialUserProfile.getId());
   socialAccount.setPublicProfileUrl(socialUserProfile.getProfileUrl());
   socialAccount.setPrictureUrl(socialUserProfile.getProfileImageUrl()); // TODO: repeated
   socialAccount.setProfilePictureUrl(socialUserProfile.getProfileImageUrl());
   socialAccount.setEmail(socialUserProfile.getEmail());
   socialAccount.setProfileThumbnailPictureUrl(socialUserProfile.getProfileImageUrl());
   socialAccount.setRealName(socialUserProfile.getRealName());
   this.saveOrUpdate(socialAccount);
   return socialAccount;
 }
 /**
  * Create new social connection
  *
  * @param provider {@link SocialProvider}
  * @param accessGrant {@link AccessGrant}
  * @param socialAccountId social account id.
  * @param userAccount {@link UserAccount}
  * @param providerProfileUrl provider profile url.
  * @return
  */
 public SocialAccount updateSocialAccountConnection(
     final AccessGrant accessGrant, // OAuth2
     final String socialAccountId,
     final SocialAccount currentSocialAccount) {
   log.debug("Add Connection " + accessGrant);
   log.debug("Add Connection " + socialAccountId);
   // reference to social account.
   // connection.setSocialAccount(socialAccount);
   // store oauth provider permissions.
   if (SocialProvider.getTypeAuth(currentSocialAccount.getAccounType()).equals(TypeAuth.OAUTH1)) {
     // OAuth access token.
     // connection.setAccessToken(token.getValue());
     // OAuth1
     // connection.setSecretToken(token.getSecret());
     // TODO: pending OAUTH1.
     log.debug("pending OAUTH1 - OAuth 1 social connection is not available right now.");
   } else if (SocialProvider.getTypeAuth(currentSocialAccount.getAccounType())
       .equals(TypeAuth.OAUTH2)) {
     // OAuth2
     currentSocialAccount.setAccessToken(accessGrant.getAccessToken());
     currentSocialAccount.setRefreshToken(accessGrant.getRefreshToken());
     currentSocialAccount.setExpires(accessGrant.getExpires());
   }
   Assert.assertNotNull(socialAccountId);
   currentSocialAccount.setSocialProfileId(socialAccountId);
   this.saveOrUpdate(currentSocialAccount); // TODO: this seems not save or update properly.
   log.debug("Added Connection:{" + currentSocialAccount.toString());
   return currentSocialAccount;
 }