package edu.sjtu.infosec.ismp.manager.RAM.dao.impl; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Expression; import org.hibernate.criterion.Order; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.AM.model.AssetDeviceBO; import edu.sjtu.infosec.ismp.manager.ERM.model.RespInfoBO; import edu.sjtu.infosec.ismp.manager.RAM.dao.AssetDao; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoAsse; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDicAsseKind; import edu.sjtu.infosec.ismp.manager.comm.model.page.Page; import edu.sjtu.infosec.ismp.security.Domain; /** * 数据层 资产录入Dao实现类. */ public class AssetDaoImpl extends HibernateDaoSupport implements AssetDao { /** * 查询资产信息 * 资产编号 * @return 资产信息对象 **/ public AsseInfoAsse find(String assetCode) { AsseInfoAsse asseInfoAsse = null; List asseInfoAsseList = getHibernateTemplate().find( "from AsseInfoAsse asse where asse.assetCode = ?", assetCode); if(asseInfoAsseList!=null && asseInfoAsseList.size()>0) { asseInfoAsse = (AsseInfoAsse) asseInfoAsseList.get(0); } return asseInfoAsse; } public Object[] findByDWR(String assetCode) { Object[] asseInfoAsse = null; List asseInfoAsseList = getHibernateTemplate().find( "select id, assetCode, asseInfoProjId, assetName, asseInfoBusiId, importance, memo, respMan, ip from AsseInfoAsse asse where asse.assetCode = ?", assetCode); if(asseInfoAsseList!=null && asseInfoAsseList.size()>0) { asseInfoAsse = (Object[]) asseInfoAsseList.get(0); } return asseInfoAsse; } /** * 查询资产信息 * * @param id * 资产id * @return 资产信息对象 */ public AsseInfoAsse find(Integer id) { AsseInfoAsse asseInfoAsse = new AsseInfoAsse(); asseInfoAsse = (AsseInfoAsse) getHibernateTemplate().load(AsseInfoAsse.class, id); return asseInfoAsse; } /** * 查询该委办局资产信息 * @return 资产信息对象列表 **/ @SuppressWarnings("unchecked") public List<AsseInfoAsse> find(Domain domain,AsseKnowDicAsseKind asseKind) { Criteria criteria = getSession().createCriteria(AsseInfoAsse.class, "asse"); if(domain != null) { criteria.add(Expression.eq("asse.domain", domain)); } if(asseKind != null) { criteria.add(Expression.eq("asse.asseKind", asseKind)); } return criteria.list(); } @SuppressWarnings("unchecked") public List<AsseInfoAsse> find1(Domain domain, AsseKnowDicAsseKind asseKind) { String hql = "select assetCode, assetName from AsseInfoAsse"; if(domain != null) { hql+=" where domain.id = "+domain.getId(); }if(asseKind != null) { hql+=" and asseKind.id = '"+asseKind.getId()+"' "; } List list = getHibernateTemplate().find(hql); return list; } /** * 查询该委办局资产信息 * @return asset_device对象列表 **/ @SuppressWarnings("unchecked") public List<AssetDeviceBO> findFromAssetModule(){ Query query = getSession().createQuery("select assetDevice " + "from AssetDeviceBO assetDevice " + "where assetDevice.sn NOT IN (select asse.assetCode from AsseInfoAsse asse)"); return query.list(); } /** * 查询该委办局资产信息记录数 * @return 业务信息记录数 **/ @SuppressWarnings({ "deprecation", "unchecked" }) public Long getCount(Domain domain, AsseKnowDicAsseKind asseKind) { String hql = "select count(id) from AsseInfoAsse ri where 1=1 "; if(domain != null){ hql = hql + " and ri.domain.id="+domain.getId(); } if(asseKind != null){ hql = hql + " and ri.asseKind.id="+asseKind.getId(); } System.out.println("===findAllNum===="+hql); List<Long> list = getHibernateTemplate().find(hql); long num = 0; if(list!=null && list.size()>0){ num = list.get(0); } return num; /*Criteria criteria=this.getSession().createCriteria(AsseInfoAsse.class); if(null!=domain){ criteria.add(Expression.eq("domain", domain)); } if(null!=asseKind){ criteria.add(Expression.eq("asseKind", asseKind)); } List<AsseInfoAsse> list = (List<AsseInfoAsse>)criteria.list(); return list.size();*/ } /** * 删除资产信息 * 资产信息 **/ public void remove(AsseInfoAsse asseInfoAsse) { getHibernateTemplate().delete(asseInfoAsse); } /** * 批量删除资产信息 * 资产信息对象列表 **/ public void remove(List<AsseInfoAsse> asseInfoAsseList) { getHibernateTemplate().deleteAll(asseInfoAsseList); } /** * 保存/更新资产信息 * 资产信息 **/ public void saveOrUpdate(AsseInfoAsse asseInfoAsse) { getHibernateTemplate().saveOrUpdate(asseInfoAsse); } /** * 查询资产信息 * ip地址 * 资产信息对象 */ public List<AsseInfoAsse> findByIP(String ip) { List<AsseInfoAsse> asseInfoAsseList = (List<AsseInfoAsse>)getHibernateTemplate().find("from AsseInfoAsse asse where asse.ip = ?", ip); return asseInfoAsseList; } /** * 查询该委办局资产信息记录 * 被测机构 * 资产信息列表 */ public List<AsseInfoAsse> listAsse(Domain domain) { Criteria criteria = getSession().createCriteria(AsseInfoAsse.class, "asse") .addOrder(Order.asc("id")); if(domain != null) { criteria.add(Expression.eq("asse.domain", domain)); } return criteria.list(); } /** * 查询该委办局资产重要性为高的资产数目 * @param inst * 被测机构 * @return 重要性为高的资产数目 */ public Long statHighImpoAsse(Domain domain) { Long count = 0L; List list = getHibernateTemplate().find("select COUNT(importance) " + "from AsseInfoAsse " + "where importance='H' and domain=?",domain); if(list!=null && list.size()>0) { count = (Long) list.get(0); } return count; } /** * 查询该委办局资产重要性为中的资产数目 * @param inst * 被测机构 * @return 重要性为高的资产数目 */ public Long statMiddImpoAsse(Domain domain) { Long count = 0L; List list = getHibernateTemplate().find("select COUNT(importance) " + "from AsseInfoAsse " + "where importance='M' and domain=?",domain); if(list!=null && list.size()>0) { count = (Long) list.get(0); } return count; } /** * 查询该委办局资产重要性为低的资产数目 * @param inst * 被测机构 * @return 重要性为高的资产数目 */ public Long statLowImpoAsse(Domain domain) { Long count = 0L; List list = getHibernateTemplate().find("select COUNT(importance) " + "from AsseInfoAsse " + "where importance='L' and domain=?",domain); if(list!=null && list.size()>0) { count = (Long) list.get(0); } return count; } public Object[] listDistinctAssetName(Domain domain) { List list = getHibernateTemplate().find("select DISTINCT assetName from AsseInfoAsse" + " where domain=?", domain); return list.toArray(); } public Integer getMaxId() { Integer maxId = 1; List list = getHibernateTemplate().find("select max(id) from AsseInfoAsse"); if(list!=null && list.size()>0) { maxId = (Integer) list.get(0); } return maxId; } public AsseKnowDicAsseKind findAsseKind(String assetKindIdSelect) { AsseKnowDicAsseKind asseKind = null; List asseKindList = getHibernateTemplate().find( "from AsseKnowDicAsseKind asseKind where asseKind.assetKindId = ?", assetKindIdSelect); if(asseKindList!=null && asseKindList.size()>0) { asseKind = (AsseKnowDicAsseKind) asseKindList.get(0); } return asseKind; } /** * 查询该委办局资产信息分页记录 **/ @SuppressWarnings("unchecked") public List<AsseInfoAsse> findAll(int startResult, int maxResult,Domain domain, AsseKnowDicAsseKind asseKind) { Criteria criteria = getSession().createCriteria(AsseInfoAsse.class, "asse") .addOrder(Order.desc("id")) .setFirstResult(startResult) .setMaxResults(maxResult); if(domain != null) { criteria.add(Expression.eq("asse.domain", domain)); } if(asseKind != null) { criteria.add(Expression.eq("asse.asseKind", asseKind)); } return (List<AsseInfoAsse>)criteria.list(); } public List<AsseInfoAsse> findByAsseKindId(String domain, String asseKindId) { String hql = "select assetCode, assetName from AsseInfoAsse"; if(domain != null) { hql+=" where domain.id = "+domain; }if(asseKindId != null) { hql+=" and asseKind.assetKindId = '"+asseKindId+"' "; } List list = getHibernateTemplate().find(hql); return list; } }