package com.product.data.entity; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.data.config.CmnConst; import com.product.data.config.DatabaseType; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Author cheng * @Date 2022/2/10 13:49 * @Desc 同步配置 */ public class SyncFieldConfigEntity { /** * 来源表名 */ private String sourceTable; /** * 目标表名 */ private String targetTable; /** * 同步类型 0 增量同步 1 覆盖同步 */ private int syncType; /** * 查询条件 */ private String queryFilter; /** * 同步任务名称 */ private String syncTaskName; private List syncFieldEntityList = new ArrayList<>(); /** * 唯一标识字段 */ private List uniqueFields; /** * 增量标识字段 */ private SyncFieldEntity incrementField; /** * 增量更新标识字段 */ private SyncFieldEntity updateField; /** * 保存前调用方法 */ private String saveBeforeMethod; private String taskUuid; private String targetTablePkField; private Map sourceFieldMap = new HashMap<>(); private Map targetFieldMap = new HashMap<>(); @Override public String toString() { return "SyncFieldConfigEntity{" + "sourceTable='" + sourceTable + '\'' + ", targetTable='" + targetTable + '\'' + ", syncType=" + syncType + ", queryFilter='" + queryFilter + '\'' + ", syncTaskName='" + syncTaskName + '\'' + ", syncFieldEntityList=" + syncFieldEntityList + ", uniqueField=" + uniqueFields + ", incrementField=" + incrementField + ", saveBeforeMethod='" + saveBeforeMethod + '\'' + ", taskUuid='" + taskUuid + '\'' + ", targetTablePkField='" + targetTablePkField + '\'' + '}'; } public SyncFieldConfigEntity(FieldSetEntity fse, String targetTablePkField, DatabaseType dbType) { this.sourceTable = fse.getString("source_table"); this.targetTable = fse.getString("target_table"); this.syncType = fse.getInteger("sync_type"); this.queryFilter = fse.getString("query_filter"); this.syncTaskName = fse.getString("sync_task_name"); this.saveBeforeMethod = fse.getString("save_before"); this.taskUuid = fse.getString("uuid"); this.targetTablePkField = targetTablePkField; addFields(fse.getSubDataTable(CmnConst.TABLE_SYNC_MANAGER_FIELD), dbType); } public String getTargetTablePkField() { return targetTablePkField; } public String getTaskUuid() { return taskUuid; } public boolean getUniqueFieldExists() { if (this.uniqueFields == null || this.uniqueFields.size() < 0) { return false; } return true; } public List getUniqueFields() { return uniqueFields; } // public SyncFieldEntity getUniqueField() { // return uniqueField; // } public SyncFieldEntity getIncrementField() { return incrementField; } private void addFields(DataTableEntity dt, DatabaseType dbType) { for (int i = 0; i < dt.getRows(); i++) { SyncFieldEntity syncFieldEntity = new SyncFieldEntity(dt.getFieldSetEntity(i), dbType); syncFieldEntityList.add(syncFieldEntity); if (syncFieldEntity.isIncrement()) { incrementField = syncFieldEntity; } if (syncFieldEntity.isUnique()) { if (this.uniqueFields == null) { uniqueFields = new ArrayList<>(); } uniqueFields.add(syncFieldEntity); } if (syncFieldEntity.isUpdate()) { updateField = syncFieldEntity; } this.sourceFieldMap.put(syncFieldEntity.getSourceFieldName(), syncFieldEntity); this.targetFieldMap.put(syncFieldEntity.getTargetFieldName(), syncFieldEntity); } } public SyncFieldEntity getSourceFieldEntity(String fieldName) { return this.sourceFieldMap.get(fieldName); } public SyncFieldEntity getTargetFieldEntity(String fieldName) { return this.targetFieldMap.get(fieldName); } public SyncFieldEntity getUpdateField() { return updateField; } public String getSaveBeforeMethod() { return saveBeforeMethod; } public List getSyncFieldEntityList() { return syncFieldEntityList; } public String getSourceTable() { return sourceTable; } public void setSourceTable(String sourceTable) { this.sourceTable = sourceTable; } public String getTargetTable() { return targetTable; } public void setTargetTable(String targetTable) { this.targetTable = targetTable; } public int getSyncType() { return syncType; } public void setSyncType(int syncType) { this.syncType = syncType; } public String getQueryFilter() { return queryFilter; } public void setQueryFilter(String queryFilter) { this.queryFilter = queryFilter; } public String getSyncTaskName() { return syncTaskName; } public void setSyncTaskName(String syncTaskName) { this.syncTaskName = syncTaskName; } }