TableGroupServiceImpl.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package org.dbsyncer.biz.impl;
  2. import org.dbsyncer.biz.TableGroupService;
  3. import org.dbsyncer.biz.checker.Checker;
  4. import org.dbsyncer.common.util.CollectionUtils;
  5. import org.dbsyncer.connector.config.Field;
  6. import org.dbsyncer.parser.logger.LogType;
  7. import org.dbsyncer.parser.model.Mapping;
  8. import org.dbsyncer.parser.model.TableGroup;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.util.Assert;
  14. import java.util.*;
  15. /**
  16. * @author AE86
  17. * @version 1.0.0
  18. * @date 2019/11/27 23:14
  19. */
  20. @Service
  21. public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroupService {
  22. private final Logger logger = LoggerFactory.getLogger(getClass());
  23. @Autowired
  24. private Checker tableGroupChecker;
  25. @Override
  26. public String add(Map<String, String> params) {
  27. TableGroup model = (TableGroup) tableGroupChecker.checkAddConfigModel(params);
  28. assertRunning(model);
  29. log(LogType.TableGroupLog.INSERT, model);
  30. String id = manager.addTableGroup(model);
  31. // 合并驱动公共字段
  32. mergeMappingColumn(model.getMappingId());
  33. return id;
  34. }
  35. @Override
  36. public String edit(Map<String, String> params) {
  37. TableGroup model = (TableGroup) tableGroupChecker.checkEditConfigModel(params);
  38. assertRunning(model);
  39. log(LogType.TableGroupLog.UPDATE, model);
  40. return manager.editTableGroup(model);
  41. }
  42. @Override
  43. public boolean remove(String id) {
  44. TableGroup tableGroup = manager.getTableGroup(id);
  45. Assert.notNull(tableGroup, "tableGroup can not be null.");
  46. assertRunning(tableGroup);
  47. log(LogType.TableGroupLog.DELETE, tableGroup);
  48. manager.removeTableGroup(id);
  49. // 合并驱动公共字段
  50. mergeMappingColumn(tableGroup.getMappingId());
  51. return true;
  52. }
  53. @Override
  54. public TableGroup getTableGroup(String id) {
  55. TableGroup tableGroup = manager.getTableGroup(id);
  56. Assert.notNull(tableGroup, "TableGroup can not be null");
  57. return tableGroup;
  58. }
  59. @Override
  60. public List<TableGroup> getTableGroupAll(String mappingId) {
  61. return manager.getTableGroupAll(mappingId);
  62. }
  63. private void mergeMappingColumn(String mappingId) {
  64. List<TableGroup> groups = manager.getTableGroupAll(mappingId);
  65. Mapping mapping = manager.getMapping(mappingId);
  66. Assert.notNull(mapping, "mapping not exist.");
  67. List<Field> sourceColumn = null;
  68. List<Field> targetColumn = null;
  69. for (TableGroup g : groups) {
  70. sourceColumn = pickCommonFields(sourceColumn, g.getSourceTable().getColumn());
  71. targetColumn = pickCommonFields(targetColumn, g.getTargetTable().getColumn());
  72. }
  73. mapping.setSourceColumn(sourceColumn);
  74. mapping.setTargetColumn(targetColumn);
  75. manager.editMapping(mapping);
  76. }
  77. private List<Field> pickCommonFields(List<Field> column, List<Field> target) {
  78. if (CollectionUtils.isEmpty(column) || CollectionUtils.isEmpty(target)) {
  79. return target;
  80. }
  81. List<Field> list = new ArrayList<>();
  82. Set<String> keys = new HashSet<>();
  83. column.forEach(f -> keys.add(f.getName()));
  84. target.forEach(f -> {
  85. if (keys.contains(f.getName())) {
  86. list.add(f);
  87. }
  88. });
  89. return list;
  90. }
  91. }