/** * Copyright (c) 2009--2015 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.domain.user.legacy; import com.redhat.rhn.common.conf.Config; import com.redhat.rhn.common.conf.ConfigDefaults; import com.redhat.rhn.common.localization.LocalizationService; import com.redhat.rhn.common.util.CryptHelper; import com.redhat.rhn.common.util.MD5Crypt; import com.redhat.rhn.common.util.SHA256Crypt; import com.redhat.rhn.domain.BaseDomainHelper; import com.redhat.rhn.domain.org.Org; import com.redhat.rhn.domain.org.usergroup.UserGroup; import com.redhat.rhn.domain.org.usergroup.UserGroupFactory; import com.redhat.rhn.domain.org.usergroup.UserGroupMembers; import com.redhat.rhn.domain.role.Role; import com.redhat.rhn.domain.role.RoleFactory; import com.redhat.rhn.domain.server.Server; import com.redhat.rhn.domain.user.Address; import com.redhat.rhn.domain.user.EnterpriseUser; import com.redhat.rhn.domain.user.RhnTimeZone; import com.redhat.rhn.domain.user.StateChange; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.domain.user.UserFactory; import com.redhat.rhn.manager.user.UserManager; import net.sf.jpam.Pam; import net.sf.jpam.PamReturnValue; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; /** * Class UserImpl that reflects the DB representation of web_contact * and ancillary tables. * DB table: web_contact * @version $Rev: 75755 $ */ public class UserImpl extends BaseDomainHelper implements User { private static final Logger LOG = Logger.getLogger(UserImpl.class); //private Address address; private EnterpriseUserImpl euser; private Long id; private String login; private String loginUc; private String password; private boolean readOnly; private Set<UserGroupMembers> groupMembers; private Org org; private Set<StateChange> stateChanges; private Set<Address> addresses; private Set hiddenPanes; private Set associatedServerGroups; private Set<Server> servers; // PersonalInfo sub-object object private PersonalInfo personalInfo; // UserInfo sub-object private UserInfo userInfo; // Keep track of whether the user used to be an org admin private Boolean wasOrgAdmin; /** * Create a new empty user */ public UserImpl() { groupMembers = new HashSet<UserGroupMembers>(); personalInfo = new PersonalInfo(); personalInfo.setUser(this); userInfo = new UserInfo(); userInfo.setUser(this); stateChanges = new TreeSet<StateChange>(); addresses = new HashSet<Address>(); hiddenPanes = new HashSet(); associatedServerGroups = new HashSet(); } /** * Gets the current value of id * @return long the current value */ public Long getId() { return this.id; } /** * Sets the value of id to new value * @param idIn New value for id */ public void setId(Long idIn) { this.id = idIn; } /** * Gets the current value of login * @return String the current value */ public String getLogin() { return this.login; } /** * Sets the value of login to new value * @param loginIn New value for login */ public void setLogin(String loginIn) { this.login = loginIn; setLoginUc(loginIn.toUpperCase()); } /** * Gets the current value of loginUc * @return String the current value */ public String getLoginUc() { return this.loginUc; } /** * Sets the value of loginUc to new value * @param loginUcIn New value for loginUc */ public void setLoginUc(String loginUcIn) { this.loginUc = loginUcIn; } /** * Gets the current value of password * @return String the current value */ public String getPassword() { return this.password; } /** * Sets the value of password as is to new value, no encryption * @param passwordIn New raw value for password */ public void setRawPassword(String passwordIn) { this.password = passwordIn; } /** * Sets the value of password to new value * @param passwordIn New value for password */ public void setPassword(String passwordIn) { /** * If we're using encrypted passwords, encode the * password before setting it. Otherwise, just * set it. */ if (Config.get().getBoolean(ConfigDefaults.WEB_ENCRYPTED_PASSWORDS)) { this.password = SHA256Crypt.crypt(passwordIn); } else { this.password = passwordIn; } } /** * Set the user group members set * @param ugIn The new Set of UserGroupMembers to set */ protected void setGroupMembers(Set<UserGroupMembers> ugIn) { groupMembers = ugIn; } /** get the set of usergroups * @return Set of UserGroups */ protected Set<UserGroup> getUserGroups() { Set<UserGroup> ugmSet = new HashSet<UserGroup>(); for (UserGroupMembers ugm : groupMembers) { ugmSet.add(ugm.getUserGroup()); } return ugmSet; } /** get the set of user group members * @return Set of UserGroupMembers */ protected Set<UserGroupMembers> getGroupMembers() { return groupMembers; } /** {@inheritDoc} */ public Set<Role> getRoles() { Set<Role> userRoles = new HashSet<Role>(); for (Iterator<UserGroupMembers> i = groupMembers.iterator(); i.hasNext();) { UserGroupMembers ugm = i.next(); userRoles.add(ugm.getUserGroup().getRole()); } if (userRoles.contains(RoleFactory.ORG_ADMIN)) { Set<Role> orgRoles = org.getRoles(); Set<Role> localImplied = new HashSet<Role>(); localImplied.addAll(UserFactory.IMPLIEDROLES); localImplied.retainAll(orgRoles); userRoles.addAll(localImplied); } return Collections.unmodifiableSet(userRoles); } /** {@inheritDoc} */ public Set<Role> getTemporaryRoles() { Set<Role> userRoles = new HashSet<Role>(); for (Iterator<UserGroupMembers> i = groupMembers.iterator(); i.hasNext();) { UserGroupMembers ugm = i.next(); if (ugm.getTemporary()) { userRoles.add(ugm.getUserGroup().getRole()); } } if (userRoles.contains(RoleFactory.ORG_ADMIN)) { Set<Role> orgRoles = org.getRoles(); Set<Role> localImplied = new HashSet<Role>(); localImplied.addAll(UserFactory.IMPLIEDROLES); localImplied.retainAll(orgRoles); userRoles.addAll(localImplied); } return Collections.unmodifiableSet(userRoles); } /** {@inheritDoc} */ public Set<Role> getPermanentRoles() { Set<Role> userRoles = new HashSet<Role>(); for (Iterator<UserGroupMembers> i = groupMembers.iterator(); i.hasNext();) { UserGroupMembers ugm = i.next(); if (!ugm.getTemporary()) { userRoles.add(ugm.getUserGroup().getRole()); } } if (userRoles.contains(RoleFactory.ORG_ADMIN)) { Set<Role> orgRoles = org.getRoles(); Set<Role> localImplied = new HashSet<Role>(); localImplied.addAll(UserFactory.IMPLIEDROLES); localImplied.retainAll(orgRoles); userRoles.addAll(localImplied); } return Collections.unmodifiableSet(userRoles); } /** {@inheritDoc} */ public boolean hasRole(Role label) { // We use checkRoleSet to get the correct logic for the // implied roles. return getRoles().contains(label); } /** {@inheritDoc} */ public boolean hasTemporaryRole(Role label) { return getTemporaryRoles().contains(label); } /** {@inheritDoc} */ public boolean hasPermanentRole(Role label) { return getPermanentRoles().contains(label); } /** {@inheritDoc} */ public void addTemporaryRole(Role label) { addRole(label, true); } /** {@inheritDoc} */ public void addPermanentRole(Role label) { addRole(label, false); } /** {@inheritDoc} */ private void addRole(Role label, boolean temporary) { checkPermanentOrgAdmin(); Set<Role> roles = new HashSet<Role>(); if (temporary) { roles = this.getTemporaryRoles(); } else { roles = this.getPermanentRoles(); } if (!roles.contains(label)) { UserGroup ug = org.getUserGroup(label); if (ug != null) { UserGroupMembers ugm = new UserGroupMembers(this, ug, temporary); groupMembers.add(ugm); UserGroupFactory.save(ugm); } else { throw new IllegalArgumentException("Org doesn't have role: " + label); } } } /** {@inheritDoc} */ public void removeTemporaryRole(Role label) { removeRole(label, true); } /** {@inheritDoc} */ public void removePermanentRole(Role label) { removeRole(label, false); } /** {@inheritDoc} */ private void removeRole(Role label, boolean temporary) { checkPermanentOrgAdmin(); UserGroup ug = org.getUserGroup(label); if (ug != null) { for (Iterator<UserGroupMembers> ugmIter = groupMembers.iterator(); ugmIter.hasNext();) { UserGroupMembers ugm = ugmIter.next(); if (ugm.getUserGroup().equals(ug) && ugm.getTemporary() == temporary) { UserGroupFactory.delete(ugm); ugmIter.remove(); } } } } /** * Determine if this was org admin. * @return Boolean */ public Boolean wasOrgAdmin() { return wasOrgAdmin; } /** * Reset the wasOrgAdmin value. */ public void resetWasOrgAdmin() { wasOrgAdmin = null; } private void checkPermanentOrgAdmin() { if (wasOrgAdmin == null) { wasOrgAdmin = Boolean.valueOf(hasPermanentRole(RoleFactory.ORG_ADMIN)); } } /** {@inheritDoc} */ public boolean authenticate(String thePassword) { String pamAuthService = Config.get().getString(ConfigDefaults.WEB_PAM_AUTH_SERVICE); boolean result = false; /* * If we have a valid pamAuthService and the user uses pam authentication, * authenticate via pam, otherwise, use the db. */ if (pamAuthService != null && pamAuthService.trim().length() > 0 && this.getUsePamAuthentication()) { Pam pam = new Pam(pamAuthService); PamReturnValue ret = pam.authenticate(getLogin(), thePassword); result = PamReturnValue.PAM_SUCCESS.equals(ret); if (!result) { LOG.warn("PAM login for user " + this + " failed with error " + ret); } } else { /** * If we're using encrypted passwords, check * thePassword encrypted, otherwise just do * a straight clear-text comparison. */ boolean useEncrPasswds = Config.get().getBoolean(ConfigDefaults.WEB_ENCRYPTED_PASSWORDS); if (useEncrPasswds) { // user uses SHA-256 encrypted password if (password.startsWith(CryptHelper.getSHA256Prefix())) { result = SHA256Crypt.crypt(thePassword, password).equals(password); } // user still uses MD5 encrypted password else if (password.startsWith(CryptHelper.getMD5Prefix())) { if (MD5Crypt.crypt(thePassword, password).equals(password)) { // if authenticated with md5 pass, convert it to sha-256 setPassword(thePassword); result = true; } else { result = false; } } } else { result = password.equals(thePassword); } if (LOG.isDebugEnabled() && !useEncrPasswds) { String encr = useEncrPasswds ? "with" : "without"; LOG.debug("DB login for user " + this + " " + encr + " encrypted passwords failed"); } } if (LOG.isDebugEnabled() && result) { LOG.debug("PAM login for user " + this + " succeeded. "); } return result; } /** * Associates the user with an Org. * @param orgIn Org to be associated to this user. */ public void setOrg(Org orgIn) { org = orgIn; } /** {@inheritDoc} */ public Org getOrg() { return org; } /** {@inheritDoc} */ public Set getDefaultSystemGroupIds() { return UserManager.getDefaultSystemGroupIds(this); } /** {@inheritDoc} */ public void setDefaultSystemGroupIds(Set dsg) { UserManager.setDefaultSystemGroupIds(this, dsg); } /** * Return the PersonalInfo object * @return PersonalInfo object associated with this User */ protected PersonalInfo getPersonalInfo() { if (personalInfo == null) { personalInfo = new PersonalInfo(); } return personalInfo; } /** * Set the PersonalInfo object * @param persIn the PersonalInfo object */ protected void setPersonalInfo(PersonalInfo persIn) { this.personalInfo = persIn; } /** * Set the UserInfo object * @param infoIn the UserInfo object */ protected void setUserInfo(UserInfo infoIn) { this.userInfo = infoIn; } /** * Get the UserInfo sub object * @return UserInfo */ public UserInfo getUserInfo() { return this.userInfo; } /** * Convenience method to determine whether a user is disabled * or not * @return Returns true if the user is disabled */ public boolean isDisabled() { return UserFactory.isDisabled(this); } /** * {@inheritDoc} */ public void addChange(StateChange change) { this.stateChanges.add(change); } /** * {@inheritDoc} */ public Set getStateChanges() { return stateChanges; } /** * @param s The stateChanges to set. */ public void setStateChanges(Set s) { this.stateChanges = s; } /************* UserInfo methods **************/ /** {@inheritDoc} */ public int getPageSize() { return this.userInfo.getPageSize(); } /** {@inheritDoc} */ public void setPageSize(int pageSizeIn) { this.userInfo.setPageSize(pageSizeIn); } /** {@inheritDoc} */ public boolean getUsePamAuthentication() { return this.userInfo.getUsePamAuthentication(); } /** {@inheritDoc} */ public void setUsePamAuthentication(boolean usePamAuthenticationIn) { this.userInfo.setUsePamAuthentication(usePamAuthenticationIn); } /** {@inheritDoc} */ public String getShowSystemGroupList() { return this.userInfo.getShowSystemGroupList(); } /** {@inheritDoc} */ public void setShowSystemGroupList(String showSystemGroupListIn) { this.userInfo.setShowSystemGroupList(showSystemGroupListIn); } /** {@inheritDoc} */ public Date getLastLoggedIn() { return this.userInfo.getLastLoggedIn(); } /** {@inheritDoc} */ public void setLastLoggedIn(Date lastLoggedInIn) { this.userInfo.setLastLoggedIn(lastLoggedInIn); } /** {@inheritDoc} */ public void setPreferredLocale(String locale) { this.userInfo.setPreferredLocale(locale); } /** {@inheritDoc} */ public String getPreferredLocale() { return this.userInfo.getPreferredLocale(); } /** {@inheritDoc} */ public void setCsvSeparator(char csvSeparator) { this.userInfo.setCsvSeparator(csvSeparator); } /** {@inheritDoc} */ public char getCsvSeparator() { return this.userInfo.getCsvSeparator(); } /********* PersonalInfo Methods **********/ /** * Gets the current value of prefix * @return String the current value */ public String getPrefix() { return this.personalInfo.getPrefix(); } /** * Sets the value of prefix to new value * @param prefixIn New value for prefix */ public void setPrefix(String prefixIn) { this.personalInfo.setPrefix(prefixIn); } /** * Gets the current value of firstNames * @return String the current value */ public String getFirstNames() { return this.personalInfo.getFirstNames(); } /** * Sets the value of firstNames to new value * @param firstNamesIn New value for firstNames */ public void setFirstNames(String firstNamesIn) { this.personalInfo.setFirstNames(firstNamesIn); } /** * Gets the current value of lastName * @return String the current value */ public String getLastName() { return this.personalInfo.getLastName(); } /** * Sets the value of lastName to new value * @param lastNameIn New value for lastName */ public void setLastName(String lastNameIn) { this.personalInfo.setLastName(lastNameIn); } /** * Gets the current value of company * @return String the current value */ public String getCompany() { return this.personalInfo.getCompany(); } /** * Sets the value of company to new value * @param companyIn New value for company */ public void setCompany(String companyIn) { this.personalInfo.setCompany(companyIn); } /** * Gets the current value of title * @return String the current value */ public String getTitle() { return this.personalInfo.getTitle(); } /** * Sets the value of title to new value * @param titleIn New value for title */ public void setTitle(String titleIn) { this.personalInfo.setTitle(titleIn); } /** * Gets the current value of phone * @return String the current value */ public String getPhone() { return getAddress().getPhone(); } /** * Sets the value of phone to new value * @param phoneIn New value for phone */ public void setPhone(String phoneIn) { getAddress().setPhone(phoneIn); } /** * Gets the current value of fax * @return String the current value */ public String getFax() { return getAddress().getFax(); } /** * Sets the value of fax to new value * @param faxIn New value for fax */ public void setFax(String faxIn) { getAddress().setFax(faxIn); } /** * Gets the current value of email * @return String the current value */ public String getEmail() { return this.personalInfo.getEmail(); } /** * Sets the value of email to new value * @param emailIn New value for email */ public void setEmail(String emailIn) { this.personalInfo.setEmail(emailIn); } /** {@inheritDoc} */ public RhnTimeZone getTimeZone() { return this.userInfo.getTimeZone(); } /** {@inheritDoc} */ public void setTimeZone(RhnTimeZone timeZoneIn) { this.userInfo.setTimeZone(timeZoneIn); } /** * Output User to String for debugging * @return String output of the User */ public String toString() { StringBuilder retval = new StringBuilder(); retval.append(LocalizationService.getInstance(). getDebugMessage("user")); retval.append(" "); retval.append(getLogin()); retval.append(" (id "); retval.append(String.valueOf(getId())); retval.append(", org_id "); retval.append(String.valueOf(getOrg().getId())); retval.append(")"); return retval.toString(); } /** * {@inheritDoc} */ public boolean equals(Object other) { if (other == null || !(other instanceof User)) { return false; } User otherUser = (User) other; return new EqualsBuilder().append(login, otherUser.getLogin()) .append(org, otherUser.getOrg()) .append(id, otherUser.getId()) .isEquals(); } /** * {@inheritDoc} */ public int hashCode() { return new HashCodeBuilder().append(login).append(org).append(id).toHashCode(); } /** * Getter for address1 * @return Address1 */ public String getAddress1() { return getAddress().getAddress1(); } /** * Setter for address1 * @param address1In New value for address1 */ public void setAddress1(String address1In) { getAddress().setAddress1(address1In); } /** * Getter for address2 * @return Address2 */ public String getAddress2() { return getAddress().getAddress2(); } /** * Setter for address2 * @param address2In New value for address2 */ public void setAddress2(String address2In) { getAddress().setAddress2(address2In); } /** * Getter for city * @return City */ public String getCity() { return getAddress().getCity(); } /** * Setter for city * @param cityIn New value for city */ public void setCity(String cityIn) { getAddress().setCity(cityIn); } /** * Getter for state * @return State */ public String getState() { return getAddress().getState(); } /** * Setter for state * @param stateIn New value for state */ public void setState(String stateIn) { getAddress().setState(stateIn); } /** * Getter for zip * @return Zip */ public String getZip() { return getAddress().getZip(); } /** * Setter for zip * @param zipIn New value for zip */ public void setZip(String zipIn) { getAddress().setZip(zipIn); } /** * Getter for country * @return Country */ public String getCountry() { return getAddress().getCountry(); } /** * Setter for country * @param countryIn New value for country */ public void setCountry(String countryIn) { getAddress().setCountry(countryIn); } /** * Getter for isPoBox * @return isPoBox */ public String getIsPoBox() { return getAddress().getIsPoBox(); } /** * Setter for isPoBox * @param isPoBoxIn New value for isPoBox */ public void setIsPoBox(String isPoBoxIn) { getAddress().setIsPoBox(isPoBoxIn); } /** * {@inheritDoc} */ public EnterpriseUser getEnterpriseUser() { if (euser == null) { euser = new EnterpriseUserImpl(); } return euser; } /** * {@inheritDoc} */ public Set getHiddenPanes() { return hiddenPanes; } /** * {@inheritDoc} */ public void setHiddenPanes(Set p) { hiddenPanes = p; } protected void setAddress(Address addIn) { addresses.clear(); addresses.add(addIn); } protected Address getAddress() { Address baddr = null; Address addr = null; Address[] addrA = addresses.toArray(new Address[addresses.size()]); if (addresses.size() > 0) { for (int i = 0; i < addrA.length; i++) { if (addrA[i].getType().equals(Address.TYPE_MARKETING)) { addr = addrA[i]; } if (addrA[i].getType().equals("B")) { baddr = addrA[i]; } } } if (addr == null) { addr = UserFactory.createAddress(); if (baddr != null) { addr.setAddress1(baddr.getAddress1()); addr.setAddress2(baddr.getAddress2()); addr.setCity(baddr.getCity()); addr.setCountry(baddr.getCountry()); addr.setFax(baddr.getFax()); addr.setIsPoBox(baddr.getIsPoBox()); addr.setPhone(baddr.getPhone()); addr.setState(baddr.getState()); addr.setZip(baddr.getZip()); } addresses.add(addr); } return addr; } /** * Set the addresses. * @param s the set */ protected void setAddresses(Set<Address> s) { addresses = s; } /** * Get the addresses * @return Set of addresses */ protected Set<Address> getAddresses() { return addresses; } /** * Default POJO imple of EnterpriseUser done as an internal * class to facilitate compatibility between hosted/sat. * EnterpriseUserImpl * @version $Rev$ */ class EnterpriseUserImpl extends BaseDomainHelper implements EnterpriseUser { /** * Default constructor * */ protected EnterpriseUserImpl() { } /** * Gets the current value of id * @return long the current value */ public Long getId() { return id; } /** * Sets the value of id to new value * @param idIn New value for id */ public void setId(Long idIn) { } /** * Add a User to this instance. * * @param u a User to add */ public void addUser(User u) { } /** * Remove a User from this instance. * * @param u the User to remove */ public void removeUser(User u) { } /** * Return an iterator over all Users associated with * this instance. * * @return Iterator an iterator over all users */ public Iterator allUsers() { return null; } /** * Find the user having the id provided. Return null if * not found. * @param idIn id to use * @return User or null */ public User findUserById(Long idIn) { return null; } /** * Gets the current value of login * @return String the current value */ public String getLogin() { return login; } /** * Sets the value of login to new value * @param loginIn New value for login */ public void setLogin(String loginIn) { login = loginIn; } /** * Gets the current value of password * @return String the current value */ public String getPassword() { return password; } /** * Sets the value of password to new value * @param passwordIn New value for password */ public void setPassword(String passwordIn) { /** * If we're using encrypted passwords, encode the * password before setting it. Otherwise, just * set it. */ if (Config.get().getBoolean(ConfigDefaults.WEB_ENCRYPTED_PASSWORDS)) { password = SHA256Crypt.crypt(passwordIn); } else { password = passwordIn; } } /** * Gets the current value of prefix * @return String the current value */ public String getPrefix() { return personalInfo.getPrefix(); } /** * Sets the value of prefix to new value * @param prefixIn New value for prefix */ public void setPrefix(String prefixIn) { personalInfo.setPrefix(prefixIn); } /** * Gets the current value of firstNames * @return String the current value */ public String getFirstNames() { return personalInfo.getFirstNames(); } /** * Sets the value of firstNames to new value * @param firstNamesIn New value for firstNames */ public void setFirstNames(String firstNamesIn) { personalInfo.setFirstNames(firstNamesIn); } /** * Gets the current value of lastName * @return String the current value */ public String getLastName() { return personalInfo.getLastName(); } /** * Sets the value of lastName to new value * @param lastNameIn New value for lastName */ public void setLastName(String lastNameIn) { personalInfo.setLastName(lastNameIn); } /** * Gets the current value of title * @return String the current value */ public String getTitle() { return personalInfo.getTitle(); } /** * Sets the value of title to new value * @param titleIn New value for title */ public void setTitle(String titleIn) { personalInfo.setTitle(titleIn); } /** * Gets the current value of email * @return String the current value */ public String getEmail() { return personalInfo.getEmail(); } /** * Sets the value of email to new value * @param emailIn New value for email */ public void setEmail(String emailIn) { personalInfo.setEmail(emailIn); } /** * Getter for lastLoggedIn * @return lastLoggedIn */ public Date getLastLoggedIn() { return userInfo.getLastLoggedIn(); } /** * Setter for lastLoggedIn * @param lastLoggedInIn New value for lastLoggedIn */ public void setLastLoggedIn(Date lastLoggedInIn) { userInfo.setLastLoggedIn(lastLoggedInIn); } /** * @inheritDoc * @param modifiedIn the modified date */ public void setModified(Date modifiedIn) { } /** * @inheritDoc * @return date modified */ public Date getModified() { return null; } /** * @inheritDoc * @param createdIn date created in */ public void setCreated(Date createdIn) { } /** * @inheritDoc * @return date was created */ public Date getCreated() { return null; } /** * @return Returns the timeZone. */ public RhnTimeZone getTimeZone() { return userInfo.getTimeZone(); } /** * @param timeZoneIn The timeZone to set. */ public void setTimeZone(RhnTimeZone timeZoneIn) { userInfo.setTimeZone(timeZoneIn); } /** * Set the address of this enterprise user. * @param addressIn the address to set */ public void setAddress(Address addressIn) { addresses.clear(); addresses.add(addressIn); } /** * * @return returns the address info */ public Address getAddress() { Address baddr = null; Address addr = null; Address[] addrA = addresses.toArray(new Address[addresses.size()]); if (addresses.size() > 0) { for (int i = 0; i < addrA.length; i++) { if (addrA[i].getType().equals(Address.TYPE_MARKETING)) { addr = addrA[i]; } if (addrA[i].getType().equals("B")) { baddr = addrA[i]; } } } if (addr == null) { addr = UserFactory.createAddress(); if (baddr != null) { addr.setAddress1(baddr.getAddress1()); addr.setAddress2(baddr.getAddress2()); addr.setCity(baddr.getCity()); addr.setCountry(baddr.getCountry()); addr.setFax(baddr.getFax()); addr.setIsPoBox(baddr.getIsPoBox()); addr.setPhone(baddr.getPhone()); addr.setState(baddr.getState()); addr.setZip(baddr.getZip()); } addresses.add(addr); } return addr; } /** * * @param companyIn the company value */ public void setCompany(String companyIn) { personalInfo.setCompany(companyIn); } /** * * @return returns the company value */ public String getCompany() { return personalInfo.getCompany(); } } /** {@inheritDoc} */ public void setEmailNotify(int emailNotifyIn) { this.userInfo.setEmailNotify(emailNotifyIn); } /** {@inheritDoc} */ public int getEmailNotify() { return this.userInfo.getEmailNotify(); } /** * * {@inheritDoc} */ public Set getAssociatedServerGroups() { return associatedServerGroups; } /** * Sets the associatedServerGroups.. * Meant for use by hibernate only (hence protected) * @param serverGroups the servergroups to set. */ protected void setAssociatedServerGroups(Set serverGroups) { associatedServerGroups = serverGroups; } /** {@inheritDoc} */ public Set<Server> getServers() { return servers; } private void setServers(Set<Server> serversIn) { this.servers = serversIn; } /** {@inheritDoc} */ public void addServer(Server server) { servers.add(server); } /** {@inheritDoc} */ public void removeServer(Server server) { servers.remove(server); } /** * @return Returns whether user is readonly */ public boolean isReadOnly() { return readOnly; } /** * @param readOnlyIn readOnly to set */ public void setReadOnly(boolean readOnlyIn) { this.readOnly = readOnlyIn; } /** {@inheritDoc} */ public boolean getTaskoNotify() { return this.userInfo.getTaskoNotify(); } /** {@inheritDoc} */ public void setTaskoNotify(boolean taskoNotifyIn) { this.userInfo.settaskoNotify(taskoNotifyIn); } }