Browse Source

修改其他的兼容oracle并且规范引用

life 1 year ago
parent
commit
869363a48c

+ 2 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/util/StringUtil.java

@@ -23,6 +23,8 @@ public abstract class StringUtil {
 
     public static final String FORWARD_SLASH = "/";
 
+    public static final String BACK_QUOTE = "`";
+
     public static boolean equals(CharSequence cs1, CharSequence cs2) {
         return StringUtils.equals(cs1, cs2);
     }

+ 4 - 3
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ddl/alter/AddStrategy.java

@@ -40,7 +40,8 @@ public class AddStrategy implements AlterStrategy {
             boolean findColumn = false;
             List<String> columnSpecs = new LinkedList<>();
             for (String spe : columnDataType.getColumnSpecs()) {//对一before,after进行处理
-                spe = StringUtil.replace(spe, "`", "");
+                spe = StringUtil.replace(spe, StringUtil.BACK_QUOTE, StringUtil.EMPTY);
+                spe = StringUtil.replace(spe, StringUtil.DOUBLE_QUOTATION, StringUtil.EMPTY);
                 if (findColumn) {
                     //对before(after)字段进行映射
                     String finalSpe = spe;
@@ -60,8 +61,8 @@ public class AddStrategy implements AlterStrategy {
             }
             columnDataType.setColumnSpecs(columnSpecs);
             String columName = columnDataType.getColumnName();
-            columName = StringUtil.replace(columName, "`", "");
-            columName = StringUtil.replace(columName, StringUtil.DOUBLE_QUOTATION, "");
+            columName = StringUtil.replace(columName, StringUtil.BACK_QUOTE, StringUtil.EMPTY);
+            columName = StringUtil.replace(columName, StringUtil.DOUBLE_QUOTATION, StringUtil.EMPTY);
             Field field = new Field(columName, columnDataType.getColDataType().getDataType(),
                     0);//感觉不需要都行,只需要名称,后续可以自己刷新
             ddlConfig.getAddFields().add(field);

+ 5 - 2
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ddl/alter/ChangeStrategy.java

@@ -19,9 +19,12 @@ public class ChangeStrategy implements AlterStrategy {
 
     @Override
     public void parse(AlterExpression expression, DDLConfig ddlConfig, List<FieldMapping> originalFieldMappings) {
-        String oldColumnName = StringUtil.replace(expression.getColumnOldName(), "`", "");
+        String oldColumnName = StringUtil.replace(expression.getColumnOldName(), StringUtil.BACK_QUOTE, StringUtil.EMPTY);
+        oldColumnName = StringUtil.replace(oldColumnName, StringUtil.DOUBLE_QUOTATION, StringUtil.EMPTY);
         ddlConfig.setSourceColumnName(oldColumnName);
-        FieldMapping fieldMapping = originalFieldMappings.stream().filter(x -> StringUtil.equals(x.getSource().getName(), oldColumnName)).findFirst().orElse(null);
+        String finalOldColumnName = oldColumnName;
+        FieldMapping fieldMapping = originalFieldMappings.stream().filter(x -> StringUtil.equals(x.getSource().getName(),
+                finalOldColumnName)).findFirst().orElse(null);
         if (fieldMapping != null) {
             expression.setColumnOldName(fieldMapping.getTarget().getName());
             for (AlterExpression.ColumnDataType columnDataType : expression.getColDataTypeList()) {

+ 4 - 2
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ddl/alter/DropStrategy.java

@@ -36,11 +36,13 @@ public class DropStrategy implements AlterStrategy {
      * @param originalFieldMappings
      */
     private void dropColumn(AlterExpression expression, DDLConfig ddlConfig, List<FieldMapping> originalFieldMappings) {
-        String columnName = StringUtil.replace(expression.getColumnName(), "`", "");
+        String columnName = StringUtil.replace(expression.getColumnName(), StringUtil.BACK_QUOTE, StringUtil.EMPTY);
+        columnName = StringUtil.replace(columnName,StringUtil.DOUBLE_QUOTATION,StringUtil.EMPTY);
         Field field = new Field(columnName, null, 0);
         //需要把列替换成目标的列名
+        String finalColumnName = columnName;
         originalFieldMappings.stream()
-                .filter(x -> StringUtil.equals(x.getSource().getName(), columnName)).findFirst()
+                .filter(x -> StringUtil.equals(x.getSource().getName(), finalColumnName)).findFirst()
                 .ifPresent(fieldMapping -> expression.setColumnName(fieldMapping.getTarget().getName()));
         //加入还是原名
         ddlConfig.getRemoveFields().add(field);

+ 2 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ddl/alter/ModifyStrategy.java

@@ -22,7 +22,8 @@ public class ModifyStrategy implements AlterStrategy {
     public void parse(AlterExpression expression, DDLConfig ddlConfig, List<FieldMapping> originalFieldMappings) {
         //先查找到当前的表和目标的表对应的字段
         for (AlterExpression.ColumnDataType columnDataType : expression.getColDataTypeList()) {
-            String columnName = StringUtil.replace(columnDataType.getColumnName(), "`", "");
+            String columnName = StringUtil.replace(columnDataType.getColumnName(), StringUtil.BACK_QUOTE, StringUtil.EMPTY);
+            columnName =StringUtil.replace(columnName,StringUtil.DOUBLE_QUOTATION,StringUtil.EMPTY);
             for (FieldMapping fieldMapping : originalFieldMappings) {
                 if (StringUtil.equals(fieldMapping.getSource().getName(), columnName)) {
                     //TODO life 找到目标的表名,先是alter进行属性替换,然后config记录新的

+ 1 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/flush/impl/GeneralBufferActuator.java

@@ -197,7 +197,7 @@ public class GeneralBufferActuator extends AbstractBufferActuator<WriterRequest,
             ConnectorConfig tConnConfig = getConnectorConfig(mapping.getTargetConnectorId());
             String sConnType = sConnConfig.getConnectorType();
             String tConnType = tConnConfig.getConnectorType();
-            // 0.生成目标表执行SQL(暂支持MySQL) fixme AE86 暂内测MySQL作为试运行版本
+            // 0.生成目标表执行SQL(暂支持同源)
             if (StringUtil.equals(sConnType, tConnType)) {
                 // 1.转换为目标SQL,执行到目标库
                 String targetTableName = tableGroup.getTargetTable().getName();