package org.webpieces.plugins.hibernate.app.dbo;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.NoResultException;
import javax.persistence.OneToMany;
import javax.persistence.Query;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="USERS",
indexes={
@Index(name="email", columnList="email", unique=true)
}
)
@NamedQueries({
@NamedQuery(name = "findAllUsers", query = "select u from UserTestDbo as u"),
@NamedQuery(name = "findByEmailId", query = "select u from UserTestDbo as u where u.email=:email"),
@NamedQuery(name = "findByIdWithRoleJoin", query = "select u from UserTestDbo as u left join fetch u.roles as r where u.id = :id")
})
public class UserTestDbo {
@Id
@SequenceGenerator(name="user_id_gen",sequenceName="user_sequence" ,initialValue=1,allocationSize=10)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="user_id_gen")
private Integer id;
@Column(unique = true)
private String email;
private String phone;
private String password;
private String name;
private String firstName;
private String lastName;
@ManyToOne(fetch=FetchType.LAZY)
private UserTestDbo manager;
@OneToMany(mappedBy = "manager")
private List<UserTestDbo> employees = new ArrayList<UserTestDbo>();
private boolean isNewPasswordChange;
//@Convert( converter = LevelEducationConverter.class )
private LevelEducation levelOfEducation = null;
@OneToMany(mappedBy = "user")
private List<UserRoleDbo> roles = new ArrayList<UserRoleDbo>();
public boolean isNewPasswordChange() {
return isNewPasswordChange;
}
public void setNewPasswordChange(boolean isNewPasswordChange) {
this.isNewPasswordChange = isNewPasswordChange;
}
public Integer getId() {
return id;
}
public List<UserTestDbo> getEmployees() {
return employees;
}
public void setEmployees(List<UserTestDbo> employees) {
this.employees = employees;
}
public void addEmployee(UserTestDbo employee) {
this.employees.add(employee);
}
public void deleteEmployee(UserTestDbo employee) {
this.employees.remove(employee);
}
public void setId(Integer id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public UserTestDbo getManager() {
return manager;
}
public void setManager(UserTestDbo manager) {
this.manager = manager;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LevelEducation getLevelOfEducation() {
return levelOfEducation;
}
public void setLevelOfEducation(LevelEducation levelOfEducation) {
this.levelOfEducation = levelOfEducation;
}
public List<UserRoleDbo> getRoles() {
return roles;
}
public void setRoles(List<UserRoleDbo> roles) {
this.roles = roles;
}
@SuppressWarnings("unchecked")
public static List<UserTestDbo> findAllField(EntityManager mgr) {
Query query = mgr.createNamedQuery("findAll");
return query.getResultList();
}
public static UserTestDbo findByEmailId(EntityManager mgr, String email) {
Query query = mgr.createNamedQuery("findByEmailId");
query.setParameter("email", email);
try {
return (UserTestDbo) query.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
public static UserTestDbo findWithJoin(EntityManager mgr, int id) {
Query query = mgr.createNamedQuery("findByIdWithRoleJoin");
query.setParameter("id", id);
try {
return (UserTestDbo) query.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
}