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.AsseKnowDynaThre;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
import edu.sjtu.infosec.ismp.manager.comm.model.page.PageResult;
/**
* 应用层 动态威胁分析Manager接口.
*
*/
public interface ThreAnalService {
/**
* 保存/更新动态威胁
*
* @param dynaThre
* 动态威胁
**/
void saveOrUpdate(AsseKnowDynaThre dynaThre);
/**
* 批量保存/更新动态威胁
*
* @param dynaThres
* 动态威胁列表
**/
void batchSaveOrUpdate(List<AsseKnowDynaThre> dynaThres);
/**
* 删除动态威胁
*
* @param dynaThre
* 动态威胁
**/
void remove(AsseKnowDynaThre dynaThre);
/**
* 批量删除动态威胁
*
* @param dynaThres
* 动态威胁列表
**/
void remove(String[] dynaThreIds);
/**
* 查询动态威胁
*
* @param id
* 动态威胁id
* @return 动态威胁对象
**/
AsseKnowDynaThre find(String id);
Object[] findByDwr(String id);
/**
* 查询动态威胁数量
* @param asseInfoProj
* 测评项目
* @param asseInfoAsse
* 资产
* @return 动态威胁数量
**/
int getCount(AsseInfoProj asseInfoProj,AsseInfoAsse asseInfoAsse);
/**
* 查询动态威胁数量
* @param asseInfoProj
* 测评项目
* @param dynaVulnPointId
* 动态脆弱点Id
* @return 动态威胁数量
**/
int getCount(AsseInfoProj asseInfoProj,String dynaVulnPointId);
/**
* 查询动态威胁分页记录
* @param page
* 分页对象
* @param asseInfoProj
* 测评项目
* @param asseInfoAsse
* 资产
* @return 分页记录列表
**/
PageResult listDynaThrePage(Page page,AsseInfoProj asseInfoProj,AsseInfoAsse asseInfoAsse);
/**
* 查询脆弱点威胁关联分页记录
* @param page
* 分页对象
* @param asseInfoProj
* 测评项目
* @param dynaVulnPointId
* 动态脆弱点Id
* @return 分页记录列表
**/
PageResult listDynaVulnThrePage(Page page,AsseInfoProj asseInfoProj,String dynaVulnPointId);
List<AsseKnowDynaThre> listAllByVuln(int startResult, int maxResult,AsseInfoProj asseInfoProj, String vulnIdSelect);
/**
* 检查是否已存在该威胁
* @param asseInfoProjId
* 测评项目Id
* @param asseInfoAsse
* 关联资产
* @param asseKnowStatThreId
* 威胁Id
* @return 是否已存在
**/
boolean checkExitDynaVulnPoint(Integer asseInfoProjId, AsseInfoAsse asseInfoAsse, Integer asseKnowStatThreKindId, Integer asseKnowStatThreId);
/**
* 脆弱点分析后,返回该测评项目动态威胁列表
* @param asseInfoProjId
* 测评项目Id
* @return 是否已存在
**/
List listDynaThresByDynaVuln(String asseInfoProjId);
/**
* 脆弱点分析后,批量保存该测评项目动态威胁点
* @param asseInfoProjId
* 测评项目Id
**/
void batchSaveDynaThres(String asseInfoProjId);
/**
* 批量进行威胁与资产关联
* @param paraMaps
* 参数Map
* @param asseInfoProj
* 测评项目
**/
void relateToAssert(Map paraMaps, AsseInfoProj asseInfoProj);
/**
* 批量进行动态威胁与动态脆弱点关联
* @param paraMaps
* 参数Map
* @param asseInfoProj
* 测评项目
**/
void relateToVuln(Map paraMaps, AsseInfoProj asseInfoProj);
List<AsseKnowDynaThre> findAll(int startResult, int maxResult,
AsseInfoProj asseInfoProj, AsseInfoAsse asseInfoAsse);
List<AsseKnowDynaThre> ListThreByVulnId(int vulnId);
}