ConfigServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package org.dbsyncer.biz.impl;
  2. import org.apache.commons.io.FileUtils;
  3. import org.dbsyncer.biz.ConfigService;
  4. import org.dbsyncer.biz.checker.impl.config.ConfigChecker;
  5. import org.dbsyncer.biz.vo.ConfigVo;
  6. import org.dbsyncer.common.util.CollectionUtils;
  7. import org.dbsyncer.manager.Manager;
  8. import org.dbsyncer.manager.template.impl.PreloadTemplate;
  9. import org.dbsyncer.parser.logger.LogService;
  10. import org.dbsyncer.parser.logger.LogType;
  11. import org.dbsyncer.parser.model.Config;
  12. import org.dbsyncer.parser.model.ConfigModel;
  13. import org.dbsyncer.plugin.enums.FileSuffixEnum;
  14. import org.dbsyncer.storage.constant.ConfigConstant;
  15. import org.springframework.beans.BeanUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.util.Assert;
  19. import java.io.File;
  20. import java.io.IOException;
  21. import java.nio.charset.Charset;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.stream.Collectors;
  27. /**
  28. * @author AE86
  29. * @version 1.0.0
  30. * @date 2019/10/17 23:20
  31. */
  32. @Service
  33. public class ConfigServiceImpl implements ConfigService {
  34. @Autowired
  35. private Manager manager;
  36. @Autowired
  37. private ConfigChecker configChecker;
  38. @Autowired
  39. private PreloadTemplate preloadTemplate;
  40. @Autowired
  41. private LogService logService;
  42. @Override
  43. public String edit(Map<String, String> params) {
  44. synchronized (this) {
  45. Config config = manager.getConfig(ConfigConstant.CONFIG);
  46. if (null == config) {
  47. configChecker.checkAddConfigModel(params);
  48. }
  49. ConfigModel model = configChecker.checkEditConfigModel(params);
  50. manager.editConfig(model);
  51. }
  52. return "修改成功.";
  53. }
  54. @Override
  55. public ConfigVo getConfig() {
  56. List<Config> all = manager.getConfigAll();
  57. Config config = CollectionUtils.isEmpty(all) ? (Config) configChecker.checkAddConfigModel(new HashMap<>()) : all.get(0);
  58. return convertConfig2Vo(config);
  59. }
  60. @Override
  61. public String getPassword() {
  62. List<Config> all = manager.getConfigAll();
  63. Config config = CollectionUtils.isEmpty(all) ? (Config) configChecker.checkAddConfigModel(new HashMap<>()) : all.get(0);
  64. return config.getPassword();
  65. }
  66. @Override
  67. public List<ConfigVo> queryConfig() {
  68. List<ConfigVo> list = manager.getConfigAll().stream()
  69. .map(config -> convertConfig2Vo(config))
  70. .collect(Collectors.toList());
  71. return list;
  72. }
  73. @Override
  74. public List<ConfigModel> getConfigModelAll() {
  75. List<ConfigModel> list = new ArrayList<>();
  76. manager.getConfigAll().forEach(config -> list.add(config));
  77. manager.getConnectorAll().forEach(config -> list.add(config));
  78. manager.getMappingAll().forEach(config -> list.add(config));
  79. manager.getMetaAll().forEach(config -> list.add(config));
  80. return list;
  81. }
  82. @Override
  83. public void checkFileSuffix(String filename) {
  84. Assert.hasText(filename, "the config filename is null.");
  85. String suffix = filename.substring(filename.lastIndexOf(".") + 1, filename.length());
  86. FileSuffixEnum fileSuffix = FileSuffixEnum.getFileSuffix(suffix);
  87. Assert.notNull(fileSuffix, "Illegal file suffix");
  88. Assert.isTrue(FileSuffixEnum.JSON == fileSuffix, String.format("不正确的文件扩展名 \"%s\",只支持 \"%s\" 的文件扩展名。", filename, FileSuffixEnum.JSON.getName()));
  89. }
  90. @Override
  91. public void refreshConfig(File file) {
  92. Assert.notNull(file, "the config file is null.");
  93. try {
  94. List<String> lines = FileUtils.readLines(file, Charset.defaultCharset());
  95. if (!CollectionUtils.isEmpty(lines)) {
  96. StringBuilder json = new StringBuilder();
  97. lines.forEach(line -> json.append(line));
  98. preloadTemplate.reload(json.toString());
  99. }
  100. } catch (IOException e) {
  101. logService.log(LogType.CacheLog.IMPORT_ERROR);
  102. } finally {
  103. FileUtils.deleteQuietly(file);
  104. }
  105. }
  106. private ConfigVo convertConfig2Vo(Config config) {
  107. ConfigVo configVo = new ConfigVo();
  108. BeanUtils.copyProperties(config, configVo);
  109. // 避免密码直接暴露
  110. configVo.setPassword("");
  111. return configVo;
  112. }
  113. }