package tk.vovanok.webapplicationexample.dao;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Default;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import tk.vovanok.webapplicationexample.entities.User;
/**
*
* @author Vovan <vovanok1992 at gmail.com>
*/
@Default
@RequestScoped
public class UserDao extends GenericJpaDao<User, Long>
implements UserDaoInterface{
public UserDao() {
super(User.class);
}
@Override
public boolean exists(String userName) {
if(userName == null) return false;
Query q = getEntityManager().createQuery("select count(*) from User u where u.login = :userName")
.setParameter("userName", userName);
Long count =(Long) q.getSingleResult();
return count > 0;
}
@Override
public User loadByUserName(String userName) {
if(userName == null || userName.trim().equals("")) return null;
Query q = getEntityManager().createQuery("select u from User u where u.login = :userName").setParameter("userName", userName);
User u = null;
try {
u = (User) q.getSingleResult();
} catch (NoResultException e) {
//nop
}
return u;
}
@Override
public User findById(Long id) {
Session session = getEntityManager().unwrap(Session.class);
User u =(User) session.get(User.class, id);
return u;
}
@Override
public List<User> getUsers(int starstRow, int pageSize, String orderField, boolean asc) {
List<User> result = null;
Session session = getEntityManager().unwrap(Session.class);
Criteria c = session.createCriteria(User.class);
c.setFirstResult(starstRow);
c.setMaxResults(pageSize);
if(orderField!=null){
if(asc) c.addOrder(Order.asc(orderField));
else c.addOrder(Order.desc(orderField));
}
result = (List<User>) c.list();
return result;
}
}