ProfileComponentImpl.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. /**
  2. * DBSyncer Copyright 2020-2023 All Rights Reserved.
  3. */
  4. package org.dbsyncer.parser.impl;
  5. import org.dbsyncer.common.util.CollectionUtils;
  6. import org.dbsyncer.common.util.JsonUtil;
  7. import org.dbsyncer.connector.ConnectorFactory;
  8. import org.dbsyncer.connector.enums.FilterEnum;
  9. import org.dbsyncer.sdk.enums.QuartzFilterEnum;
  10. import org.dbsyncer.parser.ProfileComponent;
  11. import org.dbsyncer.parser.enums.CommandEnum;
  12. import org.dbsyncer.parser.enums.ConvertEnum;
  13. import org.dbsyncer.parser.enums.GroupStrategyEnum;
  14. import org.dbsyncer.parser.model.ConfigModel;
  15. import org.dbsyncer.parser.model.Connector;
  16. import org.dbsyncer.parser.model.Mapping;
  17. import org.dbsyncer.parser.model.Meta;
  18. import org.dbsyncer.parser.model.OperationConfig;
  19. import org.dbsyncer.parser.model.ProjectGroup;
  20. import org.dbsyncer.parser.model.QueryConfig;
  21. import org.dbsyncer.parser.model.SystemConfig;
  22. import org.dbsyncer.parser.model.TableGroup;
  23. import org.dbsyncer.parser.model.UserConfig;
  24. import org.dbsyncer.sdk.enums.OperationEnum;
  25. import org.dbsyncer.sdk.model.ConnectorConfig;
  26. import org.dbsyncer.sdk.spi.ConnectorService;
  27. import org.dbsyncer.storage.enums.StorageDataStatusEnum;
  28. import org.springframework.stereotype.Component;
  29. import org.springframework.util.Assert;
  30. import javax.annotation.Resource;
  31. import java.util.Arrays;
  32. import java.util.Comparator;
  33. import java.util.List;
  34. import java.util.Map;
  35. import java.util.stream.Collectors;
  36. /**
  37. * @Version 1.0.0
  38. * @Author AE86
  39. * @Date 2023-11-13 21:16
  40. */
  41. @Component
  42. public class ProfileComponentImpl implements ProfileComponent {
  43. @Resource
  44. private OperationTemplate operationTemplate;
  45. @Resource
  46. private ConnectorFactory connectorFactory;
  47. @Override
  48. public Connector parseConnector(String json) {
  49. Map conn = JsonUtil.parseMap(json);
  50. Map config = (Map) conn.remove("config");
  51. Connector connector = JsonUtil.jsonToObj(conn.toString(), Connector.class);
  52. Assert.notNull(connector, "Connector can not be null.");
  53. String connectorType = (String) config.get("connectorType");
  54. ConnectorService connectorService = connectorFactory.getConnectorService(connectorType);
  55. Class<ConnectorConfig> configClass = connectorService.getConfigClass();
  56. connector.setConfig(JsonUtil.jsonToObj(config.toString(), configClass));
  57. return connector;
  58. }
  59. @Override
  60. public <T> T parseObject(String json, Class<T> clazz) {
  61. return JsonUtil.jsonToObj(json, clazz);
  62. }
  63. @Override
  64. public String addConfigModel(ConfigModel model) {
  65. return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
  66. }
  67. @Override
  68. public String editConfigModel(ConfigModel model) {
  69. return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
  70. }
  71. @Override
  72. public void removeConfigModel(String id) {
  73. operationTemplate.remove(new OperationConfig(id));
  74. }
  75. @Override
  76. public SystemConfig getSystemConfig() {
  77. List<SystemConfig> list = operationTemplate.queryAll(SystemConfig.class);
  78. return CollectionUtils.isEmpty(list) ? null : list.get(0);
  79. }
  80. @Override
  81. public UserConfig getUserConfig() {
  82. List<UserConfig> list = operationTemplate.queryAll(UserConfig.class);
  83. return CollectionUtils.isEmpty(list) ? null : list.get(0);
  84. }
  85. @Override
  86. public ProjectGroup getProjectGroup(String id) {
  87. return operationTemplate.queryObject(ProjectGroup.class, id);
  88. }
  89. @Override
  90. public List<ProjectGroup> getProjectGroupAll() {
  91. return operationTemplate.queryAll(ProjectGroup.class);
  92. }
  93. @Override
  94. public Connector getConnector(String connectorId) {
  95. return operationTemplate.queryObject(Connector.class, connectorId);
  96. }
  97. @Override
  98. public List<Connector> getConnectorAll() {
  99. return operationTemplate.queryAll(Connector.class);
  100. }
  101. @Override
  102. public Mapping getMapping(String mappingId) {
  103. return operationTemplate.queryObject(Mapping.class, mappingId);
  104. }
  105. @Override
  106. public List<Mapping> getMappingAll() {
  107. return operationTemplate.queryAll(Mapping.class);
  108. }
  109. @Override
  110. public String addTableGroup(TableGroup model) {
  111. return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD, GroupStrategyEnum.TABLE));
  112. }
  113. @Override
  114. public String editTableGroup(TableGroup model) {
  115. return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT, GroupStrategyEnum.TABLE));
  116. }
  117. @Override
  118. public void removeTableGroup(String id) {
  119. operationTemplate.remove(new OperationConfig(id, GroupStrategyEnum.TABLE));
  120. }
  121. @Override
  122. public TableGroup getTableGroup(String tableGroupId) {
  123. return operationTemplate.queryObject(TableGroup.class, tableGroupId);
  124. }
  125. @Override
  126. public List<TableGroup> getTableGroupAll(String mappingId) {
  127. TableGroup tableGroup = new TableGroup().setMappingId(mappingId);
  128. return operationTemplate.queryAll(new QueryConfig(tableGroup, GroupStrategyEnum.TABLE));
  129. }
  130. @Override
  131. public List<TableGroup> getSortedTableGroupAll(String mappingId) {
  132. List<TableGroup> list = getTableGroupAll(mappingId)
  133. .stream()
  134. .sorted(Comparator.comparing(TableGroup::getIndex).reversed())
  135. .collect(Collectors.toList());
  136. return list;
  137. }
  138. @Override
  139. public int getTableGroupCount(String mappingId) {
  140. TableGroup tableGroup = new TableGroup().setMappingId(mappingId);
  141. return operationTemplate.queryCount(new QueryConfig<>(tableGroup, GroupStrategyEnum.TABLE));
  142. }
  143. @Override
  144. public Meta getMeta(String metaId) {
  145. return operationTemplate.queryObject(Meta.class, metaId);
  146. }
  147. @Override
  148. public List<Meta> getMetaAll() {
  149. return operationTemplate.queryAll(Meta.class);
  150. }
  151. @Override
  152. public List<OperationEnum> getOperationEnumAll() {
  153. return Arrays.asList(OperationEnum.values());
  154. }
  155. @Override
  156. public List<QuartzFilterEnum> getQuartzFilterEnumAll() {
  157. return Arrays.asList(QuartzFilterEnum.values());
  158. }
  159. @Override
  160. public List<FilterEnum> getFilterEnumAll() {
  161. return Arrays.asList(FilterEnum.values());
  162. }
  163. @Override
  164. public List<ConvertEnum> getConvertEnumAll() {
  165. return Arrays.asList(ConvertEnum.values());
  166. }
  167. @Override
  168. public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
  169. return Arrays.asList(StorageDataStatusEnum.values());
  170. }
  171. }