package org.infosec.ismp.manager.rmi.event.dao.impl; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; 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.ProjectionList; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.infosec.ismp.manager.rmi.event.dao.IEventGetTopoDao; import org.infosec.ismp.manager.rmi.event.dao.Status; import org.infosec.ismp.manager.rmi.event.dao.queryCondition.EventGetTopoCondition; import org.infosec.ismp.manager.rmi.event.dao.queryResult.EventGetTopoResult; import org.infosec.ismp.manager.rmi.event.util.Page; import org.infosec.ismp.manager.rmi.event.util.PageUtil; import org.infosec.ismp.manager.rmi.tm.manager.model.NodeEntity; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * 从拓朴数据库取数据 * * @author wudengke 2009-6-29 * */ public class EventGetTopoDao extends HibernateDaoSupport implements IEventGetTopoDao { /** * 获取TOPO设备IP和MAC地址和设备名 * * @return */ @SuppressWarnings("unchecked") public List<Object> getTopoInfo() { List<Object> list2 = new ArrayList<Object>(); String hql = "select tp.ipAddress,tp.netCardCode,tp.name,tp.domain.id,tp.domain.domainName " + "from NodeEntity tp where tp.ipAddress is not null";// and tp.netCardCode is not null "; List<Object> list = getHibernateTemplate().find(hql); if (list.size() > 0) { for (int i = 0; i < list.size(); i++) { Object[] obj = (Object[]) list.get(i); Object[] oo = new Object[7]; oo[0] = obj[0]; oo[1] = obj[1]; oo[2] = obj[2]; oo[3] = 1; oo[4] = 1; oo[5] = obj[3]; oo[6] = obj[4]; list2.add(oo); } } return list2; } /** * 分页获取TOPO设备IP和MAC地址和设备名 * * @return */ @SuppressWarnings("unchecked") public EventGetTopoResult getTopoInfo(final EventGetTopoCondition condition) { return (EventGetTopoResult) getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { EventGetTopoResult res = new EventGetTopoResult(); Page page = condition.getPage(); Criteria criteria = session .createCriteria(NodeEntity.class); if (condition.getBureauId() != null && condition.getBureauId().length > 0) { criteria.add(Restrictions.in("bureauId", condition .getBureauId())); } if (condition.getNetCardCodes() != null && condition.getNetCardCodes().length > 0) { criteria.add(Restrictions.in("deviceIp", condition .getNetCardCodes())); } criteria.add(Restrictions.isNotNull("deviceIp")); // criteria.add(Restrictions.isNotNull("netCardCode")); 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); criteria.setFirstResult(startIndex); criteria.setMaxResults(page.getEveryPage()); Page p = PageUtil.createPage(page.getEveryPage(), page .getCurrentPage(), totalCount); ProjectionList projectionList = Projections .projectionList(); projectionList.add(Projections.projectionList().add( Projections.property("deviceIp")).add( Projections.property("netCardCode")).add( Projections.property("deviceName")).add( Projections.property("bureauId"))); criteria.setProjection(projectionList); criteria.addOrder(Order.asc("bureauId")); res.setDatas(criteria.list()); res.setPage(p); return res; } }); } /** * 统计域事件总量 * * @return */ @SuppressWarnings("unchecked") public List<Object> StatisticsDomain(Timestamp starttime, Timestamp endtime,Integer bureauId) { Object[] obj = new Object[] { starttime, endtime }; String hql = "select c.viewName as viewName, sum(b.curr_value) as total_value " + "from TopoManageDevice a, Eventmoni b, TopoManageView c " + "where a.nodeype=1 and a.deviceIp=b.faci_ip and a.parentViewId=c.viewId " + "and b.time between ? and ? "; if (bureauId!=null && bureauId > 0) { hql = hql + " and b.bureauId=? "; obj = new Object[] { starttime, endtime, bureauId}; } hql = hql + " group by a.parentViewId"; List<Object> list = getHibernateTemplate().find(hql, obj); return list; } @SuppressWarnings("unchecked") public NodeEntity queryByIpBureauId(final String ip,final Integer bureauId) { return (NodeEntity) getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session .createCriteria(NodeEntity.class); criteria.add(Restrictions.eq("deviceIp", ip)); criteria.add(Restrictions.eq("bureauId", bureauId)); NodeEntity res = (NodeEntity) criteria.list().get(0); return res; } }); } }