package org.infosec.ismp.manager.rmi.event.dao.impl; import java.io.Serializable; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.infosec.ismp.manager.rmi.event.dao.IEventcorrruleDao; import org.infosec.ismp.manager.rmi.event.dao.queryResult.EventcorrruleResult; import org.infosec.ismp.manager.rmi.event.modle.Eventcorrrule; import org.infosec.ismp.manager.rmi.event.util.Page; import org.infosec.ismp.manager.rmi.event.util.PageUtil; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * 关联规则表的DAO实现 * @author wudengke 2009-6-29 * */ public class EventcorrruleDao extends HibernateDaoSupport implements IEventcorrruleDao { /** * 添加单个对象。 * @param data 需要添加的对象。 * */ public void add(Eventcorrrule data) { getHibernateTemplate().save(data); } /** * 添加多个对象。 * * @param datas * */ public void add(List<Eventcorrrule> datas) { getHibernateTemplate().saveOrUpdateAll(datas); } /** * 删除指定的对象。 * @param data * */ public void delete(Eventcorrrule data) { getHibernateTemplate().delete(data); } /** * 删除指定的多个对象。 * @param data * */ public void delete(List<Serializable> ids) { Iterator<Serializable> it = ids.iterator(); StringBuffer buffer = new StringBuffer(); buffer.append("delete from Eventcorrrule e where e.id in ("); while(it.hasNext()){ buffer.append("?"); it.next(); if(it.hasNext()){ buffer.append(","); } } buffer.append(")"); getHibernateTemplate().bulkUpdate(buffer.toString(),ids.toArray()); } /** * 通过查询Eventcorrrule对象 * * @param id * */ public Eventcorrrule get(Serializable id) { return (Eventcorrrule) getHibernateTemplate().get(Eventcorrrule.class, id); } /** * 修改指定的对象的内容,注意对象的主键不能修改。 * * @param data 需要修改的对象。 * * */ public void update(Eventcorrrule data) { getHibernateTemplate().update(data); } /** * 同时修改多个对象。 * * @param data * */ public void update(List<Eventcorrrule> data) { getHibernateTemplate().saveOrUpdateAll(data); } /** * 根据分页显示所有规则 * @param page * @return */ @SuppressWarnings("unchecked") public EventcorrruleResult queryAllByPage(final Page page,final String userName) { return (EventcorrruleResult) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { EventcorrruleResult res = new EventcorrruleResult(); Criteria criteria = session.createCriteria(Eventcorrrule.class); if (userName != null && userName.length() > 0) { criteria.add(Restrictions.eq("userName", userName)); } int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()) .uniqueResult()).intValue(); criteria.setProjection(null); int startIndex = page.getEveryPage() * (page.getCurrentPage() - 1); criteria.setFirstResult(startIndex); criteria.setMaxResults(page.getEveryPage()); Page p = PageUtil.createPage(page.getEveryPage(), page.getCurrentPage(), totalCount); List<Eventcorrrule> list = criteria.list(); res.setEvcors(list); res.setPage(p); return res; } }); } /** * 根据多个ID查询记录 * @param ruleids * @return List Eventcorrrule */ @SuppressWarnings("unchecked") public List<Eventcorrrule> queryEventcorule(final String[] ruleids) { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(Eventcorrrule.class); Integer[] ints = new Integer[ruleids.length]; for(int i = 0; i < ints.length; i ++){ ints[i] = Integer.parseInt(ruleids[i]); } criteria.add(Restrictions.in("id", ints)); List<Eventcorrrule> list = criteria.list(); return list; } }); } }