UserDAOHibImpl.java
package com.sunilos.proj0.dao;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
import com.sunilos.proj0.dto.UserDTO;
/**
* User Data Access Object provides Database CRUD operations. It is implemented
* by plain Hibernate 3 API with Spring ORM.
*
* All methods propagate unchecked DataAccessException. It is a generic
* exception handling provided by Spring-DAO.
*
* If DataAccessException is propagated from method then declarative transaction
* is rolled back by Spring AOP.
*
* This is plain Hibernate 3 API implementation of DAO
*
* @version 1.0
* @since 1 Jan 2015
* @author Sunil Sahu
* @Copyright (c) Sunil Sahu
* @url www.sunilbooks.com
*/
@Repository(value = "userDao")
public class UserDAOHibImpl implements UserDAOInt {
@Autowired
private SessionFactory sessionFactory = null;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
private static Logger log = Logger.getLogger(UserDAOHibImpl.class);
public long add(UserDTO dto) throws DataAccessException {
log.debug("User Dao Add Started");
long pk = 0;
pk = (Long) sessionFactory.getCurrentSession().save(dto);
log.debug("User Dao Add End");
return pk;
}
public void update(UserDTO dto) throws DataAccessException {
log.debug("User Dao Update Started");
sessionFactory.getCurrentSession().update(dto);
log.debug("User Dao Update Ended");
}
public void delete(long id) throws DataAccessException {
log.debug("User Dao Delete Started");
UserDTO dto = findByPK(id);
sessionFactory.getCurrentSession().delete(dto);
log.debug("User Dao Delete Ended");
}
public UserDTO findByLogin(String login) throws DataAccessException {
log.debug("DAO findByLoginId Started");
UserDTO dto = null;
List list = (List) sessionFactory.getCurrentSession()
.createCriteria(UserDTO.class)
.add(Restrictions.eq("login", login)).list();
if (list.size() == 1) {
dto = (UserDTO) list.get(0);
}
log.debug("DAO findByLoginId End");
return dto;
}
public UserDTO findByPK(long pk) throws DataAccessException {
log.debug("DAO findByPK Started");
UserDTO dto = null;
dto = (UserDTO) sessionFactory.getCurrentSession().get(UserDTO.class,
pk);
log.debug("DAO findByPK End");
return dto;
}
/**
* Search Users with pagination
*
* @return list : List of Users
* @param dto
* : Search Parameters
* @param pageNo
* : Current Page No.
* @param pageSize
* : Size of Page
*
*/
public List search(UserDTO dto, int pageNo, int pageSize)
throws DataAccessException {
log.debug("DAO search Started");
List list = null;
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
UserDTO.class);
if (dto != null) {
if (dto.getId() > 0) {
criteria.add(Restrictions.eq("id", dto.getId()));
}
if (dto.getFirstName() != null && dto.getFirstName().length() > 0) {
criteria.add(Restrictions.like("firstName", dto.getFirstName()
+ "%"));
}
if (dto.getLastName() != null && dto.getLastName().length() > 0) {
criteria.add(Restrictions.like("lastName", dto.getLastName()
+ "%"));
}
if (dto.getLogin() != null && dto.getLogin().length() > 0) {
criteria.add(Restrictions.like("login", dto.getLogin() + "%"));
}
if (dto.getPassword() != null && dto.getPassword().length() > 0) {
criteria.add(Restrictions.like("password", dto.getPassword()
+ "%"));
}
if (dto.getGender() != null && dto.getGender().length() > 0) {
criteria.add(Restrictions.eq("gender", dto.getLastName()));
}
if (dto.getDob() != null && dto.getDob().getDate() > 0) {
criteria.add(Restrictions.eq("dob", dto.getDob()));
}
if (dto.getLastLogin() != null && dto.getLastLogin().getTime() > 0) {
criteria.add(Restrictions.eq("lastLogin", dto.getLastLogin()));
}
if (dto.getRoleId() > 0) {
criteria.add(Restrictions.eq("roleId", dto.getRoleId()));
}
if (dto.getUnSuccessfulLogin() > 0) {
criteria.add(Restrictions.eq("unSuccessfulLogin",
dto.getUnSuccessfulLogin()));
}
if (dto.getMobileNo() != null && dto.getMobileNo().length() > 0) {
criteria.add(Restrictions.eq("mobileNo", dto.getMobileNo()));
}
}
// if page size is greater than zero the apply pagination
if (pageSize > 0) {
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
}
list = criteria.list();
return list;
}
/**
* Search Users
*
* @return list : List of Users
* @param dto
* : Search Parameters
*/
public List search(UserDTO dto) throws DataAccessException {
return search(dto, 0, 0);
}
}