package edu.sjtu.infosec.ismp.manager.RAM.service;
import java.util.List;
import java.util.Map;
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;
import edu.sjtu.infosec.ismp.manager.comm.model.page.PageResult;
/**
* 应用层 动态资产漏洞分析Manager接口.
*
*/
public interface DynaLeakService {
/**
* 保存/更新动态资产漏洞
*
* @param dynaLeak
* 动态资产漏洞
**/
void saveOrUpdate(AsseKnowDynaLeak dynaLeak);
/**
* 批量保存/更新动态资产漏洞
*
* @param dynaLeakList
* 动态资产漏洞列表
**/
void batchSaveOrUpdate(List<AsseKnowDynaLeak> dynaLeakList);
/**
* 查询动态资产漏洞
*
* @param id
* 动态资产漏洞id
* @return 动态资产漏洞对象
**/
AsseKnowDynaLeak find(String 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 asseInfoProj
* 测评项目
* @return 是否已存在
**/
boolean checkExitDynaLeakList(AsseInfoProj asseInfoProj);
/**
* 保存动态资产漏洞
* @param asseInfoProj
* 测评项目
**/
void saveDynaLeak(AsseInfoProj asseInfoProj);
/**
* 漏洞与资产关联
* @param paraMap
* 参数Map
**/
void relateLeakToAssert(Map paraMap);
}