/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.portlet;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.Address;
import com.liferay.portal.kernel.model.Country;
import com.liferay.portal.kernel.model.ListType;
import com.liferay.portal.kernel.model.Phone;
import com.liferay.portal.kernel.model.Region;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.util.StringPool;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @author Brian Wing Shun Chan
*/
public class UserAttributes {
// Mandatory Liferay attributes
public static final String LIFERAY_COMPANY_ID = "liferay.company.id";
public static final String LIFERAY_USER_ID = "liferay.user.id";
public static final String USER_NAME_FULL = "user.name.full";
// See page 249 of the JSR 286 spec
public static final String USER_BDATE = "user.bdate";
public static final String USER_BDATE_DAY = "user.bdate.ymd.day";
public static final String USER_BDATE_FRACTIONSECOND =
"user.bdate.fractionsecond";
public static final String USER_BDATE_HOUR = "user.bdate.hms.hour";
public static final String USER_BDATE_MINUTE = "user.bdate.hms.minute";
public static final String USER_BDATE_MONTH = "user.bdate.ymd.month";
public static final String USER_BDATE_SECOND = "user.bdate.hms.second";
public static final String USER_BDATE_TIMEZONE = "user.bdate.timezone";
public static final String USER_BDATE_YEAR = "user.bdate.ymd.year";
public static final String USER_GENDER = "user.gender";
public static final String USER_EMPLOYER = "user.employer";
public static final String USER_DEPARTMENT = "user.department";
public static final String USER_JOBTITLE = "user.jobtitle";
public static final String USER_NAME_PREFIX = "user.name.prefix";
public static final String USER_NAME_GIVEN = "user.name.given";
public static final String USER_NAME_FAMILY = "user.name.family";
public static final String USER_NAME_MIDDLE = "user.name.middle";
public static final String USER_NAME_SUFFIX = "user.name.suffix";
public static final String USER_NAME_NICKNAME = "user.name.nickName";
public static final String USER_HOME_INFO_POSTAL_NAME =
"user.home-info.postal.name";
public static final String USER_HOME_INFO_POSTAL_STREET =
"user.home-info.postal.street";
public static final String USER_HOME_INFO_POSTAL_CITY =
"user.home-info.postal.city";
public static final String USER_HOME_INFO_POSTAL_STATEPROV =
"user.home-info.postal.stateprov";
public static final String USER_HOME_INFO_POSTAL_POSTALCODE =
"user.home-info.postal.postalcode";
public static final String USER_HOME_INFO_POSTAL_COUNTRY =
"user.home-info.postal.country";
public static final String USER_HOME_INFO_POSTAL_ORGANIZATION =
"user.home-info.postal.organization";
public static final String USER_HOME_INFO_TELECOM_TELEPHONE_INTCODE =
"user.home-info.telecom.telephone.intcode";
public static final String USER_HOME_INFO_TELECOM_TELEPHONE_LOCCODE =
"user.home-info.telecom.telephone.loccode";
public static final String USER_HOME_INFO_TELECOM_TELEPHONE_NUMBER =
"user.home-info.telecom.telephone.number";
public static final String USER_HOME_INFO_TELECOM_TELEPHONE_EXT =
"user.home-info.telecom.telephone.ext";
public static final String USER_HOME_INFO_TELECOM_TELEPHONE_COMMENT =
"user.home-info.telecom.telephone.comment";
public static final String USER_HOME_INFO_TELECOM_FAX_INTCODE =
"user.home-info.telecom.fax.intcode";
public static final String USER_HOME_INFO_TELECOM_FAX_LOCCODE =
"user.home-info.telecom.fax.loccode";
public static final String USER_HOME_INFO_TELECOM_FAX_NUMBER =
"user.home-info.telecom.fax.number";
public static final String USER_HOME_INFO_TELECOM_FAX_EXT =
"user.home-info.telecom.fax.ext";
public static final String USER_HOME_INFO_TELECOM_FAX_COMMENT =
"user.home-info.telecom.fax.comment";
public static final String USER_HOME_INFO_TELECOM_MOBILE_INTCODE =
"user.home-info.telecom.mobile.intcode";
public static final String USER_HOME_INFO_TELECOM_MOBILE_LOCCODE =
"user.home-info.telecom.mobile.loccode";
public static final String USER_HOME_INFO_TELECOM_MOBILE_NUMBER =
"user.home-info.telecom.mobile.number";
public static final String USER_HOME_INFO_TELECOM_MOBILE_EXT =
"user.home-info.telecom.mobile.ext";
public static final String USER_HOME_INFO_TELECOM_MOBILE_COMMENT =
"user.home-info.telecom.mobile.comment";
public static final String USER_HOME_INFO_TELECOM_PAGER_INTCODE =
"user.home-info.telecom.pager.intcode";
public static final String USER_HOME_INFO_TELECOM_PAGER_LOCCODE =
"user.home-info.telecom.pager.loccode";
public static final String USER_HOME_INFO_TELECOM_PAGER_NUMBER =
"user.home-info.telecom.pager.number";
public static final String USER_HOME_INFO_TELECOM_PAGER_EXT =
"user.home-info.telecom.pager.ext";
public static final String USER_HOME_INFO_TELECOM_PAGER_COMMENT =
"user.home-info.telecom.pager.comment";
public static final String USER_HOME_INFO_ONLINE_EMAIL =
"user.home-info.online.email";
public static final String USER_HOME_INFO_ONLINE_URI =
"user.home-info.online.uri";
public static final String USER_BUSINESS_INFO_POSTAL_NAME =
"user.business-info.postal.name";
public static final String USER_BUSINESS_INFO_POSTAL_STREET =
"user.business-info.postal.street";
public static final String USER_BUSINESS_INFO_POSTAL_CITY =
"user.business-info.postal.city";
public static final String USER_BUSINESS_INFO_POSTAL_STATEPROV =
"user.business-info.postal.stateprov";
public static final String USER_BUSINESS_INFO_POSTAL_POSTALCODE =
"user.business-info.postal.postalcode";
public static final String USER_BUSINESS_INFO_POSTAL_COUNTRY =
"user.business-info.postal.country";
public static final String USER_BUSINESS_INFO_POSTAL_ORGANIZATION =
"user.business-info.postal.organization";
public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_INTCODE =
"user.business-info.telecom.telephone.intcode";
public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_LOCCODE =
"user.business-info.telecom.telephone.loccode";
public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_NUMBER =
"user.business-info.telecom.telephone.number";
public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_EXT =
"user.business-info.telecom.telephone.ext";
public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_COMMENT =
"user.business-info.telecom.telephone.comment";
public static final String USER_BUSINESS_INFO_TELECOM_FAX_INTCODE =
"user.business-info.telecom.fax.intcode";
public static final String USER_BUSINESS_INFO_TELECOM_FAX_LOCCODE =
"user.business-info.telecom.fax.loccode";
public static final String USER_BUSINESS_INFO_TELECOM_FAX_NUMBER =
"user.business-info.telecom.fax.number";
public static final String USER_BUSINESS_INFO_TELECOM_FAX_EXT =
"user.business-info.telecom.fax.ext";
public static final String USER_BUSINESS_INFO_TELECOM_FAX_COMMENT =
"user.business-info.telecom.fax.comment";
public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_INTCODE =
"user.business-info.telecom.mobile.intcode";
public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_LOCCODE =
"user.business-info.telecom.mobile.loccode";
public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_NUMBER =
"user.business-info.telecom.mobile.number";
public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_EXT =
"user.business-info.telecom.mobile.ext";
public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_COMMENT =
"user.business-info.telecom.mobile.comment";
public static final String USER_BUSINESS_INFO_TELECOM_PAGER_INTCODE =
"user.business-info.telecom.pager.intcode";
public static final String USER_BUSINESS_INFO_TELECOM_PAGER_LOCCODE =
"user.business-info.telecom.pager.loccode";
public static final String USER_BUSINESS_INFO_TELECOM_PAGER_NUMBER =
"user.business-info.telecom.pager.number";
public static final String USER_BUSINESS_INFO_TELECOM_PAGER_EXT =
"user.business-info.telecom.pager.ext";
public static final String USER_BUSINESS_INFO_TELECOM_PAGER_COMMENT =
"user.business-info.telecom.pager.comment";
public static final String USER_BUSINESS_INFO_ONLINE_EMAIL =
"user.business-info.online.email";
public static final String USER_BUSINESS_INFO_ONLINE_URI =
"user.business-info.online.uri";
public static final String USER_LOGIN_ID = "user.login.id";
public UserAttributes(User user) {
_user = user;
Address businessAddress = null;
Address personalAddress = null;
Phone businessPhone = null;
Phone businessFaxPhone = null;
Phone mobilePhone = null;
Phone pagerPhone = null;
Phone personalPhone = null;
Phone personalFaxPhone = null;
try {
for (Address address : user.getAddresses()) {
ListType listType = address.getType();
String listTypeName = listType.getName();
if (listTypeName.equals("business")) {
businessAddress = address;
}
else if (listTypeName.equals("personal")) {
personalAddress = address;
}
}
for (Phone phone : user.getPhones()) {
ListType listType = phone.getType();
String listTypeName = listType.getName();
if (listTypeName.equals("business")) {
businessPhone = phone;
}
else if (listTypeName.equals("business-fax")) {
businessFaxPhone = phone;
}
else if (listTypeName.equals("mobile-phone")) {
mobilePhone = phone;
}
else if (listTypeName.equals("pager")) {
pagerPhone = phone;
}
else if (listTypeName.equals("personal")) {
personalPhone = phone;
}
else if (listTypeName.equals("personal-fax")) {
personalFaxPhone = phone;
}
}
}
catch (Exception e) {
_log.error(e, e);
}
_businessAddress = businessAddress;
_personalAddress = personalAddress;
_businessPhone = businessPhone;
_businessFaxPhone = businessFaxPhone;
_mobilePhone = mobilePhone;
_pagerPhone = pagerPhone;
_personalPhone = personalPhone;
_personalFaxPhone = personalFaxPhone;
}
public String getValue(String name) throws PortalException {
if (name == null) {
return null;
}
if (name.equals(LIFERAY_COMPANY_ID)) {
return String.valueOf(_user.getCompanyId());
}
else if (name.equals(LIFERAY_USER_ID)) {
return String.valueOf(_user.getUserId());
}
else if (name.equals(USER_NAME_FULL)) {
return _user.getFullName();
}
else if (name.equals(USER_BDATE)) {
Date birthday = _user.getBirthday();
return birthday.toString();
}
else if (name.equals(USER_BDATE_DAY)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.DATE));
}
return null;
}
else if (name.equals(USER_BDATE_FRACTIONSECOND)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.MILLISECOND));
}
return null;
}
else if (name.equals(USER_BDATE_HOUR)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.HOUR));
}
return null;
}
else if (name.equals(USER_BDATE_MINUTE)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.MINUTE));
}
return null;
}
else if (name.equals(USER_BDATE_MONTH)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.MONTH) + 1);
}
return null;
}
else if (name.equals(USER_BDATE_SECOND)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.SECOND));
}
return null;
}
else if (name.equals(USER_BDATE_TIMEZONE)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.ZONE_OFFSET));
}
return null;
}
else if (name.equals(USER_BDATE_YEAR)) {
Date birthday = _user.getBirthday();
if (birthday != null) {
_calendar.setTime(birthday);
return String.valueOf(_calendar.get(Calendar.YEAR));
}
return null;
}
else if (name.equals(USER_GENDER)) {
if (_user.isMale()) {
return "male";
}
return "female";
}
else if (name.equals(USER_EMPLOYER)) {
return StringPool.BLANK;
}
else if (name.equals(USER_DEPARTMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_JOBTITLE)) {
return _user.getJobTitle();
}
else if (name.equals(USER_NAME_PREFIX)) {
return StringPool.BLANK;
}
else if (name.equals(USER_NAME_GIVEN)) {
return _user.getFirstName();
}
else if (name.equals(USER_NAME_FAMILY)) {
return _user.getLastName();
}
else if (name.equals(USER_NAME_MIDDLE)) {
return _user.getMiddleName();
}
else if (name.equals(USER_NAME_SUFFIX)) {
return StringPool.BLANK;
}
else if (name.equals(USER_NAME_NICKNAME)) {
return _user.getScreenName();
}
else if (name.equals(USER_LOGIN_ID)) {
return _user.getScreenName();
}
else if (name.equals(USER_HOME_INFO_POSTAL_NAME)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_STREET)) {
if (_personalAddress != null) {
return _personalAddress.getStreet1();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_CITY)) {
if (_personalAddress != null) {
return _personalAddress.getCity();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_STATEPROV)) {
if (_personalAddress != null) {
Region region = _personalAddress.getRegion();
return region.getRegionCode();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_POSTALCODE)) {
if (_personalAddress != null) {
return _personalAddress.getZip();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_COUNTRY)) {
if (_personalAddress != null) {
Country country = _personalAddress.getCountry();
return country.getName(_user.getLocale());
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_POSTAL_ORGANIZATION)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_NUMBER)) {
if (_personalPhone != null) {
return _personalPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_EXT)) {
if (_personalPhone != null) {
return _personalPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_FAX_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_FAX_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_FAX_NUMBER)) {
if (_personalFaxPhone != null) {
return _personalFaxPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_FAX_EXT)) {
if (_personalFaxPhone != null) {
return _personalFaxPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_FAX_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_NUMBER)) {
if (_mobilePhone != null) {
return _mobilePhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_EXT)) {
if (_mobilePhone != null) {
return _mobilePhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_NUMBER)) {
if (_pagerPhone != null) {
return _pagerPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_EXT)) {
if (_pagerPhone != null) {
return _pagerPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_HOME_INFO_ONLINE_EMAIL)) {
return _user.getEmailAddress();
}
else if (name.equals(USER_HOME_INFO_ONLINE_URI)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_NAME)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_STREET)) {
if (_businessAddress != null) {
return _businessAddress.getStreet1();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_CITY)) {
if (_businessAddress != null) {
return _businessAddress.getCity();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_STATEPROV)) {
if (_businessAddress != null) {
Region region = _businessAddress.getRegion();
return region.getRegionCode();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_POSTALCODE)) {
if (_businessAddress != null) {
return _businessAddress.getZip();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_COUNTRY)) {
if (_businessAddress != null) {
Country country = _businessAddress.getCountry();
return country.getName(_user.getLocale());
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_POSTAL_ORGANIZATION)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_NUMBER)) {
if (_businessPhone != null) {
return _businessPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_EXT)) {
if (_businessPhone != null) {
return _businessPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_NUMBER)) {
if (_businessFaxPhone != null) {
return _businessFaxPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_EXT)) {
if (_businessFaxPhone != null) {
return _businessFaxPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_NUMBER)) {
if (_mobilePhone != null) {
return _mobilePhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_EXT)) {
if (_mobilePhone != null) {
return _mobilePhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_INTCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_LOCCODE)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_NUMBER)) {
if (_pagerPhone != null) {
return _pagerPhone.getNumber();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_EXT)) {
if (_pagerPhone != null) {
return _pagerPhone.getExtension();
}
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_COMMENT)) {
return StringPool.BLANK;
}
else if (name.equals(USER_BUSINESS_INFO_ONLINE_EMAIL)) {
return _user.getEmailAddress();
}
else if (name.equals(USER_BUSINESS_INFO_ONLINE_URI)) {
return StringPool.BLANK;
}
else {
return null;
}
}
private static final Log _log = LogFactoryUtil.getLog(UserAttributes.class);
private final Address _businessAddress;
private final Phone _businessFaxPhone;
private final Phone _businessPhone;
private final Calendar _calendar = new GregorianCalendar();
private final Phone _mobilePhone;
private final Phone _pagerPhone;
private final Address _personalAddress;
private final Phone _personalFaxPhone;
private final Phone _personalPhone;
private final User _user;
}