ManagerFactory.java 10 KB

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