/* * User.java * * Created on 29 de Janeiro de 2007, 13:40 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package org.msh.tb.entities; import org.hibernate.validator.Email; import org.hibernate.validator.NotNull; import org.msh.etbm.commons.transactionlog.Operation; import org.msh.etbm.commons.transactionlog.mapping.PropertyLog; import org.msh.tb.entities.enums.UserState; import javax.persistence.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; /** * Store information about a user of the system * @author Ricardo Memoria */ @Entity @Table(name = "sys_user") public class User implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Column(length = 30) @NotNull @PropertyLog(operations = {Operation.NEW}) private String login; @Column(length = 80, name = "user_name") @NotNull @PropertyLog(operations = {Operation.NEW}) private String name; @Column(length = 32, name = "user_password") @NotNull @PropertyLog(ignore = true) private String password; @Column(nullable = false, length = 80) @PropertyLog(operations = {Operation.NEW}) @Email private String email; @PropertyLog(operations = {Operation.NEW}) private UserState state; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "DEFAULTWORKSPACE_ID") @PropertyLog(operations = {Operation.NEW}, logEntityFields = true) private UserWorkspace defaultWorkspace; @Column(length = 6) private String language; @Column(length = 50) private String timeZone; @OneToMany(mappedBy = "user", cascade = {CascadeType.ALL}) private List workspaces = new ArrayList(); @Column(length = 200) private String comments; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PARENTUSER_ID") private User parentUser; @Temporal(TemporalType.TIMESTAMP) private Date registrationDate; @Column(length=50) @PropertyLog(messageKey = "global.legacyId") private String legacyId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "THEME_ID") private UITheme theme; private boolean sendSystemMessages; private boolean ulaAccepted; /** * Check if password has expired * @return */ public boolean isPasswordExpired() { return state == UserState.PASSWD_EXPIRED; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof User)) return false; return ((User)obj).getId().equals(getId()); } /** * Search the user workspace by the workspace * @param workspace instance of the workspace to search for the user workspace * @return instance of {@link UserWorkspace} */ public UserWorkspace getUserWorkspaceByWorkspace(Workspace workspace) { for (UserWorkspace ws: getWorkspaces()) { if (ws.getWorkspace().equals(workspace)) { return ws; } } return null; } /** * Return the user selected language * @return language in the format accepted by the {@link Locale} class */ public String getLanguage() { return language; } /** * Set the user language * @param defaultLanguage the new language of the user */ public void setLanguage(String defaultLanguage) { this.language = defaultLanguage; } @Override public String toString() { return login + " - " + name; } /** * Return the user ID * @return user ID */ public Integer getId() { return id; } /** * Set the user id * @param id new user id */ public void setId(Integer id) { this.id = id; } /** * Return the user login. The login is used to enter in the system * @return the user login */ public String getLogin() { return login; } /** * Set a new user login * @param login new user login */ public void setLogin(String login) { this.login = login; } /** * Return the user name * @return name of the user */ public String getName() { return name; } /** * Change the user name * @param name new name of the user */ public void setName(String name) { this.name = name; } /** * Return the user password hashed using the MD5 algorithm * @return the user password */ public String getPassword() { return password; } /** * Set the user password hashed using the MD5 algorithm * @param password */ public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public UserState getState() { return state; } public void setState(UserState state) { this.state = state; } public UserWorkspace getDefaultWorkspace() { return defaultWorkspace; } public void setDefaultWorkspace(UserWorkspace defaultWorkspace) { this.defaultWorkspace = defaultWorkspace; } public String getTimeZone() { return timeZone; } public void setTimeZone(String timeZone) { this.timeZone = timeZone; } public List getWorkspaces() { return workspaces; } public void setWorkspaces(List workspaces) { this.workspaces = workspaces; } /** * @param comment the comment to set */ public void setComments(String comment) { this.comments = comment; } /** * @return the comment */ public String getComments() { return comments; } /** * @param parentUser the parentUser to set */ public void setParentUser(User parentUser) { this.parentUser = parentUser; } /** * @return the parentUser */ public User getParentUser() { return parentUser; } /** * @param registrationDate the registrationDate to set */ public void setRegistrationDate(Date registrationDate) { this.registrationDate = registrationDate; } /** * @return the registrationDate */ public Date getRegistrationDate() { return registrationDate; } /** * @return the legacyId */ public String getLegacyId() { return legacyId; } /** * @param legacyId the legacyId to set */ public void setLegacyId(String legacyId) { this.legacyId = legacyId; } /** * @return the theme */ public UITheme getTheme() { return theme; } /** * @param theme the theme to set */ public void setTheme(UITheme theme) { this.theme = theme; } /** * @return the sendSystemMessages */ public boolean isSendSystemMessages() { return sendSystemMessages; } /** * @param sendSystemMessages the sendSystemMessages to set */ public void setSendSystemMessages(boolean sendSystemMessages) { this.sendSystemMessages = sendSystemMessages; } public boolean isUlaAccepted() { return ulaAccepted; } public void setUlaAccepted(boolean ulaAccepted) { this.ulaAccepted = ulaAccepted; } }