package cn.stylefeng.guns.base.i18n.init;
import cn.stylefeng.guns.base.i18n.context.TranslationContext;
import cn.stylefeng.guns.base.i18n.dict.TranslationDict;
import cn.stylefeng.guns.base.i18n.entity.Translation;
import cn.stylefeng.guns.base.i18n.enums.DefaultDicts;
import cn.stylefeng.guns.base.i18n.enums.TranslationEnum;
import cn.stylefeng.guns.base.i18n.service.TranslationService;
import cn.stylefeng.roses.core.util.SpringContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
*
* 参数配置 服务类
*
*
* @author stylefeng
* @since 2019-06-20
*/
@Component
@Slf4j
public class TranslationInit implements CommandLineRunner {
@Override
public void run(String... args) {
try {
//从数据库加载字典
initFromTable();
} catch (Exception e) {
log.warn("从数据库初始化字典失败,读取默认字典!");
//加载默认的一些字典
initDefaultDicts();
}
}
/**
* 从数据库加载字典
*
* @author fengshuonan
* @Date 2020/3/18 12:59
*/
private void initFromTable() {
ArrayList translationDicts = new ArrayList<>();
//从数据库读取字典
TranslationService translationService = SpringContextHolder.getBean(TranslationService.class);
List list = translationService.list();
if (list != null) {
for (Translation translation : list) {
TranslationDict translationDict = new TranslationDict();
translationDict.setTranCode(translation.getTranCode());
translationDict.setTranName(translation.getTranName());
translationDict.setTranslationLanguages(TranslationEnum.valueOf(translation.getLanguages()));
translationDict.setTranValue(translation.getTranValue());
translationDicts.add(translationDict);
}
TranslationContext.init(translationDicts);
log.info("初始化所有的翻译字典" + list.size() + "条!");
}
}
/**
* 初始化默认系统字典
*
* @author fengshuonan
* @Date 2020/3/18 12:58
*/
private void initDefaultDicts() {
ArrayList translationDicts = new ArrayList<>();
DefaultDicts[] values = DefaultDicts.values();
for (DefaultDicts value : values) {
TranslationDict translationDict = new TranslationDict();
translationDict.setTranCode(value.getTranCode());
translationDict.setTranslationLanguages(value.getTranslationLanguages());
translationDict.setTranValue(value.getTranValue());
translationDicts.add(translationDict);
}
TranslationContext.init(translationDicts);
log.info("初始化所有的翻译字典" + translationDicts.size() + "条!");
}
}