package com.sckw.excel.translate.context;


import com.sckw.core.exception.SourceInitializeException;
import com.sckw.excel.translate.SourceUtil;

import java.util.Map;

/**
 *
 * 翻译数据的数据源
 *
 *
 * @author lfdc
 * @version v1
 * @create 2020-11-28 14:15:00
 * @copyright
 */
public interface Source {

    /**
     * 获取数据源
     * @return key value格式的数据
     * @throws SourceInitializeException 初始化数据源失败时抛出的异常
     */
    Map<Integer, Object> get() throws SourceInitializeException;

    /**
     * 刷新数据源
     * @return 新的数据源
     * @throws SourceInitializeException 初始化数据源失败时抛出的异常
     */
    Map<Integer, Object> flush() throws SourceInitializeException;

    /**
     * 清除数据源
     */
    void clear();

    /**
     * 初始化
     */
    default void initial() {
        SourceUtil.put(com.sckw.excel.translate.enums.Source.valueOf(this.getClass()), this);
    }


}