Browse Source
* commit '4d2d06e7488184ab7e5e98539a85c5e0e6a3219e': REPORT-107392 漏掉了数字控件 && 漏掉了文本控件的一个面板 REPORT-107992 移动下单测位置 REPORT-107992 改一下实现 & 格式优化 REPORT-107992 【日志记录数据连接操作】设计器修改数据连接和数据集名称后操作日志会记录大片不好区分 REPORT-104339 设计器国际化问题 处理一波弹出框标题为”删除“的场景 REPORT-106402 websocket cbb ---报表适配 【问题原因】修改包名 【改动思路】rt REPORT-101549 【版本管理二期】迁移失败直接进入版本管理没有更新提示,二次进入就有了 REPORT-102182 【版本管理三期】版本详情,批量删除,部分失败的场景,页面不会实时刷新 REPORT-106402 websocket cbb ---报表适配 【问题原因】rt 【改动思路】websocket cbb 包名、方法适配 https://kms.fineres.com/pages/viewpage.action?pageId=905125265 REPORT-105998 设计器缩放比例较小,在画布选中组件有偏差 feat: fvs支持图表导出 #REPORT-106468 REPORT-105775 【FR国际化】文字显示不全 REPORT-105705 【FR国际化】文字显示不全,不更改布局,添加tooltips fix: fvs.ec.chart邮件超链没有勾选正文选项 默认走的emailpane fvs.ec.chart需要走refresh逻辑刷新成chartemailpane #REPORT-98438 REPORT-105456 【BI国际化】英文显示不全 REPORT-104339 设计器国际化问题,弹出提示框标题改为“提示” feat: fvs支持图表导出 #REPORT-106468feature/x
Obo-王学仁
1 year ago
57 changed files with 131 additions and 246 deletions
@ -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> K |
|
||||||
* @param <V> V |
|
||||||
*/ |
|
||||||
public static <K, V> void contrastMapEntries(@NotNull Map<K, V> orig, @NotNull Map<K, V> other, @NotNull EventHandler<K, V> eventHandler) { |
|
||||||
|
|
||||||
contrastMapEntries(orig, other, eventHandler, UpdateRule.DEFAULT); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 对比两个map 查找出相比orig,other中有哪些是新增的、删除的或者被修改的,并分别进行处理 |
|
||||||
* |
|
||||||
* 对比时用自定义的规则来判断是否为 EntryEventKind#UPDATED |
|
||||||
* |
|
||||||
* @param orig 原始map |
|
||||||
* @param other 参考的新map |
|
||||||
* @param eventHandler 有区别时的事件处理器 |
|
||||||
* @param updateRule 自定义的Update事件判定规则 |
|
||||||
* @param <K> |
|
||||||
* @param <V> |
|
||||||
*/ |
|
||||||
public static <K, V> void contrastMapEntries(@NotNull Map<K, V> orig, @NotNull Map<K, V> other, @NotNull EventHandler<K, V> eventHandler, @NotNull UpdateRule<K, V> updateRule) { |
|
||||||
|
|
||||||
Map<K, V> 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 <K> |
|
||||||
* @param <V> |
|
||||||
*/ |
|
||||||
public interface EventHandler<K, V> { |
|
||||||
void on(EntryEventKind entryEventKind, K k, V v); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 数据被修改(EntryEventKind.UPDATED) 的判定规则 |
|
||||||
* @param <K> |
|
||||||
* @param <V> |
|
||||||
*/ |
|
||||||
public interface UpdateRule<K, V> { |
|
||||||
|
|
||||||
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; |
|
||||||
} |
|
||||||
} |
|
@ -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<String, String> orig = new LinkedHashMap<>(); |
|
||||||
|
|
||||||
orig.put("aaa", "aaa"); |
|
||||||
orig.put("bbb", "bbb"); |
|
||||||
orig.put("ccc", "ccc"); |
|
||||||
orig.put("ddd", "ddd"); |
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> 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<String, String>() { |
|
||||||
@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(); |
|
||||||
} |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue