package edu.sjtu.infosec.ismp.manager.SYSM.user.self.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.dao.DomainDao;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
import edu.sjtu.infosec.ismp.security.Domain;
public class DomainDaoImpl extends HibernateDaoSupport implements DomainDao {
public void add(Domain domain) throws Exception {
getHibernateTemplate().saveOrUpdate(domain);
}
public void delete(Domain domain) throws Exception {
getHibernateTemplate().delete(domain);
}
public void update(Domain domain) throws Exception {
getHibernateTemplate().saveOrUpdate(domain);
getHibernateTemplate().flush();
}
public List<Domain> findAll() throws Exception {
List<Domain> list = getHibernateTemplate().loadAll(Domain.class);
return list;
}
@SuppressWarnings("unchecked")
public long findAllNum() throws Exception {
String hql = "select count(id) from Domain d";
List<Long> list = getHibernateTemplate().find(hql);
long num = 0;
if(list!=null && list.size()>0){
num = list.get(0);
}
return num;
}
public Domain findById(int id) throws Exception {
Domain domain = (Domain)getHibernateTemplate().get(Domain.class, id);
return domain;
}
public int getCountByParam(Domain domain) throws Exception {
Criteria cri = termMaker(domain);
return ((Integer)cri.setProjection(Projections.rowCount()).uniqueResult()).intValue();
}
public List<Domain> findByParam(Domain domain,Page page) throws Exception {
Criteria cri =termMaker(domain);
if(page!=null){
cri.setFirstResult(page.getBeginIndex());
cri.setMaxResults(page.getEveryPage());
}
return cri.list();
}
public Criteria termMaker(Domain domain) throws Exception {
Criteria cri = getSession().createCriteria(Domain.class);
if(domain.getDomainName()!=null && domain.getDomainName().trim().length()>0){
cri.add(Restrictions.like("domainName", "%"+domain.getDomainName()+"%"));
}
if(domain.getDescription()!=null && domain.getDescription().trim().length()>0){
cri.add(Restrictions.like("description", domain.getDescription()));
}
return cri;
}
//---------------------
public void saveOrUpdateAll(List<Domain> domains) throws Exception{
getHibernateTemplate().saveOrUpdateAll(domains);
}
public void deleteAll(List<Domain> domains) throws Exception{
getHibernateTemplate().deleteAll(domains);
}
}