package jtznyj.engineer.service.dataDiagnosticService;


import org.apache.commons.lang.NotImplementedException;
import jtznyj.engineer.service.dataDiagnosticService.data.DrillStateResult;

import java.util.ArrayList;
import java.util.List;

/**
 * 趋势诊断分析类
 * @param <T>
 */
public class TrendDataDiagnostic<T,K,P> extends DataDiagnostic<T,K,P> {

    /**
     * 所有报警点（异常数据）
     */
    protected List<T> abnormalDataList = new ArrayList<>();

    protected List<DataDiagnosticDescription<K>> diagnosticDescriptionList = new ArrayList<>();

    /**
     * 范围索引
     */
    protected int rangeIndex = 0;

    /**
     * 移动到下一条，为开始下一条数据的诊断分析做准备
     * @return 移动并且准备是否成功， 成功返回true，否则返回 false
     */
    public boolean moveNext(){
        return true;
    }

    /**
     * 执行诊断
     * @return 诊断分析结果
     */
    @Override
    public DataDiagnosticAnalyzeResult performAnalyze(DrillStateResult drillStateResult){
        throw new NotImplementedException();
    }

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

    /**
     * 执行诊断
     *
     * @return 诊断分析结果
     */
    @Override
    public DataDiagnosticAnalyzeResult performAnalyze() {
        throw new NotImplementedException();
    }

    /**
     * 重置
     */
    public void reset(){
        this.abnormalDataList.clear();
        this.diagnosticDescriptionList.clear();
        this.rangeIndex = 0;
    }

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

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