ManagerFactory.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. package org.dbsyncer.manager;
  2. import org.dbsyncer.connector.config.ConnectorConfig;
  3. import org.dbsyncer.connector.config.MetaInfo;
  4. import org.dbsyncer.connector.enums.ConnectorEnum;
  5. import org.dbsyncer.connector.enums.FilterEnum;
  6. import org.dbsyncer.connector.enums.OperationEnum;
  7. import org.dbsyncer.manager.template.*;
  8. import org.dbsyncer.manager.template.impl.ConfigOperationTemplate;
  9. import org.dbsyncer.manager.template.impl.ConfigPreLoadTemplate;
  10. import org.dbsyncer.parser.Parser;
  11. import org.dbsyncer.parser.enums.ConvertEnum;
  12. import org.dbsyncer.parser.model.ConfigModel;
  13. import org.dbsyncer.parser.model.Connector;
  14. import org.dbsyncer.parser.model.Mapping;
  15. import org.dbsyncer.parser.model.TableGroup;
  16. import org.dbsyncer.plugin.PluginFactory;
  17. import org.dbsyncer.plugin.config.Plugin;
  18. import org.dbsyncer.storage.constant.ConfigConstant;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.context.ApplicationListener;
  23. import org.springframework.context.event.ContextRefreshedEvent;
  24. import org.springframework.stereotype.Component;
  25. import java.util.List;
  26. import java.util.Map;
  27. /**
  28. * @author AE86
  29. * @version 1.0.0
  30. * @date 2019/9/16 23:59
  31. */
  32. @Component
  33. public class ManagerFactory implements Manager, ApplicationListener<ContextRefreshedEvent> {
  34. private final Logger logger = LoggerFactory.getLogger(getClass());
  35. @Autowired
  36. private Parser parser;
  37. @Autowired
  38. private PluginFactory pluginFactory;
  39. @Autowired
  40. private ConfigPreLoadTemplate preLoadTemplate;
  41. @Autowired
  42. private ConfigOperationTemplate operationTemplate;
  43. @Autowired
  44. private GroupStrategy defaultGroupStrategy;
  45. @Autowired
  46. private GroupStrategy tableGroupStrategy;
  47. @Override
  48. public boolean alive(ConnectorConfig config) {
  49. return parser.alive(config);
  50. }
  51. @Override
  52. public List<String> getTable(ConnectorConfig config) {
  53. return parser.getTable(config);
  54. }
  55. @Override
  56. public MetaInfo getMetaInfo(String connectorId, String tableName) {
  57. return parser.getMetaInfo(connectorId, tableName);
  58. }
  59. @Override
  60. public String addConnector(ConfigModel model) {
  61. return operationTemplate.execute(model, new OperationTemplate() {
  62. @Override
  63. public void handleEvent(ConfigOperationTemplate.Call call) {
  64. call.add();
  65. }
  66. @Override
  67. public GroupStrategy getGroupStrategy() {
  68. return defaultGroupStrategy;
  69. }
  70. });
  71. }
  72. @Override
  73. public String editConnector(ConfigModel model) {
  74. return operationTemplate.execute(model, new OperationTemplate() {
  75. @Override
  76. public void handleEvent(ConfigOperationTemplate.Call call) {
  77. call.edit();
  78. }
  79. @Override
  80. public GroupStrategy getGroupStrategy() {
  81. return defaultGroupStrategy;
  82. }
  83. });
  84. }
  85. @Override
  86. public void removeConnector(String connectorId) {
  87. operationTemplate.remove(new RemoveTemplate() {
  88. @Override
  89. public GroupStrategy getGroupStrategy() {
  90. return defaultGroupStrategy;
  91. }
  92. @Override
  93. public String getId() {
  94. return connectorId;
  95. }
  96. });
  97. }
  98. @Override
  99. public Connector getConnector(String connectorId) {
  100. return operationTemplate.queryObject(Connector.class, connectorId);
  101. }
  102. @Override
  103. public List<Connector> getConnectorAll() {
  104. return operationTemplate.queryAll(new QueryTemplate<Connector>() {
  105. @Override
  106. public ConfigModel getConfigModel() {
  107. return new ConfigModel().setType(ConfigConstant.CONNECTOR);
  108. }
  109. @Override
  110. public GroupStrategy getGroupStrategy() {
  111. return defaultGroupStrategy;
  112. }
  113. });
  114. }
  115. @Override
  116. public String addMapping(ConfigModel model) {
  117. return operationTemplate.execute(model, new OperationTemplate() {
  118. @Override
  119. public void handleEvent(ConfigOperationTemplate.Call call) {
  120. call.add();
  121. }
  122. @Override
  123. public GroupStrategy getGroupStrategy() {
  124. return defaultGroupStrategy;
  125. }
  126. });
  127. }
  128. @Override
  129. public String editMapping(ConfigModel model) {
  130. return operationTemplate.execute(model, new OperationTemplate() {
  131. @Override
  132. public void handleEvent(ConfigOperationTemplate.Call call) {
  133. call.edit();
  134. }
  135. @Override
  136. public GroupStrategy getGroupStrategy() {
  137. return defaultGroupStrategy;
  138. }
  139. });
  140. }
  141. @Override
  142. public void removeMapping(String mappingId) {
  143. operationTemplate.remove(new RemoveTemplate() {
  144. @Override
  145. public GroupStrategy getGroupStrategy() {
  146. return defaultGroupStrategy;
  147. }
  148. @Override
  149. public String getId() {
  150. return mappingId;
  151. }
  152. });
  153. }
  154. @Override
  155. public Mapping getMapping(String mappingId) {
  156. return operationTemplate.queryObject(Mapping.class, mappingId);
  157. }
  158. @Override
  159. public List<Mapping> getMappingAll() {
  160. return operationTemplate.queryAll(new QueryTemplate<Mapping>() {
  161. @Override
  162. public ConfigModel getConfigModel() {
  163. return new ConfigModel().setType(ConfigConstant.MAPPING);
  164. }
  165. @Override
  166. public GroupStrategy getGroupStrategy() {
  167. return defaultGroupStrategy;
  168. }
  169. });
  170. }
  171. @Override
  172. public String addTableGroup(ConfigModel model) {
  173. return operationTemplate.execute(model, new OperationTemplate() {
  174. @Override
  175. public void handleEvent(ConfigOperationTemplate.Call call) {
  176. call.add();
  177. }
  178. @Override
  179. public GroupStrategy getGroupStrategy() {
  180. return tableGroupStrategy;
  181. }
  182. });
  183. }
  184. @Override
  185. public String editTableGroup(ConfigModel model) {
  186. return operationTemplate.execute(model, new OperationTemplate() {
  187. @Override
  188. public void handleEvent(ConfigOperationTemplate.Call call) {
  189. call.edit();
  190. }
  191. @Override
  192. public GroupStrategy getGroupStrategy() {
  193. return tableGroupStrategy;
  194. }
  195. });
  196. }
  197. @Override
  198. public void removeTableGroup(String tableGroupId) {
  199. operationTemplate.remove(new RemoveTemplate() {
  200. @Override
  201. public GroupStrategy getGroupStrategy() {
  202. return tableGroupStrategy;
  203. }
  204. @Override
  205. public String getId() {
  206. return tableGroupId;
  207. }
  208. });
  209. }
  210. @Override
  211. public TableGroup getTableGroup(String tableGroupId) {
  212. return operationTemplate.queryObject(TableGroup.class, tableGroupId);
  213. }
  214. @Override
  215. public List<TableGroup> getTableGroupAll(String mappingId) {
  216. return operationTemplate.queryAll(new QueryTemplate<TableGroup>() {
  217. @Override
  218. public ConfigModel getConfigModel() {
  219. TableGroup model = new TableGroup();
  220. model.setType(ConfigConstant.TABLE_GROUP);
  221. model.setMappingId(mappingId);
  222. return model;
  223. }
  224. @Override
  225. public GroupStrategy getGroupStrategy() {
  226. return tableGroupStrategy;
  227. }
  228. });
  229. }
  230. @Override
  231. public Map<String, String> getCommand(String sourceConnectorId, String targetConnectorId, TableGroup tableGroup) {
  232. return parser.getCommand(sourceConnectorId, targetConnectorId, tableGroup);
  233. }
  234. @Override
  235. public List<ConnectorEnum> getConnectorEnumAll() {
  236. return parser.getConnectorEnumAll();
  237. }
  238. @Override
  239. public List<OperationEnum> getOperationEnumAll() {
  240. return parser.getOperationEnumAll();
  241. }
  242. @Override
  243. public List<FilterEnum> getFilterEnumAll() {
  244. return parser.getFilterEnumAll();
  245. }
  246. @Override
  247. public List<ConvertEnum> getConvertEnumAll() {
  248. return parser.getConvertEnumAll();
  249. }
  250. @Override
  251. public List<Plugin> getPluginAll() {
  252. return pluginFactory.getPluginAll();
  253. }
  254. @Override
  255. public void start(String mappingId) {
  256. }
  257. @Override
  258. public void stop(String mappingId) {
  259. }
  260. @Override
  261. public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
  262. // Load connectors
  263. preLoadTemplate.execute(new PreLoadTemplate() {
  264. @Override
  265. public GroupStrategy getGroupStrategy() {
  266. return defaultGroupStrategy;
  267. }
  268. @Override
  269. public String filterType() {
  270. return ConfigConstant.CONNECTOR;
  271. }
  272. @Override
  273. public ConfigModel parseModel(String json) {
  274. return parser.parseConnector(json);
  275. }
  276. });
  277. // Load mappings
  278. preLoadTemplate.execute(new PreLoadTemplate() {
  279. @Override
  280. public GroupStrategy getGroupStrategy() {
  281. return defaultGroupStrategy;
  282. }
  283. @Override
  284. public String filterType() {
  285. return ConfigConstant.MAPPING;
  286. }
  287. @Override
  288. public ConfigModel parseModel(String json) {
  289. return parser.parseMapping(json);
  290. }
  291. });
  292. // Load tableGroups
  293. preLoadTemplate.execute(new PreLoadTemplate() {
  294. @Override
  295. public GroupStrategy getGroupStrategy() {
  296. return tableGroupStrategy;
  297. }
  298. @Override
  299. public String filterType() {
  300. return ConfigConstant.TABLE_GROUP;
  301. }
  302. @Override
  303. public ConfigModel parseModel(String json) {
  304. return parser.parseTableGroup(json);
  305. }
  306. });
  307. }
  308. }