Example usage for com.liferay.portal.kernel.model User getContact

List of usage examples for com.liferay.portal.kernel.model User getContact

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.model User getContact.

Prototype

public Contact getContact() throws com.liferay.portal.kernel.exception.PortalException;

Source Link

Document

Returns the user's associated contact.

Usage

From source file:com.bemis.portal.migration.customer.service.impl.CustomerMigrationLocalServiceImpl.java

License:Open Source License

/**
 * Creates a Liferay User by using Customer User data. If a matching Liferay User
 * was found, that User is updated instead.
 *
 * Note: An update will not occur in the event of a change to both their
 * email address and screen name. A new user will be created in this case
 * instead.//from  w  w w  .  j a  v  a  2  s  .co m
 *
 * @param customerUser the customer user to be migrated.
 * @return the Liferay User created or updated.
 * @throws PortalException
 */
@Override
public User addUser(CustomerUser customerUser, long companyId) {
    User liferayUser = fetchLiferayUser(customerUser, companyId);

    String email = customerUser.getEmail();
    String firstName = customerUser.getFirstName();
    String lastName = customerUser.getLastName();
    String screenName = customerUser.getScreenName();
    boolean male = customerUser.isMale();
    long[] userOrganizationIdArray = getUserOrganizationsIds(email);

    if (liferayUser != null) {
        if (_log.isDebugEnabled()) {
            _log.debug(">>> Found Liferay user with screen name: " + screenName + ". Updating user instead.");
        }

        liferayUser.setEmailAddress(email);
        liferayUser.setFirstName(firstName);
        liferayUser.setLastName(lastName);
        liferayUser.setScreenName(screenName);

        _userLocalService.updateUser(liferayUser);

        Contact contact;

        try {
            contact = liferayUser.getContact();

            contact.setEmailAddress(email);
            contact.setFirstName(firstName);
            contact.setLastName(lastName);
            contact.setMale(male);

            _contactLocalService.updateContact(contact);
        } catch (PortalException pe) {
            pe.printStackTrace();
        }

        for (Long organizationId : userOrganizationIdArray) {
            userLocalService.addOrganizationUser(organizationId, liferayUser);
        }

        return liferayUser;
    }

    _calendar.setTime(new Date());

    int birthDay = _calendar.get(Calendar.DATE);
    int birthMonth = _calendar.get(Calendar.MONTH);
    int birthYear = _calendar.get(Calendar.YEAR);

    try {
        liferayUser = _userLocalService.addUser(0, _bemisPortalService.getDefaultCompanyId(), false, "test",
                "test", false, screenName, customerUser.getEmail(), 0, null, LocaleUtil.getDefault(), firstName,
                null, lastName, 0, 0, male, birthMonth, birthDay, birthYear, null, null,
                userOrganizationIdArray, null, null, false, null);
    } catch (PortalException pe) {
        _log.error(">>> Error updating user: " + email, pe);
    }

    return liferayUser;
}

From source file:com.gleo.groupphoto.web.portlet.action.ViewUserDetailsActionMVCRenderCommand.java

License:Open Source License

@Override
public String render(RenderRequest renderRequest, RenderResponse renderResponse) {

    long userId = ParamUtil.getLong(renderRequest, "userId");
    ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);

    String organizationsHTML = StringPool.BLANK;
    Contact contact = null;/*from www.j a v  a2 s.co  m*/
    List<Organization> organizations = null;
    User user = null;
    Company company = null;
    Locale locale = themeDisplay.getLocale();

    String birthday = null;
    String jobTitle = null;
    String gender = null;
    String comments = null;

    // Get User
    if (userId > 0) {

        try {
            user = UserLocalServiceUtil.getUser(userId);
            company = CompanyLocalServiceUtil.getCompany(user.getCompanyId());

        } catch (PortalException e) {
            LOGGER.error(e);
        }

        if (user != null) {
            // Get Contact
            try {
                contact = user.getContact();

            } catch (PortalException e) {
                LOGGER.error(e);
            }

            // Get Organizations
            organizations = OrganizationLocalServiceUtil.getUserOrganizations(user.getUserId());
            StringBundler organizationsHTMLBundler = new StringBundler(organizations.size() * 2);

            if (!organizations.isEmpty()) {
                organizationsHTMLBundler.append(organizations.get(0).getName());
            }

            for (int i = 1; i < organizations.size(); i++) {
                organizationsHTMLBundler.append(", ");
                organizationsHTMLBundler.append(organizations.get(i).getName());
            }
            organizationsHTML = organizationsHTMLBundler.toString();

            // Fields
            setFields(renderRequest, contact, user, company, locale, birthday, gender, jobTitle);

            // Contact
            String className = Contact.class.getName();
            long classPK = contact.getContactId();

            List<Address> personalAddresses = Collections.emptyList();
            List<Address> organizationAddresses = new ArrayList<Address>();
            List<EmailAddress> emailAddresses = Collections.emptyList();
            List<Website> websites = Collections.emptyList();
            List<Phone> personalPhones = Collections.emptyList();
            List<Phone> organizationPhones = new ArrayList<Phone>();

            if (classPK > 0) {
                try {
                    personalAddresses = AddressServiceUtil.getAddresses(className, classPK);
                } catch (PortalException pe) {
                    LOGGER.error(pe);
                }

                try {
                    emailAddresses = EmailAddressServiceUtil.getEmailAddresses(className, classPK);
                } catch (PortalException pe) {
                    LOGGER.error(pe);
                }

                try {
                    websites = WebsiteServiceUtil.getWebsites(className, classPK);
                } catch (PortalException pe) {
                    LOGGER.error(pe);
                }
                try {
                    personalPhones = PhoneServiceUtil.getPhones(className, classPK);
                } catch (PortalException pe) {
                    LOGGER.error(pe);
                }

            }

            for (int i = 0; i < organizations.size(); i++) {
                try {
                    organizationAddresses.addAll(AddressServiceUtil.getAddresses(Organization.class.getName(),
                            organizations.get(i).getOrganizationId()));
                } catch (Exception e) {
                }
            }

            for (int i = 0; i < organizations.size(); i++) {
                try {
                    organizationPhones.addAll(PhoneServiceUtil.getPhones(Organization.class.getName(),
                            organizations.get(i).getOrganizationId()));
                } catch (Exception e) {
                }
            }

            // Comments
            comments = user.getComments();

            LOGGER.info("comments" + comments);
            if (comments != null && !comments.trim().equals(StringPool.BLANK)) {
                comments = StringUtil.replace(BBCodeTranslatorUtil.getHTML(user.getComments()),
                        ThemeConstants.TOKEN_THEME_IMAGES_PATH + EMOTICONS,
                        themeDisplay.getPathThemeImages() + EMOTICONS);
            }

            renderRequest.setAttribute("organizationAddresses", organizationAddresses);
            renderRequest.setAttribute("personalAddresses", personalAddresses);
            renderRequest.setAttribute("emailAddresses", emailAddresses);
            renderRequest.setAttribute("organizationAddresses", organizationAddresses);
            renderRequest.setAttribute("websites", websites);
            renderRequest.setAttribute("personalPhones", personalPhones);
            renderRequest.setAttribute("organizationPhones", organizationPhones);

        }
    }

    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("userId =" + userId);
        LOGGER.debug("birthday =" + birthday);
        LOGGER.debug("gender =" + gender);
        LOGGER.debug("jobTitle =" + jobTitle);
        LOGGER.debug("comments =" + comments);
    }

    renderRequest.setAttribute("organizations", organizations);
    renderRequest.setAttribute("organizationsHTML", organizationsHTML);
    renderRequest.setAttribute("user2", user);
    renderRequest.setAttribute("contact", contact);
    renderRequest.setAttribute("languageUtil", LanguageUtil.getLanguage());
    renderRequest.setAttribute("locale", locale);
    renderRequest.setAttribute("comments", comments);
    renderRequest.setAttribute("htmlUtil", HtmlUtil.getHtml());

    return "/userdetails/jsp/user_details.jsp";
}

From source file:com.liferay.contacts.web.internal.portlet.ContactsCenterPortlet.java

License:Open Source License

protected void updateProfile(ActionRequest actionRequest) throws Exception {
    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    User user = themeDisplay.getUser();

    boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");

    byte[] portraitBytes = null;

    long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");

    if (!deleteLogo && (fileEntryId > 0)) {
        FileEntry fileEntry = dlAppLocalService.getFileEntry(fileEntryId);

        try (InputStream inputStream = fileEntry.getContentStream()) {
            portraitBytes = FileUtil.getBytes(inputStream);
        }//ww  w.j  a va2  s.  c  om
    }

    String comments = BeanParamUtil.getString(user, actionRequest, "comments");
    String emailAddress = BeanParamUtil.getString(user, actionRequest, "emailAddress");
    String firstName = BeanParamUtil.getString(user, actionRequest, "firstName");
    String jobTitle = BeanParamUtil.getString(user, actionRequest, "jobTitle");
    String lastName = BeanParamUtil.getString(user, actionRequest, "lastName");
    String middleName = BeanParamUtil.getString(user, actionRequest, "middleName");
    String screenName = BeanParamUtil.getString(user, actionRequest, "screenName");

    Contact contact = user.getContact();

    String facebookSn = BeanParamUtil.getString(contact, actionRequest, "facebookSn");
    String jabberSn = BeanParamUtil.getString(contact, actionRequest, "jabberSn");
    String skypeSn = BeanParamUtil.getString(contact, actionRequest, "skypeSn");
    String smsSn = BeanParamUtil.getString(contact, actionRequest, "smsSn");
    String twitterSn = BeanParamUtil.getString(contact, actionRequest, "twitterSn");

    Calendar cal = CalendarFactoryUtil.getCalendar();

    cal.setTime(user.getBirthday());

    int birthdayDay = cal.get(Calendar.DATE);
    int birthdayMonth = cal.get(Calendar.MONTH);
    int birthdayYear = cal.get(Calendar.YEAR);

    List<AnnouncementsDelivery> announcementsDeliveries = announcementsDeliveryLocalService
            .getUserDeliveries(user.getUserId());

    userService.updateUser(user.getUserId(), user.getPasswordUnencrypted(), user.getPasswordUnencrypted(),
            user.getPasswordUnencrypted(), user.getPasswordReset(), user.getReminderQueryQuestion(),
            user.getReminderQueryAnswer(), screenName, emailAddress, user.getFacebookId(), user.getOpenId(),
            !deleteLogo, portraitBytes, user.getLanguageId(), user.getTimeZoneId(), user.getGreeting(),
            comments, firstName, middleName, lastName, contact.getPrefixId(), contact.getSuffixId(),
            user.isMale(), birthdayMonth, birthdayDay, birthdayYear, smsSn, facebookSn, jabberSn, skypeSn,
            twitterSn, jobTitle, user.getGroupIds(), user.getOrganizationIds(), user.getRoleIds(), null,
            user.getUserGroupIds(), user.getAddresses(), null, user.getPhones(), user.getWebsites(),
            announcementsDeliveries, new ServiceContext());
}

From source file:com.liferay.login.authentication.facebook.connect.web.internal.portlet.action.FacebookConnectAction.java

License:Open Source License

protected User updateUser(User user, JSONObject jsonObject) throws Exception {

    long facebookId = jsonObject.getLong("id");
    String emailAddress = jsonObject.getString("email");
    String firstName = jsonObject.getString("first_name");
    String lastName = jsonObject.getString("last_name");
    boolean male = Objects.equals(jsonObject.getString("gender"), "male");

    if ((facebookId == user.getFacebookId()) && emailAddress.equals(user.getEmailAddress())
            && firstName.equals(user.getFirstName()) && lastName.equals(user.getLastName())
            && (male == user.isMale())) {

        return user;
    }// ww  w .j  a v  a  2 s .co m

    Contact contact = user.getContact();

    Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

    birthdayCal.setTime(contact.getBirthday());

    int birthdayMonth = birthdayCal.get(Calendar.MONTH);
    int birthdayDay = birthdayCal.get(Calendar.DAY_OF_MONTH);
    int birthdayYear = birthdayCal.get(Calendar.YEAR);

    long[] groupIds = null;
    long[] organizationIds = null;
    long[] roleIds = null;
    List<UserGroupRole> userGroupRoles = null;
    long[] userGroupIds = null;

    ServiceContext serviceContext = new ServiceContext();

    if (!StringUtil.equalsIgnoreCase(emailAddress, user.getEmailAddress())) {

        _userLocalService.updateEmailAddress(user.getUserId(), StringPool.BLANK, emailAddress, emailAddress);
    }

    _userLocalService.updateEmailAddressVerified(user.getUserId(), true);

    return _userLocalService.updateUser(user.getUserId(), StringPool.BLANK, StringPool.BLANK, StringPool.BLANK,
            false, user.getReminderQueryQuestion(), user.getReminderQueryAnswer(), user.getScreenName(),
            emailAddress, facebookId, user.getOpenId(), true, null, user.getLanguageId(), user.getTimeZoneId(),
            user.getGreeting(), user.getComments(), firstName, user.getMiddleName(), lastName,
            contact.getPrefixId(), contact.getSuffixId(), male, birthdayMonth, birthdayDay, birthdayYear,
            contact.getSmsSn(), contact.getFacebookSn(), contact.getJabberSn(), contact.getSkypeSn(),
            contact.getTwitterSn(), contact.getJobTitle(), groupIds, organizationIds, roleIds, userGroupRoles,
            userGroupIds, serviceContext);
}

From source file:com.liferay.osb.scv.connector.internal.model.SCVContact.java

License:Open Source License

@Override
public List<Contact> getModels(User user) throws Exception {
    List<Contact> list = new ArrayList<>();

    list.add(user.getContact());

    return list;/*from   w  ww. j  a v  a 2s .c om*/
}

From source file:com.liferay.users.admin.internal.search.UserIndexer.java

License:Open Source License

@Override
protected void doReindex(User user) throws Exception {
    if (user.isDefaultUser()) {
        return;//from w w w  .  j a va 2  s.  c o m
    }

    Document document = getDocument(user);

    indexWriterHelper.updateDocument(getSearchEngineId(), user.getCompanyId(), document, isCommitImmediately());

    Indexer<Contact> indexer = IndexerRegistryUtil.nullSafeGetIndexer(Contact.class);

    try {
        indexer.reindex(user.getContact());
    } catch (NoSuchContactException nsce) {

        // This is a temporary workaround for LPS-46825

        if (_log.isDebugEnabled()) {
            _log.debug(nsce, nsce);
        }
    }
}

From source file:com.liferay.users.admin.web.internal.portlet.action.EditUserMVCActionCommand.java

License:Open Source License

protected Object[] updateUser(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    User user = portal.getSelectedUser(actionRequest);

    Contact contact = user.getContact();

    String oldPassword = AdminUtil.getUpdateUserPassword(actionRequest, user.getUserId());

    String oldScreenName = user.getScreenName();
    String screenName = BeanParamUtil.getString(user, actionRequest, "screenName");
    String oldEmailAddress = user.getEmailAddress();
    String emailAddress = BeanParamUtil.getString(user, actionRequest, "emailAddress");
    long facebookId = user.getFacebookId();

    boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");

    byte[] portraitBytes = null;

    long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");

    if (fileEntryId > 0) {
        FileEntry fileEntry = _dlAppLocalService.getFileEntry(fileEntryId);

        portraitBytes = FileUtil.getBytes(fileEntry.getContentStream());
    }/*  www. j a v  a 2 s. c  o m*/

    String languageId = BeanParamUtil.getString(user, actionRequest, "languageId");
    String firstName = BeanParamUtil.getString(user, actionRequest, "firstName");
    String middleName = BeanParamUtil.getString(user, actionRequest, "middleName");
    String lastName = BeanParamUtil.getString(user, actionRequest, "lastName");
    long prefixId = BeanParamUtil.getInteger(contact, actionRequest, "prefixId");
    long suffixId = BeanParamUtil.getInteger(contact, actionRequest, "suffixId");
    boolean male = BeanParamUtil.getBoolean(user, actionRequest, "male", true);

    Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

    birthdayCal.setTime(contact.getBirthday());

    int birthdayMonth = ParamUtil.getInteger(actionRequest, "birthdayMonth", birthdayCal.get(Calendar.MONTH));
    int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay", birthdayCal.get(Calendar.DATE));
    int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear", birthdayCal.get(Calendar.YEAR));

    String comments = BeanParamUtil.getString(user, actionRequest, "comments");
    String jobTitle = BeanParamUtil.getString(user, actionRequest, "jobTitle");

    ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

    user = _userService.updateUser(user.getUserId(), oldPassword, null, null, user.getPasswordReset(), null,
            null, screenName, emailAddress, facebookId, user.getOpenId(), !deleteLogo, portraitBytes,
            languageId, user.getTimeZoneId(), user.getGreeting(), comments, firstName, middleName, lastName,
            prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, null, null, null, null, null,
            jobTitle, null, null, null, null, null, null, null, null, null, null, serviceContext);

    if (oldScreenName.equals(user.getScreenName())) {
        oldScreenName = StringPool.BLANK;
    }

    boolean updateLanguageId = false;

    if (user.getUserId() == themeDisplay.getUserId()) {

        // Reset the locale

        HttpServletRequest request = portal
                .getOriginalServletRequest(portal.getHttpServletRequest(actionRequest));
        HttpServletResponse response = portal.getHttpServletResponse(actionResponse);
        HttpSession session = request.getSession();

        session.removeAttribute(Globals.LOCALE_KEY);

        Locale locale = LocaleUtil.fromLanguageId(languageId);

        LanguageUtil.updateCookie(request, response, locale);

        // Clear cached portlet responses

        PortletSession portletSession = actionRequest.getPortletSession();

        InvokerPortletImpl.clearResponses(portletSession);

        updateLanguageId = true;
    }

    Company company = portal.getCompany(actionRequest);

    if (company.isStrangersVerify() && !StringUtil.equalsIgnoreCase(oldEmailAddress, emailAddress)) {

        SessionMessages.add(actionRequest, "verificationEmailSent");
    }

    return new Object[] { user, oldScreenName, updateLanguageId };
}

From source file:com.liferay.users.admin.web.internal.portlet.action.EditUserOrganizationsMVCActionCommand.java

License:Open Source License

@Override
protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    try {/*from   w w w.  ja  v  a  2s  . co m*/
        User user = _portal.getSelectedUser(actionRequest);

        Contact contact = user.getContact();

        Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

        birthdayCal.setTime(user.getBirthday());

        long[] organizationIds = UsersAdminUtil.getOrganizationIds(actionRequest);

        ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

        _userService.updateUser(user.getUserId(), user.getPassword(), null, null, user.getPasswordReset(), null,
                null, user.getScreenName(), user.getEmailAddress(), user.getFacebookId(), user.getOpenId(),
                user.getLanguageId(), user.getTimeZoneId(), user.getGreeting(), user.getComments(),
                user.getFirstName(), user.getMiddleName(), user.getLastName(), contact.getPrefixId(),
                contact.getSuffixId(), user.isMale(), birthdayCal.get(Calendar.MONTH),
                birthdayCal.get(Calendar.DATE), birthdayCal.get(Calendar.YEAR), contact.getSmsSn(),
                contact.getFacebookSn(), contact.getJabberSn(), contact.getSkypeSn(), contact.getTwitterSn(),
                user.getJobTitle(), user.getGroupIds(), organizationIds, user.getRoleIds(),
                _usersAdmin.getUserGroupRoles(actionRequest), user.getUserGroupIds(), serviceContext);
    } catch (Exception e) {
        if (e instanceof NoSuchUserException || e instanceof PrincipalException) {

            SessionErrors.add(actionRequest, e.getClass());

            actionResponse.setRenderParameter("mvcPath", "/error.jsp");
        } else if (e instanceof MembershipPolicyException) {
            SessionErrors.add(actionRequest, e.getClass(), e);

            actionResponse.setRenderParameter("mvcPath", "/edit_user.jsp");
            actionResponse.setRenderParameter("screenNavigationCategoryKey",
                    UserFormConstants.CATEGORY_KEY_GENERAL);
            actionResponse.setRenderParameter("screenNavigationEntryKey",
                    UserFormConstants.ENTRY_KEY_ORGANIZATIONS);
        } else {
            throw e;
        }
    }
}

From source file:com.liferay.users.admin.web.internal.portlet.action.UpdateMembershipsMVCActionCommand.java

License:Open Source License

@Override
protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    try {/*from   w  ww  .j  a v  a  2s  .com*/
        User user = _portal.getSelectedUser(actionRequest);

        Contact contact = user.getContact();

        Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

        birthdayCal.setTime(user.getBirthday());

        long[] groupIds = _usersAdmin.getGroupIds(actionRequest);
        long[] userGroupIds = _usersAdmin.getUserGroupIds(actionRequest);

        ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

        _userService.updateUser(user.getUserId(), user.getPassword(), null, null, user.getPasswordReset(), null,
                null, user.getScreenName(), user.getEmailAddress(), user.getFacebookId(), user.getOpenId(),
                user.getLanguageId(), user.getTimeZoneId(), user.getGreeting(), user.getComments(),
                user.getFirstName(), user.getMiddleName(), user.getLastName(), contact.getPrefixId(),
                contact.getSuffixId(), user.isMale(), birthdayCal.get(Calendar.MONTH),
                birthdayCal.get(Calendar.DATE), birthdayCal.get(Calendar.YEAR), contact.getSmsSn(),
                contact.getFacebookSn(), contact.getJabberSn(), contact.getSkypeSn(), contact.getTwitterSn(),
                user.getJobTitle(), groupIds, user.getOrganizationIds(), null, null, userGroupIds,
                serviceContext);
    } catch (Exception e) {
        if (e instanceof NoSuchUserException || e instanceof PrincipalException) {

            SessionErrors.add(actionRequest, e.getClass());

            actionResponse.setRenderParameter("mvcPath", "/error.jsp");
        } else if (e instanceof MembershipPolicyException) {
            SessionErrors.add(actionRequest, e.getClass(), e);

            actionResponse.setRenderParameter("mvcPath", "/edit_user.jsp");
            actionResponse.setRenderParameter("screenNavigationCategoryKey",
                    UserFormConstants.CATEGORY_KEY_GENERAL);
            actionResponse.setRenderParameter("screenNavigationEntryKey",
                    UserFormConstants.ENTRY_KEY_MEMBERSHIPS);
        } else {
            throw e;
        }
    }
}

From source file:com.liferay.users.admin.web.internal.portlet.action.UpdateUserRolesMVCActionCommand.java

License:Open Source License

@Override
protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    try {/*from ww w  . j  a  va 2  s.c  o m*/
        User user = _portal.getSelectedUser(actionRequest);

        Contact contact = user.getContact();

        Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

        birthdayCal.setTime(user.getBirthday());

        long[] roleIds = _usersAdmin.getRoleIds(actionRequest);

        List<UserGroupRole> userGroupRoles = null;

        String addGroupRolesGroupIds = actionRequest.getParameter("addGroupRolesGroupIds");
        String addGroupRolesRoleIds = actionRequest.getParameter("addGroupRolesRoleIds");
        String deleteGroupRolesGroupIds = actionRequest.getParameter("deleteGroupRolesGroupIds");
        String deleteGroupRolesRoleIds = actionRequest.getParameter("deleteGroupRolesRoleIds");

        if ((addGroupRolesGroupIds != null) || (addGroupRolesRoleIds != null)
                || (deleteGroupRolesGroupIds != null) || (deleteGroupRolesRoleIds != null)) {

            userGroupRoles = _usersAdmin.getUserGroupRoles(actionRequest);
        }

        ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

        _userService.updateUser(user.getUserId(), user.getPassword(), null, null, user.getPasswordReset(), null,
                null, user.getScreenName(), user.getEmailAddress(), user.getFacebookId(), user.getOpenId(),
                user.getLanguageId(), user.getTimeZoneId(), user.getGreeting(), user.getComments(),
                user.getFirstName(), user.getMiddleName(), user.getLastName(), contact.getPrefixId(),
                contact.getSuffixId(), user.isMale(), birthdayCal.get(Calendar.MONTH),
                birthdayCal.get(Calendar.DATE), birthdayCal.get(Calendar.YEAR), contact.getSmsSn(),
                contact.getFacebookSn(), contact.getJabberSn(), contact.getSkypeSn(), contact.getTwitterSn(),
                user.getJobTitle(), user.getGroupIds(), user.getOrganizationIds(), roleIds, userGroupRoles,
                user.getUserGroupIds(), serviceContext);
    } catch (Exception e) {
        if (e instanceof NoSuchUserException || e instanceof PrincipalException) {

            SessionErrors.add(actionRequest, e.getClass());

            actionResponse.setRenderParameter("mvcPath", "/error.jsp");
        } else if (e instanceof MembershipPolicyException) {
            SessionErrors.add(actionRequest, e.getClass(), e);

            actionResponse.setRenderParameter("mvcPath", "/edit_user.jsp");
            actionResponse.setRenderParameter("screenNavigationCategoryKey",
                    UserFormConstants.CATEGORY_KEY_GENERAL);
            actionResponse.setRenderParameter("screenNavigationEntryKey", UserFormConstants.ENTRY_KEY_ROLES);
        } else {
            throw e;
        }
    }
}