User.java
- /*
- * This software was designed and created by Jason Carroll.
- * Copyright (c) 2002, 2003, 2004 Jason Carroll.
- * The author can be reached at jcarroll@cowsultants.com
- * ITracker website: http://www.cowsultants.com
- * ITracker forums: http://www.cowsultants.com/phpBB/index.php
- *
- * This program is free software; you can redistribute it and/or modify
- * it only under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- */
- package org.itracker.model;
- import org.apache.commons.lang.StringUtils;
- import org.apache.commons.lang.builder.CompareToBuilder;
- import org.apache.commons.lang.builder.ToStringBuilder;
- import org.apache.log4j.Logger;
- import org.itracker.model.util.UserUtilities;
- import javax.mail.internet.AddressException;
- import javax.mail.internet.InternetAddress;
- import java.io.UnsupportedEncodingException;
- import java.util.*;
- /**
- * A user.
- *
- * @author ready
- */
- public class User extends AbstractEntity implements Comparable<Entity> {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private static final Logger log = Logger.getLogger(User.class);
- public static final Comparator<User> NAME_COMPARATOR = new NameComparator();
- public static final Comparator<User> LOGIN_COMPARATOR = new LoginComparator();
- private String login;
- private String password;
- private String firstName;
- private String lastName;
- private String email;
- private int status;
- private boolean superUser;
- private int registrationType;
- /**
- * The Permissions of this User on all Projects.
- */
- private Set<Permission> permissions = new TreeSet<Permission>(Permission.PERMISSION_PROPERTIES_COMPARATOR);
- /**
- * The Projects owned by this User.
- */
- private List<Project> projects = new ArrayList<Project>();
- private UserPreferences preferences;
- public UserPreferences getPreferences() {
- return preferences;
- }
- public void setPreferences(UserPreferences preferences) {
- this.preferences = preferences;
- }
- /**
- * Default constructor (required by Hibernate).
- * <p/>
- * <p>
- * PENDING: should be <code>private</code> so that it can only be used by
- * Hibernate, to ensure that the fields which form an instance's identity
- * are always initialized/never <tt>null</tt>.
- * </p>
- */
- public User() {
- }
- public User(String login) {
- setLogin(login);
- }
- public User(String login, String password, String firstName,
- String lastName, String email, boolean superUser) {
- this(login, password, firstName, lastName, email,
- UserUtilities.REGISTRATION_TYPE_ADMIN, superUser);
- }
- public User(String login, String password, String firstName,
- String lastName, String email, int registrationType,
- boolean superUser) {
- this(login);
- this.password = password;
- this.firstName = firstName;
- this.lastName = lastName;
- this.email = email;
- this.registrationType = registrationType;
- setSuperUser(superUser);
- }
- public String getLogin() {
- return login;
- }
- public void setLogin(String login) {
- if (login == null) {
- throw new IllegalArgumentException("null login");
- }
- this.login = login;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String value) {
- this.password = value;
- }
- public String getFirstName() {
- return firstName;
- }
- public void setFirstName(String value) {
- firstName = value;
- }
- public String getLastName() {
- return lastName;
- }
- public void setLastName(String value) {
- this.lastName = value;
- }
- public String getFullName() {
- return StringUtils.defaultString(
- StringUtils.trimToNull(
- (StringUtils.isNotBlank(getFirstName()) ? getFirstName() : "")
- + " " + (StringUtils.isNotBlank(getLastName()) ? getLastName() : "")
- ), getLogin());
- }
- public String getEmail() {
- return email;
- }
- public InternetAddress getEmailAddress() {
- if (null == getEmail() || getEmail().trim().length() == 0) {
- log.warn("getEmailAddress: failed to get eMail for user "
- + getLogin() + " (" + getId() + ")");
- return null;
- }
- final InternetAddress adr;
- try {
- adr = new InternetAddress(getEmail());
- try {
- adr.setPersonal(getFullName(), "utf-8");
- } catch (UnsupportedEncodingException e) {
- log.warn("getEmailAddress: unsupported encoding for setting personal: utf-8", e);
- }
- return adr;
- } catch (AddressException e1) {
- log.error("getEmailAddress: failed to parse email '"
- + getEmail() + "' for user " + getLogin() + " ("
- + getId() + "), returning null", e1);
- return null;
- }
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public Set<Permission> getPermissions() {
- return permissions;
- }
- public void setPermissions(Set<Permission> getPermissions) {
- this.permissions = getPermissions;
- }
- public int getRegistrationType() {
- return registrationType;
- }
- public void setRegistrationType(int registrationType) {
- this.registrationType = registrationType;
- }
- public int getStatus() {
- return status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- public boolean isSuperUser() {
- return superUser;
- }
- public void setSuperUser(boolean superUser) {
- this.superUser = superUser;
- }
- public String getFirstInitial() {
- return (null != getFirstName() && getFirstName().length() > 0 ? getFirstName().substring(0, 1)
- .toUpperCase()
- + "." : "");
- }
- public boolean hasRequiredData() {
- return hasRequiredData(true);
- }
- public boolean hasRequiredData(boolean passwordRequired) {
- if (this.getLogin() == null || this.getLogin().equals("")
- || this.getFirstName() == null
- || this.getFirstName().equals("") || this.getLastName() == null
- || this.getLastName().equals("") || this.getEmail() == null
- || this.getEmail().equals("")) {
- return false;
- }
- if (passwordRequired
- && (this.getPassword() == null || this.getPassword().equals(""))) {
- return false;
- }
- return true;
- }
- public List<Project> getProjects() {
- return projects;
- }
- public void setProjects(List<Project> projects) {
- this.projects = projects;
- }
- @Override
- public String toString() {
- return new ToStringBuilder(this).append("id", getId())
- .append("login", getLogin()).toString();
- }
- /**
- * Compares 2 users by last and first name.
- */
- private static class NameComparator implements Comparator<User> {
- public int compare(User a, User b) {
- return new CompareToBuilder().append(a.getLastName(), b.getLastName())
- .append(a.getFirstName(), b.getFirstName()).append(a, b, LOGIN_COMPARATOR).toComparison();
- }
- }
- public static final class LoginComparator implements Comparator<User> {
- public int compare(User o1, User o2) {
- return new CompareToBuilder().append(o1.getLogin(), o2.getLogin())
- .toComparison();
- }
- }
- }