package com.googlecode.tawus.hibernate.models;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.googlecode.tawus.annotations.NonUpdatable;
import com.googlecode.tawus.hibernate.annotations.Unique;
@Entity
@Unique(columns = "userName")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@NotNull
@Size(max = 10)
private String userName;
private String password;
@NotNull
@Size(max = 64)
private String email;
private String signature;
@NotNull
@NonUpdatable
private Gender gender;
@ManyToOne
private Address address;
@ManyToOne
private UserGroup userGroup;
public User(){}
public Long getId(){
return id;
}
public void setId(Long id){
this.id = id;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = email;
}
public String getSignature(){
return signature;
}
public void setSignature(String signature){
this.signature = signature;
}
public Gender getGender(){
return gender;
}
public void setGender(Gender gender){
this.gender = gender;
}
@Override
public boolean equals(Object o){
if(o == null || !(o instanceof User)){
return false;
}
User u = (User)o;
if(getId() != null){
return getId().equals(u.getId());
}else {
return super.equals(o);
}
}
@Override
public int hashCode(){
if(getId() == null){
return super.hashCode();
}
return getId().hashCode();
}
public String toString(){
return userName + "(" + signature + ")";
}
public void setAddress(Address address) {
this.address = address;
}
public Address getAddress() {
return address;
}
public void setGroup(UserGroup userGroup) {
this.userGroup = userGroup;
}
public UserGroup getGroup() {
return userGroup;
}
}