package br.com.itexto.springforum.entidades; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.hibernate.annotations.Generated; import org.hibernate.annotations.GenerationTime; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; @Entity @Table(name="usuario") public class Usuario implements Serializable{ /** * */ private static final long serialVersionUID = -6511225584196613549L; @Id @Generated(GenerationTime.INSERT) @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id", unique=true) protected long id; @NotNull @NotEmpty // JSR 303 @Column(name="nombre", nullable=false, length=128) private String nombre; @Email(message="Esto no es un email") @NotNull @NotEmpty @Column(name="email", nullable=false, length=128, unique=true) private String email; @NotNull @Column(name="fecha_publicacion", nullable=false) @Temporal(TemporalType.TIMESTAMP) private Date fechaPublicacion = new Date(); @NotNull @NotEmpty @Size(min=8, max=32, message="Login debe ser entre 8 y 32 caracteres") @Column( name="login", nullable=false, unique=true, length=64) private String login; @Column( name="twitter", nullable=true, unique=true, length=64) private String twitter; private transient String password; @Column(name="ultimo_login", nullable=true) @Temporal(TemporalType.TIMESTAMP) private Date ultimoLogin; @Column(name="hash_password", nullable=false, length=128) private String hashPassword; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getFechaPublicacion() { return fechaPublicacion; } public void setFechaPublicacion(Date fechaPublicacion) { this.fechaPublicacion = fechaPublicacion; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getTwitter() { return twitter; } public void setTwitter(String twitter) { this.twitter = twitter; } public String getPassword() { return password; } public void setPassword(String password) { setHashPassword(org.apache.commons.codec.digest.DigestUtils.sha256Hex(password)); this.password = password; } public Date getUltimoLogin() { return ultimoLogin; } public void setUltimoLogin(Date ultimoLogin) { this.ultimoLogin = ultimoLogin; } public String getHashPassword() { return hashPassword; } public void setHashPassword(String hashPassword) { this.hashPassword = hashPassword; } @Override public String toString() { return "Usuario [id=" + id + ", nombre=" + nombre + ", email=" + email + ", fechaPublicacion=" + fechaPublicacion + ", login=" + login + ", twitter=" + twitter + ", ultimoLogin=" + ultimoLogin + ", hashPassword=" + hashPassword + "]"; } }