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<SyncFieldEntity> syncFieldEntityList = new ArrayList<>();
|
/**
|
* 唯一标识字段
|
*/
|
private List<SyncFieldEntity> uniqueFields;
|
/**
|
* 增量标识字段
|
*/
|
private SyncFieldEntity incrementField;
|
/**
|
* 增量更新标识字段
|
*/
|
private SyncFieldEntity updateField;
|
/**
|
* 保存前调用方法
|
*/
|
private String saveBeforeMethod;
|
|
private String taskUuid;
|
|
private String targetTablePkField;
|
|
private Map<String, SyncFieldEntity> sourceFieldMap = new HashMap<>();
|
private Map<String, SyncFieldEntity> 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<SyncFieldEntity> 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<SyncFieldEntity> 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;
|
}
|
}
|