package edu.sjtu.infosec.ismp.manager.SYSM.config.dao.lm.dLog.impl; import java.util.List; import org.hibernate.criterion.Expression; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Example; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.SYSM.config.dao.lm.dLog.SnmpTrapSourceDao; import edu.sjtu.infosec.ismp.manager.SYSM.config.model.lm.dLog.SnmpTrapSource; import edu.sjtu.infosec.ismp.manager.SYSM.config.model.lm.dLog.SnmpTrapSourceType; import edu.sjtu.infosec.ismp.security.Domain; @SuppressWarnings("deprecation") public class SnmpTrapSourceDaoImpl extends HibernateDaoSupport implements SnmpTrapSourceDao { public Integer addSnmpTrapSource(SnmpTrapSource snmpTrapSource) throws Exception { try{ this.getSession().save(snmpTrapSource); return 1; }catch (Exception e) { return 0; } } public Integer delSnmpTrapSource(SnmpTrapSource snmpTrapSource) throws Exception { try{ this.getSession().delete(snmpTrapSource); return 1; }catch (Exception e) { return 0; } } @SuppressWarnings("unchecked") public List<SnmpTrapSource> getAllSnmpTrapSource( SnmpTrapSource snmpTrapSource, List<Domain> domain, Integer pageNo, Integer pageRowNum) throws Exception { Criteria criteria = spliceCriteria(snmpTrapSource,domain,pageNo,pageRowNum); return criteria.list(); } public Integer getAllSnmpTrapSourceCount(SnmpTrapSource snmpTrapSource, List<Domain> domain) throws Exception { Criteria criteria = spliceCriteria(snmpTrapSource,domain,null,null); criteria.setProjection(Projections.rowCount()); return (Integer)criteria.uniqueResult(); } @SuppressWarnings("unchecked") public List<SnmpTrapSourceType> getAllSnmpTrapSourceType() throws Exception { Query snmpTrapQuery = this.getSession().createQuery("from SnmpTrapSourceType"); return snmpTrapQuery.list(); } public SnmpTrapSource loadObject(String id) throws Exception { return (SnmpTrapSource) this.getSession().get(SnmpTrapSource.class, Integer.valueOf(id)); } public Integer updateSnmpTrapSource(SnmpTrapSource snmpTrapSource) throws Exception { try{ this.getSession().update(snmpTrapSource); return 1; }catch (Exception e) { return 0; } } /** * spliceCriteria decription : 带分页功能的多条件查询语句拼接 * @param sysLogSource * @param pageNo * @param pageRowNum * @return */ private Criteria spliceCriteria(SnmpTrapSource snmpTrapSource,List<Domain> domain, Integer pageNo,Integer pageRowNum) { Criteria criteria = getSession().createCriteria( SnmpTrapSource.class); if (snmpTrapSource != null) { // 产生范例对像 Example example = Example.create(snmpTrapSource); // 排除属性为null // example.excludeNone(); // 对String属性都用模糊匹配方式 example.enableLike(MatchMode.ANYWHERE); criteria.add(example); if(domain.size() > 0) criteria.add(Expression.in("domain",domain)); criteria.addOrder(Order.desc("createTime")); if(snmpTrapSource.getId() != null) { criteria.add(Expression.eq("id", snmpTrapSource.getId())); } } // 添加分页查询条件:起始页 if (null != pageNo) { criteria.setFirstResult(pageNo.intValue()); } // 添加分页查询条件:每页需要显示的数目 if (null != pageRowNum) { criteria.setMaxResults(pageRowNum.intValue()); } return criteria; } }