|
@@ -2,14 +2,17 @@ package org.dbsyncer.listener;
|
|
|
|
|
|
import org.dbsyncer.connector.ConnectorFactory;
|
|
import org.dbsyncer.connector.ConnectorFactory;
|
|
import org.dbsyncer.connector.config.ConnectorConfig;
|
|
import org.dbsyncer.connector.config.ConnectorConfig;
|
|
|
|
+import org.dbsyncer.listener.config.ExtractorConfig;
|
|
import org.dbsyncer.listener.config.ListenerConfig;
|
|
import org.dbsyncer.listener.config.ListenerConfig;
|
|
import org.dbsyncer.listener.enums.ListenerEnum;
|
|
import org.dbsyncer.listener.enums.ListenerEnum;
|
|
import org.dbsyncer.listener.enums.ListenerTypeEnum;
|
|
import org.dbsyncer.listener.enums.ListenerTypeEnum;
|
|
|
|
+import org.dbsyncer.listener.quartz.QuartzExtractor;
|
|
import org.dbsyncer.listener.quartz.ScheduledTaskService;
|
|
import org.dbsyncer.listener.quartz.ScheduledTaskService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
|
|
+import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
@Component
|
|
@Component
|
|
@@ -22,32 +25,36 @@ public class ListenerFactory implements Listener {
|
|
private ScheduledTaskService scheduledTaskService;
|
|
private ScheduledTaskService scheduledTaskService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public DefaultExtractor createExtractor(ConnectorConfig connectorConfig, ListenerConfig listenerConfig, Map<String, String> map)
|
|
|
|
|
|
+ public AbstractExtractor createExtractor(ExtractorConfig config)
|
|
throws IllegalAccessException, InstantiationException {
|
|
throws IllegalAccessException, InstantiationException {
|
|
- String listenerType = listenerConfig.getListenerType();
|
|
|
|
- String connectorType = connectorConfig.getConnectorType();
|
|
|
|
- DefaultExtractor extractor = getDefaultExtractor(listenerType, connectorType);
|
|
|
|
|
|
+ ConnectorConfig connectorConfig = config.getConnectorConfig();
|
|
|
|
+ ListenerConfig listenerConfig = config.getListenerConfig();
|
|
|
|
+
|
|
|
|
+ AbstractExtractor extractor = getDefaultExtractor(listenerConfig.getListenerType(), connectorConfig.getConnectorType(),
|
|
|
|
+ config.getCommands(), config.getTableNames());
|
|
|
|
|
|
extractor.setConnectorConfig(connectorConfig);
|
|
extractor.setConnectorConfig(connectorConfig);
|
|
extractor.setListenerConfig(listenerConfig);
|
|
extractor.setListenerConfig(listenerConfig);
|
|
- extractor.setMap(map);
|
|
|
|
|
|
+ extractor.setMap(config.getMap());
|
|
return extractor;
|
|
return extractor;
|
|
}
|
|
}
|
|
|
|
|
|
- private DefaultExtractor getDefaultExtractor(String listenerType, String connectorType)
|
|
|
|
|
|
+ private AbstractExtractor getDefaultExtractor(String listenerType, String connectorType, List<Map<String, String>> commands, List<String> tableNames)
|
|
throws IllegalAccessException, InstantiationException {
|
|
throws IllegalAccessException, InstantiationException {
|
|
// 默认定时抽取
|
|
// 默认定时抽取
|
|
if (ListenerTypeEnum.isTiming(listenerType)) {
|
|
if (ListenerTypeEnum.isTiming(listenerType)) {
|
|
- Class<DefaultExtractor> clazz = (Class<DefaultExtractor>) ListenerEnum.DEFAULT.getClazz();
|
|
|
|
- DefaultExtractor extractor = clazz.newInstance();
|
|
|
|
|
|
+ Class<QuartzExtractor> clazz = (Class<QuartzExtractor>) ListenerEnum.DEFAULT.getClazz();
|
|
|
|
+ QuartzExtractor extractor = clazz.newInstance();
|
|
extractor.setConnectorFactory(connectorFactory);
|
|
extractor.setConnectorFactory(connectorFactory);
|
|
extractor.setScheduledTaskService(scheduledTaskService);
|
|
extractor.setScheduledTaskService(scheduledTaskService);
|
|
|
|
+ extractor.setCommands(commands);
|
|
|
|
+ extractor.setTableNames(tableNames);
|
|
return extractor;
|
|
return extractor;
|
|
}
|
|
}
|
|
|
|
|
|
// 基于日志抽取
|
|
// 基于日志抽取
|
|
Assert.isTrue(ListenerTypeEnum.isLog(listenerType), "未知的同步方式.");
|
|
Assert.isTrue(ListenerTypeEnum.isLog(listenerType), "未知的同步方式.");
|
|
- Class<DefaultExtractor> clazz = (Class<DefaultExtractor>) ListenerEnum.getExtractor(connectorType);
|
|
|
|
|
|
+ Class<AbstractExtractor> clazz = (Class<AbstractExtractor>) ListenerEnum.getExtractor(connectorType);
|
|
return clazz.newInstance();
|
|
return clazz.newInstance();
|
|
}
|
|
}
|
|
|
|
|