package edu.sjtu.infosec.ismp.manager.RAM.dao;
import java.util.List;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoAsse;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoProj;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaLeak;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
/**
* 数据层 动态资产漏洞分析Dao访问接口.
*
**/
public interface DynaLeakDao {
/**
* 保存/更新动态资产漏洞
*
* @param dynaLeak
* 动态资产漏洞
**/
void saveOrUpdate(AsseKnowDynaLeak dynaLeak);
/**
* 批量保存/更新动态资产漏洞
*
* @param dynaLeakList
* 动态资产漏洞列表
**/
void batchSaveOrUpdate(List<AsseKnowDynaLeak> dynaLeakList);
/**
* 查询动态资产漏洞
*
* @param id
* 动态资产漏洞id
* @return 动态资产漏洞对象
**/
AsseKnowDynaLeak find(Integer id);
/**
* 查询动态资产漏洞数量
* @param asseInfoProj
* 测评项目
* @param asseInfoAsse
* 资产
* @return 动态资产漏洞数量
**/
int getCount(AsseInfoProj asseInfoProj,List<AsseInfoAsse> asseInfoAsse);
/**
* 查询动态资产漏洞分页记录
* @param page
* 分页对象
* @param asseInfoProj
* 测评项目
* @param asseInfoAsse
* 资产
* @return 分页记录列表
**/
List<AsseKnowDynaLeak> listDynaLeakPage(int startResult, int maxResult,AsseInfoProj asseInfoProj, List<AsseInfoAsse> asseInfoAsse);
/**
* 查询动态资产漏洞记录
* @param asseInfoProj
* 测评项目
* @return 漏洞记录列表
**/
List<AsseKnowDynaLeak> listDynaLeak(AsseInfoProj asseInfoProj);
/**
* 检查是否已存在该资产漏洞
* @param asseInfoProjId
* 测评项目Id
* @param asseInfoAsse
* 关联资产
* @param pluginId
* 插件Id
* @param vulId
* 漏洞Id
* @return 是否已存在
**/
boolean checkExitDynaLeak(Integer asseInfoProjId, AsseInfoAsse asseInfoAsse, String pluginId, String vulId);
/**
* 查询严重性为高的动态资产漏洞数目
* @param asseInfoProjId
* 测评项目Id
* @return 严重性为高的动态资产漏洞数目
*/
Long statHighRiskLeak(Integer asseInfoProjId);
/**
* 查询严重性为中的动态资产漏洞数目
* @param asseInfoProjId
* 测评项目Id
* @return 严重性为中的动态资产漏洞数目
*/
Long statMiddRiskLeak(Integer asseInfoProjId);
/**
* 查询严重性为低的动态资产漏洞数目
* @param asseInfoProjId
* 测评项目Id
* @return 严重性为低的动态资产漏洞数目
*/
Long statLowRiskLeak(Integer asseInfoProjId);
/**
* 不同资产各等级漏洞数目统计
* @param asseInfoProj
* 测评项目
* @param asseInfoAsse
* 资产
* @param seriLeve
* 严重级别
* @return 严重性为低的动态脆弱点数目
*/
Integer statDynaLeakNum(AsseInfoProj asseInfoProj, AsseInfoAsse asseInfoAsse, String seriLeve);
}