package org.dbsyncer.parser; import org.dbsyncer.common.event.RowChangedEvent; import org.dbsyncer.common.model.AbstractConnectorConfig; import org.dbsyncer.common.model.Result; import org.dbsyncer.common.spi.ConnectorMapper; import org.dbsyncer.common.spi.ConvertContext; import org.dbsyncer.connector.enums.ConnectorEnum; import org.dbsyncer.connector.enums.FilterEnum; import org.dbsyncer.connector.enums.OperationEnum; import org.dbsyncer.connector.model.MetaInfo; import org.dbsyncer.connector.model.Table; import org.dbsyncer.listener.enums.QuartzFilterEnum; import org.dbsyncer.parser.enums.ConvertEnum; import org.dbsyncer.parser.model.*; import org.dbsyncer.storage.enums.StorageDataStatusEnum; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; /** * @author AE86 * @version 1.0.0 * @date 2019/10/20 21:11 */ public interface Parser { /** * 获取连接配置 * * @param config * @return */ ConnectorMapper connect(AbstractConnectorConfig config); /** * 刷新连接配置 * * @param config */ boolean refreshConnectorConfig(AbstractConnectorConfig config); /** * 连接配置是否可用 * * @param config * @return */ boolean isAliveConnectorConfig(AbstractConnectorConfig config); /** * 获取连接器表 * * @param config * @return */ List getTable(ConnectorMapper config); /** * 获取表元信息 * * @param connectorId * @param tableName * @return */ MetaInfo getMetaInfo(String connectorId, String tableName); /** * 获取映射关系执行命令 * * @param mapping * @param tableGroup * @return */ Map getCommand(Mapping mapping, TableGroup tableGroup); /** * 获取总数 * * @param connectorId * @param command * @return */ long getCount(String connectorId, Map command); /** * 解析连接器配置为Connector * * @param json * @return */ Connector parseConnector(String json); /** * 解析配置 * * @param json * @param clazz * @param * @return */ T parseObject(String json, Class clazz); /** * 获取所有连接器类型 * * @return */ List getConnectorEnumAll(); /** * 获取所有条件类型 * * @return */ List getOperationEnumAll(); /** * 获取过滤条件系统参数 * * @return */ List getQuartzFilterEnumAll(); /** * 获取所有运算符类型 * * @return */ List getFilterEnumAll(); /** * 获取所有转换类型 * * @return */ List getConvertEnumAll(); /** * 获取所有同步数据状态类型 * * @return */ List getStorageDataStatusEnumAll(); /** * 全量同步 * * @param task * @param mapping * @param tableGroup * @param executorService */ void execute(Task task, Mapping mapping, TableGroup tableGroup, ExecutorService executorService); /** * 增量同步 * * @param mapping * @param tableGroup * @param rowChangedEvent */ void execute(Mapping mapping, TableGroup tableGroup, RowChangedEvent rowChangedEvent); /** * 批执行 * * @param context * @param batchWriter * @return */ Result writeBatch(ConvertContext context, BatchWriter batchWriter); }