private UserEx getUserFromTwitterLinkage(
      PartakeConnection con, IPartakeDAOs daos, UserTwitterLink twitterLinkage)
      throws DAOException, TwitterException {
    String userId = twitterLinkage.getUserId();
    User user = daos.getUserAccess().find(con, userId);
    if (user != null) return new UserEx(user, twitterLinkage);

    // If no user was associated to UserTwitterLink, we create a new user.
    User newUser =
        new User(
            userId,
            twitterLinkage.getScreenName(),
            twitterLinkage.getProfileImageURL(),
            TimeUtil.getCurrentDateTime(),
            null);
    daos.getUserAccess().put(con, newUser);
    newUser.freeze();

    return new UserEx(newUser, twitterLinkage);
  }
  private UserTwitterLink updateTwitterLinkage(
      PartakeConnection con, IPartakeDAOs daos, UserTwitterLink twitterLinkageEmbryo)
      throws DAOException, TwitterException {
    UserTwitterLink twitterLinkage =
        daos.getTwitterLinkageAccess().findByTwitterId(con, twitterLinkageEmbryo.getTwitterId());

    if (twitterLinkage == null || twitterLinkage.getUserId() == null) {
      String userId = daos.getUserAccess().getFreshId(con);
      UUID id = daos.getTwitterLinkageAccess().getFreshId(con);
      twitterLinkageEmbryo.setId(id);
      twitterLinkageEmbryo.setUserId(userId);
    } else {
      twitterLinkageEmbryo.setId(twitterLinkage.getId());
      twitterLinkageEmbryo.setUserId(twitterLinkage.getUserId());
    }

    daos.getTwitterLinkageAccess().put(con, twitterLinkageEmbryo);
    return twitterLinkageEmbryo;
  }