package com.seer.teach.teacher.service.registry.wrongQuestionDetail;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;



@Slf4j
@Component
public class WrongQuestionDetailHandlerRegistry {

    private final Map<Integer, WrongQuestionDetailHandler> handlerMap = new HashMap<>();


    /**
     * 构造函数，用于初始化错题详情处理器注册中心
     * 通过Spring自动注入所有WrongQuestionDetailHandler实现类的实例列表，
     * 并将它们按照类型注册到内部的处理器映射表中
     *
     * @param handlers 错题详情处理器列表，包含所有实现了WrongQuestionDetailHandler接口的实例
     */
    @Autowired
    public WrongQuestionDetailHandlerRegistry(List<WrongQuestionDetailHandler> handlers) {
        // 遍历所有处理器实例，按类型注册到映射表中
        for (WrongQuestionDetailHandler handler : handlers) {
            Integer type = handler.getType();
            // 检查是否已存在相同类型的处理器，避免重复注册
            if (handlerMap.containsKey(type)) {
                log.warn("重复注册处理器 tag={}", type);
            }
            handlerMap.put(type, handler);
            log.info("注册错题详情查询器 type={}，handler={}", type, handler.getClass().getSimpleName());
        }
    }

    /**
     * 根据类型获取对应的错题详情处理器
     *
     * @param type 处理器类型标识
     * @return 对应类型的错题详情处理器实例，如果不存在则返回null
     */
    public WrongQuestionDetailHandler getHandler(Integer type) {
        return handlerMap.get(type);
    }
}
