package edu.sjtu.infosec.ismp.manager.VPM.vm.dao.impl; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.VPM.vm.dao.VirusAlertStatDao; import edu.sjtu.infosec.ismp.manager.VPM.vm.model.TopClients; import edu.sjtu.infosec.ismp.manager.VPM.vm.model.TopVirus; import edu.sjtu.infosec.ismp.manager.VPM.vm.model.Virus; import edu.sjtu.infosec.ismp.manager.VPM.vm.model.VirusAlertsStat; import edu.sjtu.infosec.ismp.manager.VPM.vm.model.VirusClients; public class VirusAlertStatDaoImpl extends HibernateDaoSupport implements VirusAlertStatDao { public void addVirusAlertStat(VirusAlertsStat virusAlertStat) throws Exception { getHibernateTemplate().saveOrUpdate(virusAlertStat); } public void deleteVirusAlertStat(VirusAlertsStat virusAlertStat) throws Exception { getHibernateTemplate().delete(virusAlertStat); } public void updateVirusAlertStat(VirusAlertsStat virusAlertStat) throws Exception { getHibernateTemplate().saveOrUpdate(virusAlertStat); getHibernateTemplate().flush(); } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllVirusAlertStat() throws Exception { List<VirusAlertsStat> list = getHibernateTemplate().loadAll(VirusAlertsStat.class); return list; } public VirusAlertsStat findVirusAlertStatById(int id) throws Exception { VirusAlertsStat virusAlertStat = (VirusAlertsStat)getHibernateTemplate().get(VirusAlertsStat.class, id); return virusAlertStat; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas "; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " where (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; }else{ hql = hql + " where 1=1 "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public long findAllNumByVirusClients(VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public long findAllNumByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas "; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " where (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; }else{ hql = hql + " where 1=1 "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findKilledByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findKilledByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public long findKilledNumByVirusClients(VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public long findKilledNumByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findUnkilledByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id not in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findUnkilledByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id not in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<VirusAlertsStat> list = getHibernateTemplate().find(hql); return list; } @SuppressWarnings("unchecked") public long findUnkilledNumByVirusClients(VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id not in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public long findUnkilledNumByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { String hql = "select count(id) from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id not in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllVirusAlertStat(int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat order by lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas "; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " where (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; }else{ hql = hql + " where 1=1 "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findKilledByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findUnkilledByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas "; hql = hql +" where vas.killResult.id not in (4,6,14,15)"; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findAllByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findKilledByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public List<VirusAlertsStat> findUnkilledByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { String hql = "from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); hql = hql +" and vas.killResult.id not in (4,6,14,15)"; if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " order by vas.lastFindTime desc"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(startResult); query.setMaxResults(maxResult); List<VirusAlertsStat> list = query.list(); return list; } @SuppressWarnings("unchecked") public long findAllNum() throws Exception { String hql = "select count(id) from VirusAlertsStat"; List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; } @SuppressWarnings("unchecked") public List<TopVirus> findTopVirusCountByVirusClients( VirusClients virusClients, Timestamp startRecordTime, Timestamp endRecordTime, int topNum) throws Exception { String hql = "select sum(vcount) as virusCount,virus from VirusAlertsStat vas where vas.virusClients.id=" + virusClients.getId(); if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " group by vas.virus.id order by sum(vcount) desc"; // System.out.println("hql:="+hql); Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(0); query.setMaxResults(topNum); List<Object[]> oList = query.list(); List<TopVirus> list = null; if(oList!=null && oList.size()>0){ list = new ArrayList<TopVirus>(); for(Object[] o : oList){ TopVirus tv = new TopVirus(); tv.setVirusCount((Long)o[0]); tv.setVirus((Virus)o[1]); list.add(tv); } } return list; } @SuppressWarnings("unchecked") public List<TopVirus> findTopVirusCountByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime, int topNum) throws Exception { String hql = "select sum(vcount) as virusCount,virus from VirusAlertsStat vas where 1=1 "; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " group by vas.virus.id order by sum(vcount) desc"; // System.out.println("hql:="+hql); Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(0); query.setMaxResults(topNum); List<Object[]> oList = query.list(); List<TopVirus> list = null; if(oList!=null && oList.size()>0){ list = new ArrayList<TopVirus>(); for(Object[] o : oList){ TopVirus tv = new TopVirus(); tv.setVirusCount((Long)o[0]); tv.setVirus((Virus)o[1]); list.add(tv); } } return list; } @SuppressWarnings("unchecked") public List<TopClients> findTopClientsCountByVirusClientsList( List<VirusClients> virusClientsList, Timestamp startRecordTime, Timestamp endRecordTime, int topNum) throws Exception { String hql = "select sum(vcount) as virusCount,virusClients from VirusAlertsStat vas where 1=1 "; int i = 0; for(VirusClients vc : virusClientsList){ if(i == 0){ hql = hql + " and (vas.virusClients.id=" + vc.getId(); } if(i > 0){ hql = hql + " or vas.virusClients.id=" + vc.getId(); } i++; } if(i > 0){ hql = hql + ") "; } if(startRecordTime != null){ hql = hql + " and vas.lastFindTime>='"+startRecordTime+"' "; } if(endRecordTime != null){ hql = hql + " and vas.lastFindTime<='"+endRecordTime+"' "; } hql = hql + " group by vas.virusClients.id order by sum(vcount) desc"; // System.out.println("hql:="+hql); Session session = this.getSession(); Query query = session.createQuery(hql); query.setFirstResult(0); query.setMaxResults(topNum); List<Object[]> oList = query.list(); List<TopClients> list = null; if(oList!=null && oList.size()>0){ list = new ArrayList<TopClients>(); for(Object[] o : oList){ TopClients tc = new TopClients(); tc.setVirusCount((Long)o[0]); tc.setVirusClients((VirusClients)o[1]); list.add(tc); } } return list; } }