diff --git a/designer-base/src/main/java/com/fr/design/data/MapCompareUtils.java b/designer-base/src/main/java/com/fr/design/data/MapCompareUtils.java deleted file mode 100644 index 331e980834..0000000000 --- a/designer-base/src/main/java/com/fr/design/data/MapCompareUtils.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.fr.design.data; - -import org.jetbrains.annotations.NotNull; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author rinoux - * @version 10.0 - * Created by rinoux on 2022/3/28 - */ -public final class MapCompareUtils { - - - /** - * 对比两个map 查找出相比orig,other中有哪些是新增的、删除的或者被修改的,并分别进行处理 - * - * 对比时默认用equals方法来判断是否为 EntryEventKind#UPDATED - * - * @param orig 原始map - * @param other 参考的新map - * @param eventHandler 有区别时的事件处理器 - * @param K - * @param V - */ - public static void contrastMapEntries(@NotNull Map orig, @NotNull Map other, @NotNull EventHandler eventHandler) { - - contrastMapEntries(orig, other, eventHandler, UpdateRule.DEFAULT); - } - - /** - * 对比两个map 查找出相比orig,other中有哪些是新增的、删除的或者被修改的,并分别进行处理 - * - * 对比时用自定义的规则来判断是否为 EntryEventKind#UPDATED - * - * @param orig 原始map - * @param other 参考的新map - * @param eventHandler 有区别时的事件处理器 - * @param updateRule 自定义的Update事件判定规则 - * @param - * @param - */ - public static void contrastMapEntries(@NotNull Map orig, @NotNull Map other, @NotNull EventHandler eventHandler, @NotNull UpdateRule updateRule) { - - Map copiedOrig = new LinkedHashMap<>(orig); - - other.forEach((k, v) -> { - V existedV = copiedOrig.remove(k); - if (existedV != null) { - if (updateRule.needUpdate(existedV, v)) { - eventHandler.on(EntryEventKind.UPDATED, k, v); - } - } else { - eventHandler.on(EntryEventKind.ADDED, k, v); - } - }); - - copiedOrig.forEach((k, v) -> eventHandler.on(EntryEventKind.REMOVED, k, v)); - } - - - /** - * 事件处理器,对应比较后的三种结果的事件处理 - * @param - * @param - */ - public interface EventHandler { - void on(EntryEventKind entryEventKind, K k, V v); - } - - /** - * 数据被修改(EntryEventKind.UPDATED) 的判定规则 - * @param - * @param - */ - public interface UpdateRule { - - EntryEventKind eventKind = EntryEventKind.UPDATED; - - UpdateRule DEFAULT = new UpdateRule() {}; - - default boolean needUpdate(V origin, V v) { - return !v.equals(origin); - } - } - - public enum EntryEventKind { - ADDED, - REMOVED, - UPDATED; - } -} diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java index 264a937999..ea368bbfcd 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -236,17 +236,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData @Override public void update(TableDataConfig tableDataConfig) { - Nameable[] tableDataArray = this.update(); - List tableDataBeans = new ArrayList<>(); - Map map = MapUtils.invertMap(getDsNameChangedMap()); - for (int i = 0; i < tableDataArray.length; i++) { - NameObject nameObject = (NameObject) tableDataArray[i]; - String oldName = map.get(nameObject.getName()); - if (oldName == null) { - oldName = StringUtils.EMPTY; - } - tableDataBeans.add(new TableDataBean(nameObject.getName(), oldName, (TableData) nameObject.getObject())); - } + List tableDataBeans = getUpdateTableDataBeans(); try { WorkContext.getCurrent().get(TableDataOperator.class, new ExceptionHandler() { @Override @@ -263,6 +253,25 @@ public class TableDataPaneListPane extends JListControlPane implements TableData } } + /** + * 获取更新时的数据集快照 + * + * @return 快照 + */ + private List getUpdateTableDataBeans() { + Nameable[] tableDataArray = this.update(); + List tableDataBeans = new ArrayList<>(); + Map map = MapUtils.invertMap(getDsNameChangedMap()); + for (Nameable nameable : tableDataArray) { + NameObject nameObject = (NameObject) nameable; + String oldName = map.get(nameObject.getName()); + if (oldName == null) { + oldName = StringUtils.EMPTY; + } + tableDataBeans.add(new TableDataBean(nameObject.getName(), oldName, (TableData) nameObject.getObject())); + } + return tableDataBeans; + } private boolean saveByOldWay(List tableDataBean) { try { return TableDataOperatorImpl.getInstance().saveTableData(tableDataBean); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java index 87b1c404f3..6bfd0a37f0 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java @@ -9,7 +9,7 @@ import com.fr.data.impl.JNDIDatabaseConnection; import com.fr.data.metric.utils.DatabaseConnectionMetricHandler; import com.fr.data.operator.DataOperator; import com.fr.design.ExtraDesignClassManager; -import com.fr.design.data.MapCompareUtils; +import com.fr.general.MapCompareUtils; import com.fr.design.dialog.BasicDialog; import com.fr.design.fun.ConnectionProvider; import com.fr.design.gui.controlpane.JListControlPane; diff --git a/designer-base/src/test/java/com/fr/design/data/MapCompareUtilsTest.java b/designer-base/src/test/java/com/fr/design/data/MapCompareUtilsTest.java deleted file mode 100644 index 1f1e60e2be..0000000000 --- a/designer-base/src/test/java/com/fr/design/data/MapCompareUtilsTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.fr.design.data; - -import org.junit.Assert; -import org.junit.Test; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author rinoux - * @version 10.0 - * Created by rinoux on 2022/3/28 - */ -public class MapCompareUtilsTest { - - @Test - public void contrastMapEntries() { - - - Map orig = new LinkedHashMap<>(); - - orig.put("aaa", "aaa"); - orig.put("bbb", "bbb"); - orig.put("ccc", "ccc"); - orig.put("ddd", "ddd"); - - - Map other = new LinkedHashMap<>(); - - other.put("aaa", "111"); - other.put("bbb", "bbb"); - other.put("ccc", "ccc"); - other.put("eee", "eee"); - - - MapCompareUtils.contrastMapEntries(orig, other, new MapCompareUtils.EventHandler() { - @Override - public void on(MapCompareUtils.EntryEventKind entryEventKind, String s, String s2) { - switch (entryEventKind) { - case UPDATED: - Assert.assertEquals(s, "aaa"); - Assert.assertEquals(s2, "111"); - break; - case REMOVED: - Assert.assertEquals(s, "ddd"); - break; - case ADDED: - Assert.assertEquals(s, "eee"); - Assert.assertEquals(s2, "eee"); - break; - default: - Assert.fail(); - } - } - }); - } -} \ No newline at end of file