package edu.sjtu.infosec.ismp.manager.VPM.pm.dao.impl; import java.util.Date; import java.util.LinkedList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.VPM.pm.comm.HtmlFactory; import edu.sjtu.infosec.ismp.manager.VPM.pm.dao.PatchTacticsDao; import edu.sjtu.infosec.ismp.manager.VPM.pm.model.PatchUpdateTactics; public class PatchTacticsDaoImpl extends HibernateDaoSupport implements PatchTacticsDao { /** * 根据条件查询 PatchUpdateTactics 返回分页数,即查询条件集合 * @param patchTactics 对象 * @param startResult 起始 * @param maxResult 显示个数 * @param startDate 起始时间 * @param endDate 末时间 * @return */ @SuppressWarnings("unchecked") public LinkedList getTacticsInfos(PatchUpdateTactics patchTactics, Integer startResult, Integer maxResult, Date startDate, Date endDate) { Criteria criteria = getCriteria(); getCommPatchTacticsInfos(criteria,patchTactics); getCommPatchTacticsInfos(criteria,startDate,endDate); return getCommPatchTacticsInfos(criteria,startResult,maxResult); } public String getGlobalPatchUpdateTactics() { String hql = "select proValue from DefProConfig dp where dp.proName = 'globalPatchUpdateTactics'"; Session session = this.getSession(); Query query = session.createQuery(hql); return (String)query.uniqueResult(); } public void setGlobalPatchUpdateTactics(int patchUpdateTacticsId) { String hql = "update DefProConfig dp set dp.proValue =:patchUpdateTacticsId where dp.proName = 'globalPatchUpdateTactics'"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setParameter("patchUpdateTacticsId", String.valueOf(patchUpdateTacticsId)); query.executeUpdate(); } public String getDefAddress() { String hql = "select proValue from DefProConfig dp where dp.proName = 'defAddress'"; Session session = this.getSession(); Query query = session.createQuery(hql); return (String)query.uniqueResult(); } public void saveOrUpdatePatchUpdateTactics( PatchUpdateTactics patchUpdateTactics) { getHibernateTemplate().saveOrUpdate(patchUpdateTactics); getHibernateTemplate().flush(); } public void delPatchUpdateTactics(int stId){ String hql = "delete from PatchUpdateTactics put where put.id =:stId"; Query query = getSession().createQuery(hql); query.setParameter("stId", stId); query.executeUpdate(); } public PatchUpdateTactics getPachStrategyById(int pachStrategyId) { String hql = "from PatchUpdateTactics put where put.id =" + pachStrategyId; Session session = this.getSession(); Query query = session.createQuery(hql); return (PatchUpdateTactics)query.uniqueResult(); } @SuppressWarnings("unchecked") public List<PatchUpdateTactics> getAllPachStrategy() { return getCriteria().list(); } /** * 获取查询对象 * @return */ private Criteria getCriteria() { Session session = this.getSession(); Criteria criteria= session.createCriteria(PatchUpdateTactics.class); releaseSession(session); return criteria; } /** * 根据日期查询 * @param criteria 对象 * @param startDate 起始时间 * @param endDate 末时间 * @return */ private void getCommPatchTacticsInfos(Criteria criteria, Date startDate,Date endDate) { if(!(startDate==null) && !(endDate == null)) { criteria.add(Restrictions.ge("lastChangeTime", startDate)).add(Restrictions.le("lastChangeTime", endDate)); } if(!(startDate == null) && endDate == null) { criteria.add(Restrictions.ge("lastChangeTime", startDate)).add(Restrictions.le("lastChangeTime", new Date())); } if(startDate == null && !(endDate == null)) { criteria.add(Restrictions.le("lastChangeTime", endDate)); } } /** * 根据PatchTactics 查询 * @param criteria 对象 * @param PatchTactics 对象 * @return */ private Criteria getCommPatchTacticsInfos(Criteria criteria,PatchUpdateTactics patchTacties) { if(!(patchTacties == null)) { if(HtmlFactory.isNotEmpty(patchTacties.getName())) { criteria.add(Restrictions.like("name", "%"+patchTacties.getName()+"%")); } } return criteria; } /** * 查询分页 * @param criteria Criteriad 对象 * @param startResult 起始条数 * @param maxResult 显示多少条 * @return */ @SuppressWarnings("unchecked") private LinkedList getCommPatchTacticsInfos(Criteria criteria,Integer startResult, Integer maxResult) { criteria.setProjection(Projections.count("id")); List listCount = criteria.list(); if(startResult > -1) { criteria.setFirstResult(startResult); } if(maxResult > -1) { criteria.setMaxResults(maxResult); } criteria.setProjection(null); List list = criteria.list(); LinkedList linkList = new LinkedList(); linkList.addFirst(listCount.get(0)); linkList.addLast(list); return linkList; } }