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.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.infosec.ismp.manager.rmi.event.dao.IEventmoniinfoDao; import org.infosec.ismp.manager.rmi.event.dao.Status; import org.infosec.ismp.manager.rmi.event.dao.queryCondition.EventmoniinfoCondition; import org.infosec.ismp.manager.rmi.event.dao.queryResult.EventmoniinfoResult; import org.infosec.ismp.manager.rmi.event.modle.Eventmoniinfo; 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 EventmoniinfoDao extends HibernateDaoSupport implements IEventmoniinfoDao { /** * 添加单个对象。 * @param data 需要添加的对象。 * */ public void add(Eventmoniinfo data) { getHibernateTemplate().save(data); } /** * 添加多个对象。 * * @param data * */ public void add(List<Eventmoniinfo> data) { getHibernateTemplate().saveOrUpdateAll(data); } /** * 删除指定的对象。 * @param data * */ public void delete(Eventmoniinfo 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 Eventmoniinfo 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()); } /** * 通过ID查询对象 * * @param id * */ public Eventmoniinfo get(Serializable id) { return (Eventmoniinfo) getHibernateTemplate().get(Eventmoniinfo.class, id); } /** * 修改指定的对象的内容,注意对象的主键不能修改。 * * @param data 需要修改的对象。 * * */ public void update(Eventmoniinfo data) { getHibernateTemplate().update(data); } /** * 同时修改多个对象。 * * @param data * */ public void update(List<Eventmoniinfo> data) { getHibernateTemplate().saveOrUpdateAll(data); } @SuppressWarnings("unchecked") public EventmoniinfoResult queryEventmoniinfoByCondition( final EventmoniinfoCondition condition) { return (EventmoniinfoResult) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { EventmoniinfoResult res = new EventmoniinfoResult(); Page page = condition.getPage(); Page p = new Page(); Criteria criteria = session.createCriteria(Eventmoniinfo.class); if (condition.getBureauId()!=null && condition.getBureauId()>0) { criteria.add(Restrictions.eq("bureauId", condition.getBureauId())); } if (condition.getEventType()!=null && condition.getEventType().length()>0) { String str = condition.getEventType(); criteria.add(Restrictions.like("eventType", "%" + str + "%")); } if (condition.getIpAddress()!=null && condition.getIpAddress().length()>0) { String str = condition.getIpAddress(); criteria.add(Restrictions.eq("ipAddress",str)); } if (condition.getStartTime()!=null && condition.getEndTime()!=null) { criteria.add(Restrictions.between("time", condition.getStartTime(), condition.getEndTime())); }else if (condition.getStartTime() != null) { criteria.add(Restrictions.ge("time", condition.getStartTime())); } else if (condition.getEndTime() != null) { criteria.add(Restrictions.le("time", condition.getEndTime())); } // 2010-6-8 -------------------- criteria.addOrder(Order.desc("time")); // /------------------------- int totalCount = ((Integer) criteria.setProjection( Projections.rowCount()).uniqueResult()).intValue(); if (totalCount == 0) { res.setStatus(Status.NORESULT); return res; } criteria.setProjection(null); int startIndex = page.getEveryPage() * (page.getCurrentPage() - 1); p.setBeginIndex(startIndex + 1); criteria.setFirstResult(startIndex); criteria.setMaxResults(page.getEveryPage()); p = PageUtil.createPage(page.getEveryPage(), page.getCurrentPage(), totalCount); List<Eventmoniinfo> list = criteria.list(); res.setPage(p); res.setResults(list); res.setStatus(Status.SUCCESS); return res; } }); } }