package dao.impl;
import dao.SiteUserDao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import pojo.SiteUser;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
/**
* User: yumingzhe
* Date: 5/19/12
* Time: 11:37 PM
*/
public class SiteUserDaoImpl implements SiteUserDao {
private HibernateTemplate template;
private SessionFactory factory;
public SessionFactory getFactory() {
return factory;
}
public void setFactory(SessionFactory factory) {
this.factory = factory;
}
public HibernateTemplate getTemplate() {
if (template == null) {
template = new HibernateTemplate(this.factory);
}
return template;
}
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
@Override
public SiteUser getSiteUserByInstituteId(final String instituteId) {
List siteUser = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser as s where s.instituteId= :instituteId").setString("instituteId", instituteId);
return query.list();
}
});
if (siteUser.size() == 0)
return null;
return (SiteUser) siteUser.get(0);
}
@Override
public SiteUser getSiteUserByEmail(final String email) {
List siteUser = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser as s where s.email= :email").setString("email", email);
return query.list();
}
});
if (siteUser.size() == 0)
return null;
return (SiteUser) siteUser.get(0);
}
@Override
public Serializable saveSiteUser(SiteUser siteUser) {
return this.getTemplate().save(siteUser);
}
@Override
public void updateSiteUser(SiteUser siteUser) {
this.getTemplate().update(siteUser);
}
@Override
public SiteUser getSiteUserByUID(final int uid) {
List siteUser = this.getTemplate().executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser as s where s.uid= :uid").setInteger("uid", uid);
return query.list();
}
});
if (siteUser.size() == 0)
return null;
return (SiteUser) siteUser.get(0);
}
@Override
public List<SiteUser> getAllSiteUser() {
List siteusers = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser ");
return query.list();
}
});
return siteusers;
}
@Override
public int getSiteUserTotalCount() {
List siteusers = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(" from SiteUser ");
return query.list();
}
});
return siteusers.size();
}
@Override
public int getSiteUserTotalPage(int pageSize) {
int totalCount = this.getSiteUserTotalCount();
int totalPage = ((totalCount + pageSize) - 1) / pageSize;
return totalPage;
}
@Override
public List<SiteUser> getSomeSiteUser(final int pageSize, final int currentPage) {
List users = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser as s where s.banned= :banned").setBoolean("banned", false);
query.setMaxResults(pageSize);
query.setFirstResult(pageSize * (currentPage - 1));
return query.list();
}
});
return users;
}
@Override
public List<SiteUser> getSiteUserByType(final String type) {
return this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from SiteUser as s where s.usertype= :type").setString("type", type);
return query.list();
}
});
}
}