package jtznyj.engineer.service.dataDiagnosticService;

import jtznyj.engineer.service.dataDiagnosticService.data.DrillStateResult;

import java.util.List;

/**
 * 数据诊断接口
 */
public interface IDataDiagnostic<T,K,P> {
    /**
     * 设置诊断参
     * @param param
     */
    public void setParameter(P param);

    /**
     * 设置分析数据
     * @param data
     */
    public void setData(T data);

    /**
     * 初始化
     * @return 初始化成功返回true ，失败则返回 false
     */
    public boolean init();

    /**
     * 执行诊断
     * @return 诊断分析结果
     */
    public DataDiagnosticAnalyzeResult performAnalyze();

    /**
     * 执行诊断
     * @return 诊断分析结果
     */
    public DataDiagnosticAnalyzeResult performAnalyze(DrillStateResult drillStateResult);

    /**
     * 重置
     */
    public void reset();

    /**
     * 获得字段分析异常数据集
     * @return
     */
    public List<T> getAbnormalData();

    /**
     * 获得诊断描述信息
     * @return
     */
    public List<DataDiagnosticDescription<K>> getDiagnosticDescriptions();
}


