package edu.sjtu.infosec.ismp.manager.SCM.dao.impl; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import edu.sjtu.infosec.ismp.manager.SCM.comm.BaseDaoHibernate; import edu.sjtu.infosec.ismp.manager.SCM.dao.MonitorDao; import edu.sjtu.infosec.ismp.manager.SCM.model.Monitor; import edu.sjtu.infosec.ismp.security.Domain; public class MonitorDaoImpl extends BaseDaoHibernate implements MonitorDao { @SuppressWarnings("unchecked") public List getMonitorList() { StringBuffer hql = new StringBuffer("from Monitor order by id "); return getHibernateTemplate().find(hql.toString()); } @SuppressWarnings("unchecked") public List getMonitorList(int startResult, int maxResult) { String hql = "from Monitor order by id "; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); return query.list(); } @SuppressWarnings("unchecked") public List getMonitorListByDomain(List<Domain> userDomainList,int startResult, int maxResult) { if(null == userDomainList || userDomainList.size() <= 0){ return null; } StringBuffer userDomainStr = new StringBuffer(); ///遍历userDomainList,将domain的id组成一个字符串 for (int i = 0; i < userDomainList.size(); i++) { if(i != (userDomainList.size()-1)){ userDomainStr.append(userDomainList.get(i).getId()).append(","); }else{ userDomainStr.append(userDomainList.get(i).getId()); } } StringBuffer hql = new StringBuffer("from Monitor a where 1=1 and a.domain.id in (" + userDomainStr + ") "); Query query = this.getSession().createQuery(hql.toString()); // query.setString("userDomainStr", userDomainStr.toString());///cc?:不知道为什么在HQL中这种方式不可以,赋值错误 query.setFirstResult(startResult); query.setMaxResults(maxResult); return query.list(); } public void saveOrUpdateMonitor(Monitor monitor) { this.getHibernateTemplate().saveOrUpdate(monitor); } @SuppressWarnings("unchecked") public int getCount() { int num = 0; List list=getHibernateTemplate().find("from Monitor"); if (null != list && list.size() > 0) { num = list.size(); } return num; } public int getCountByDomain(List<Domain> userDomainList) { if(null == userDomainList || userDomainList.size() <= 0){ return 0; } int num = 0; StringBuffer userDomainStr = new StringBuffer(); ///遍历userDomainList,将domain的id组成一个字符串 for (int i = 0; i < userDomainList.size(); i++) { if(i != (userDomainList.size()-1)){ userDomainStr.append(userDomainList.get(i).getId()).append(","); }else{ userDomainStr.append(userDomainList.get(i).getId()); } } StringBuffer hql = new StringBuffer("from Monitor a where 1=1 and a.domain.id in (" + userDomainStr + ") "); Query query = this.getSession().createQuery(hql.toString()); // query.setString("userDomainStr", userDomainStr.toString());///cc?:不知道为什么在HQL中这种方式不可以,赋值错误 if (null != query.list()&& query.list().size() > 0) { num = query.list().size(); } return num; } public Monitor getMonitorByNodeId(Integer nodeId) { StringBuffer hql = new StringBuffer("from Monitor a where 1 = 1 and a.nodeId = :nodeId"); Query query = this.getSession().createQuery(hql.toString()); query.setInteger("nodeId", nodeId); Monitor monitor = null; if(null != query.list() && query.list().size() > 0){ monitor = (Monitor) query.list().get(0); } return monitor; } // =========================================================== }