From 17b228a6799c5003a23c9c011b4ecba209800588 Mon Sep 17 00:00:00 2001 From: icanci Date: Thu, 21 Sep 2023 20:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biz/pom.xml | 5 ++ .../bic/biz/adapter/package-info.java | 8 ++ .../loopstack/bic/biz/cache/GraphKey.java | 34 +++++++++ .../biz/dts/impl/EdgeStyleDtsServiceImpl.java | 17 ++++- .../biz/dts/impl/NodeStyleDtsServiceImpl.java | 13 +++- .../biz/dts/impl/NodeVueDtsServiceImpl.java | 13 +++- .../impl/UnitViewTreeGraphDtsServiceImpl.java | 5 +- .../mapper/UnitViewSnapshotIndexMapper.java | 15 ++++ .../bic/biz/service/SnapshotService.java | 15 ++++ .../service/UnitViewSnapshotIndexService.java | 27 +++++++ .../biz/service/impl/SnapshotServiceImpl.java | 55 ++++++++++++++ .../UnitViewSnapshotIndexServiceImpl.java | 60 +++++++++++++++ .../loopstack/bic/biz/thread/ThreadUtils.java | 33 ++++++++ .../daointerface/UnitViewSnapshotDAO.java | 2 +- .../UnitViewSnapshotIndexDAO.java | 23 ++++++ .../dateobject/UnitViewSnapshotIndexDO.java | 17 +++++ .../mongo/MongoUnitViewSnapshotIndexDAO.java | 75 +++++++++++++++++++ graph/pom.xml | 6 +- .../builder/EdgeDefaultDefineBuilder.java | 10 --- .../builder/NodeDefaultDefineBuilder.java | 66 ---------------- .../bic/graph/function/BicFunction.java | 15 ---- .../bic/graph/function/FuncContext.java | 8 -- .../graph/function/FuncInvokeResponse.java | 8 -- .../function/edge/EdgeClickFunction.java | 17 ----- .../graph/function/edge/EdgeFuncContext.java | 13 ---- .../graph/function/node/NodeFuncContext.java | 12 --- .../bic/graph/node/UnitViewNode.java | 12 +++ .../bic/graph/builder/TestNodeBuilder.java | 18 ----- 28 files changed, 426 insertions(+), 176 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/UnitViewSnapshotIndexMapper.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java delete mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java delete mode 100644 graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java diff --git a/biz/pom.xml b/biz/pom.xml index 7001a9b..4c0f604 100644 --- a/biz/pom.xml +++ b/biz/pom.xml @@ -22,6 +22,11 @@ bic-dal ${parent.version} + + cn.icanci.loopstack.bic + bic-graph + ${parent.version} + org.mapstruct mapstruct diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java new file mode 100644 index 0000000..0531355 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java @@ -0,0 +1,8 @@ +/** + * 适配器层 + * 将模型转换为标准组件信息 + * + * @author icanci + * @since 1.0 Created in 2023/09/21 13:19 + */ +package cn.icanci.loopstack.bic.biz.adapter; \ No newline at end of file diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java new file mode 100644 index 0000000..7294e4f --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java @@ -0,0 +1,34 @@ +package cn.icanci.loopstack.bic.biz.cache; + +import lombok.Data; + +import java.util.Objects; + +/** + * 本地缓存唯一Key + * + * @author icanci + * @since 1.0 Created in 2023/09/21 10:48 + */ +@Data +public class GraphKey { + /** 系统uuid */ + private String systemUuid; + /** 用例uuid */ + private String useCaseUuid; + + @Override + public boolean equals(Object object) { + if (this == object) + return true; + if (object == null || getClass() != object.getClass()) + return false; + GraphKey graphKey = (GraphKey) object; + return Objects.equals(systemUuid, graphKey.systemUuid) && Objects.equals(useCaseUuid, graphKey.useCaseUuid); + } + + @Override + public int hashCode() { + return Objects.hash(systemUuid, useCaseUuid); + } +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java index a050dba..5f0eece 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java @@ -1,9 +1,12 @@ package cn.icanci.loopstack.bic.biz.dts.impl; +import javax.annotation.Resource; + import org.springframework.stereotype.Service; import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; +import cn.icanci.loopstack.bic.biz.service.SnapshotService; import cn.icanci.loopstack.bic.common.model.base.EdgeStyleVO; /** @@ -14,8 +17,18 @@ import cn.icanci.loopstack.bic.common.model.base.EdgeStyleVO; @Service @DTS(EdgeStyleVO.class) public class EdgeStyleDtsServiceImpl implements GraphDtsService { + @Resource + private SnapshotService snapshotService; + @Override - public void dtsUnitViewTree(EdgeStyleVO type) { - // TODO 自动刷新纠察图结构缓存 + public void dtsUnitViewTree(EdgeStyleVO edgeStyle) { + // Tips: 创建线程池进行并行更新 + // 1 获取边被使用的系统和用例 + // 1.1 如果没有,结束 + // 1.2 如果有,获取所有使用此边的纠察图 + // 2 遍历进行更新 + // TODO 自动刷新快照和版本, + // 自动刷新纠察图结构缓存 + // snapshotService.refresh(edgeStyle.getSystemUuid(),); } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java index 9ab6b4e..1a8508a 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java @@ -1,9 +1,12 @@ package cn.icanci.loopstack.bic.biz.dts.impl; +import javax.annotation.Resource; + import org.springframework.stereotype.Service; import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; +import cn.icanci.loopstack.bic.biz.service.SnapshotService; import cn.icanci.loopstack.bic.common.model.base.NodeStyleVO; /** @@ -14,8 +17,16 @@ import cn.icanci.loopstack.bic.common.model.base.NodeStyleVO; @Service @DTS(NodeStyleVO.class) public class NodeStyleDtsServiceImpl implements GraphDtsService { + @Resource + private SnapshotService snapshotService; + @Override public void dtsUnitViewTree(NodeStyleVO type) { - // TODO 节点样式变更之后:自动刷新纠察图结构缓存 + // 1 获取节点被使用的系统和用例 + // 1.1 如果没有,结束 + // 1.2 如果有,获取所有使用此节点的纠察图 + // 2 遍历进行更新 + // TODO 自动刷新快照和版本, + // 节点样式变更之后:自动刷新纠察图结构缓存 } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java index 9daea63..b658c5c 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java @@ -1,9 +1,12 @@ package cn.icanci.loopstack.bic.biz.dts.impl; +import javax.annotation.Resource; + import org.springframework.stereotype.Service; import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; +import cn.icanci.loopstack.bic.biz.service.SnapshotService; import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; /** @@ -14,8 +17,16 @@ import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; @Service @DTS(NodeVueVO.class) public class NodeVueDtsServiceImpl implements GraphDtsService { + @Resource + private SnapshotService snapshotService; + @Override public void dtsUnitViewTree(NodeVueVO type) { - // TODO 节点组件变更之后:自动刷新纠察图结构缓存 + // 1 获取节点被使用的系统和用例 + // 1.1 如果没有,结束 + // 1.2 如果有,获取所有使用此节点的纠察图 + // 2 遍历进行更新 + // TODO 自动刷新快照和版本 + // 节点组件变更之后:自动刷新纠察图结构缓存 } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java index 4da1759..d2ffe65 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java @@ -14,6 +14,7 @@ import com.google.common.collect.Sets; import cn.hutool.core.lang.Pair; import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; +import cn.icanci.loopstack.bic.biz.service.SnapshotService; import cn.icanci.loopstack.bic.biz.service.UnitViewService; import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import cn.icanci.loopstack.bic.common.model.graph.*; @@ -27,6 +28,8 @@ import cn.icanci.loopstack.bic.common.model.graph.*; public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService { @Resource private UnitViewService unitViewService; + @Resource + private SnapshotService snapshotService; @Override public void dtsUnitViewTree(UnitViewTreeVO unitViewTree) { @@ -45,7 +48,7 @@ public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService { +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java new file mode 100644 index 0000000..19a0719 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.biz.service; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/21 00:08 + */ +public interface SnapshotService { + /** + * 刷新快照 + * + * @param systemUuid systemUuid + * @param useCaseUuid useCaseUuid + */ + void refresh(String systemUuid, String useCaseUuid); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java new file mode 100644 index 0000000..ba98068 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java @@ -0,0 +1,27 @@ +package cn.icanci.loopstack.bic.biz.service; + +import java.util.List; + +import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/20 21:45 + */ +public interface UnitViewSnapshotIndexService extends BaseService { + @Override + List queryAll(); + + @Override + void save(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO); + + @Override + UnitViewSnapshotIndexVO queryById(String id); + + @Override + PageList queryPage(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO, int pageNum, int pageSize); + + UnitViewSnapshotIndexVO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid); + +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java new file mode 100644 index 0000000..f9c9377 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java @@ -0,0 +1,55 @@ +package cn.icanci.loopstack.bic.biz.service.impl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import cn.icanci.loopstack.bic.biz.service.SnapshotService; +import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotIndexService; +import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotService; +import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO; + +/** + * 快照服务 + * + * @author icanci + * @since 1.0 Created in 2023/09/21 00:09 + */ +@Service +public class SnapshotServiceImpl implements SnapshotService { + @Resource + private UnitViewSnapshotService unitViewSnapshotService; + @Resource + private UnitViewSnapshotIndexService unitViewSnapshotIndexService; + + // TODO 数据一致性问题 + @Override + public void refresh(String systemUuid, String useCaseUuid) { + long version = refreshSnapshotIndex(systemUuid, useCaseUuid); + // TODO 构建数据模型 + // TODO 更新内存构建缓存 + } + + /** + * 刷新快照索引并返回版本 + * + * @param systemUuid systemUuid + * @param useCaseUuid useCaseUuid + * @return 版本 + */ + private long refreshSnapshotIndex(String systemUuid, String useCaseUuid) { + UnitViewSnapshotIndexVO index = unitViewSnapshotIndexService.queryBySystemUuidAndUseCaseUuid(systemUuid, useCaseUuid); + long version = System.currentTimeMillis(); + if (index == null) { + index = new UnitViewSnapshotIndexVO(); + index.setSystemUuid(systemUuid); + index.setUseCaseUuid(useCaseUuid); + index.setVersion(version); + } else { + index.setVersion(version); + } + unitViewSnapshotIndexService.save(index); + return version; + } + +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java new file mode 100644 index 0000000..e0796da --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java @@ -0,0 +1,60 @@ +package cn.icanci.loopstack.bic.biz.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import cn.icanci.loopstack.bic.biz.mapper.UnitViewSnapshotIndexMapper; +import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotIndexService; +import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.UnitViewSnapshotIndexDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/20 21:45 + */ +@Service +public class UnitViewSnapshotIndexServiceImpl implements UnitViewSnapshotIndexService { + + @Resource + private UnitViewSnapshotIndexDAO unitViewSnapshotIndexDAO; + @Resource + private UnitViewSnapshotIndexMapper unitViewSnapshotIndexMapper; + + @Override + public List queryAll() { + return unitViewSnapshotIndexMapper.dos2vos(unitViewSnapshotIndexDAO.queryAll()); + } + + @Override + public void save(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO) { + // TODO 日志记录 + if (doInsert(unitViewSnapshotIndexVO)) { + UnitViewSnapshotIndexDO insert = unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO); + unitViewSnapshotIndexDAO.insert(insert); + } else { + unitViewSnapshotIndexDAO.update(unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO)); + } + } + + @Override + public UnitViewSnapshotIndexVO queryById(String id) { + return unitViewSnapshotIndexMapper.do2vo(unitViewSnapshotIndexDAO.queryOneById(id)); + } + + @Override + public PageList queryPage(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO, int pageNum, int pageSize) { + PageList pageQuery = unitViewSnapshotIndexDAO.pageQuery(unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO), pageNum, pageSize); + return new PageList<>(unitViewSnapshotIndexMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); + + } + + @Override + public UnitViewSnapshotIndexVO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid) { + return unitViewSnapshotIndexMapper.do2vo(unitViewSnapshotIndexDAO.queryBySystemUuidAndUseCaseUuid(systemUuid, useCaseUuid)); + } +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java new file mode 100644 index 0000000..ddea092 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java @@ -0,0 +1,33 @@ +package cn.icanci.loopstack.bic.biz.thread; + +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author icanci(1205068) + * @version Id: ThreadUtils, v 0.1 2023/9/18 15:57 icanci Exp $ + */ +public class ThreadUtils { + /** 当前服务核心数 */ + private static final int CORE_SIZE = Runtime.getRuntime().availableProcessors(); + /** 执行任务调度线程池 */ + private static final ThreadPoolExecutor POOL = new ThreadPoolExecutor(CORE_SIZE, // + CORE_SIZE, // + 60L, // + TimeUnit.SECONDS, // + new LinkedBlockingQueue<>(2000), // + runnable -> new Thread(runnable, "ThreadUtils Biz Pool-" + runnable.hashCode()), // + (r, executor) -> { + throw new RuntimeException("ThreadUtils Biz Pool is EXHAUSTED!"); + }); + + /** + * 线程执行 + * + * @param command command + */ + public static void execute(Runnable command) { + POOL.execute(command); + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java index dba7809..3c483c5 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java @@ -8,7 +8,7 @@ import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotDO; */ public interface UnitViewSnapshotDAO extends BaseDAO { /** 文档对应的名字 */ - String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view"; + String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view-snapshot"; /** 文档对应的Class */ Class COLLECTION_CLASS = UnitViewSnapshotDO.class; diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java new file mode 100644 index 0000000..f89f812 --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.dal.mongo.daointerface; + +import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/20 22:05 + */ +public interface UnitViewSnapshotIndexDAO extends BaseDAO { + /** 文档对应的名字 */ + String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view-snapshot-index"; + /** 文档对应的Class */ + Class COLLECTION_CLASS = UnitViewSnapshotIndexDO.class; + + UnitViewSnapshotIndexDO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid); + + /** 列 */ + interface UnitViewSnapshotIndexColumn extends BaseColumn { + String SYSTEM_UUID = "systemUuid"; + String USE_CASE_UUID = "useCaseUuid"; + String VERSION = "version"; + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java new file mode 100644 index 0000000..91af02c --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.dal.mongo.dateobject; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/20 21:48 + */ +@Data +public class UnitViewSnapshotIndexDO extends BaseDO { + /** 系统关联id */ + private String systemUuid; + /** 用例关联id */ + private String useCaseUuid; + /** 版本 以时间戳为准 */ + private long version; +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java new file mode 100644 index 0000000..868dbe9 --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java @@ -0,0 +1,75 @@ +package cn.icanci.loopstack.bic.dal.mongo.mongo; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.UnitViewSnapshotIndexDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/20 22:07 + */ +@Service("unitViewSnapshotIndexDAO") +public class MongoUnitViewSnapshotIndexDAO extends AbstractBaseDAO implements UnitViewSnapshotIndexDAO { + @Override + public void insert(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO) { + super.insert(unitViewSnapshotIndexDO); + mongoTemplate.insert(unitViewSnapshotIndexDO, COLLECTION_NAME); + } + + @Override + public void update(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO) { + super.update(unitViewSnapshotIndexDO); + mongoTemplate.save(unitViewSnapshotIndexDO, COLLECTION_NAME); + } + + @Override + public List queryAll() { + Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public PageList pageQuery(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO, int pageNum, int pageSize) { + Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV); + if (StringUtils.isNotBlank(unitViewSnapshotIndexDO.getSystemUuid())) { + criteria.and(UnitViewSnapshotIndexColumn.SYSTEM_UUID).is(unitViewSnapshotIndexDO.getSystemUuid()); + } + if (StringUtils.isNotBlank(unitViewSnapshotIndexDO.getUseCaseUuid())) { + criteria.and(UnitViewSnapshotIndexColumn.USE_CASE_UUID).is(unitViewSnapshotIndexDO.getUseCaseUuid()); + } + Query query = new Query(criteria); + query.with(Sort.by(Sort.Direction.DESC, UnitViewSnapshotIndexColumn.CREATE_TIME)); + return pageQuery(query, COLLECTION_CLASS, pageSize, pageNum, COLLECTION_NAME); + } + + @Override + public UnitViewSnapshotIndexDO queryOneById(String _id) { + Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn._ID).is(_id); + criteria.and(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public Class getBaseColumn() { + return UnitViewSnapshotIndexColumn.class; + } + + @Override + public UnitViewSnapshotIndexDO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid) { + Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.USE_CASE_UUID).is(useCaseUuid); + criteria.and(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV); + criteria.and(UnitViewSnapshotIndexColumn.SYSTEM_UUID).is(systemUuid); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } +} diff --git a/graph/pom.xml b/graph/pom.xml index b46b3ab..72e8a60 100644 --- a/graph/pom.xml +++ b/graph/pom.xml @@ -7,6 +7,7 @@ cn.icanci.loopstack.bic 1.0-SNAPSHOT + 4.0.0 bic-graph @@ -22,9 +23,8 @@ - cn.icanci.loopstack.bic - bic-common - ${parent.version} + com.google.guava + guava \ No newline at end of file diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java deleted file mode 100644 index a9bc4eb..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java +++ /dev/null @@ -1,10 +0,0 @@ -package cn.icanci.loopstack.bic.graph.builder; - -/** - * 边默认属性构建器 - * - * @author icanci - * @since 1.0 Created in 2023/08/21 14:03 - */ -public class EdgeDefaultDefineBuilder { -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java deleted file mode 100644 index 72cdcba..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java +++ /dev/null @@ -1,66 +0,0 @@ -package cn.icanci.loopstack.bic.graph.builder; - -import java.util.List; - -import com.google.common.collect.Lists; - -import cn.icanci.loopstack.bic.graph.NodePortConstant; -import cn.icanci.loopstack.bic.graph.node.*; - -/** - * 节点默认属性构建器 - * - * @author icanci - * @since 1.0 Created in 2023/08/21 14:03 - */ -public class NodeDefaultDefineBuilder { - - /** - * 构建默认 Node Port - * - * @return 返回NodePort - */ - public static NodePort buildNodePort() { - NodePort nodePort = new NodePort(); - nodePort.setGroups(buildGroups()); - nodePort.setItems(buildItems()); - return nodePort; - } - - private static NodePortGroups buildGroups() { - NodePortGroups groups = new NodePortGroups(); - groups.setIn(buildGroup(NodePortConstant.LEFT)); - groups.setOut(buildGroup(NodePortConstant.RIGHT)); - return groups; - } - - private static NodePortGroup buildGroup(String position) { - NodePortGroup group = new NodePortGroup(); - group.setPosition(position); - group.setAttrs(buildAttrs()); - return group; - } - - private static NodePortGroupAttrs buildAttrs() { - NodePortGroupAttrs attrs = new NodePortGroupAttrs(); - attrs.setCircle(buildCircle()); - return attrs; - } - - private static NodePortGroupAttrsCircle buildCircle() { - NodePortGroupAttrsCircle circle = new NodePortGroupAttrsCircle(); - circle.setR(2); - circle.setMagnet(true); - circle.setStroke("#31d0c6"); - circle.setStrokeWidth(2); - circle.setFill("#fff"); - return circle; - } - - private static List buildItems() { - List ret = Lists.newArrayList(); - ret.add(new NodePortItem(NodePortConstant.PORT_LEFT, NodePortConstant.IN)); - ret.add(new NodePortItem(NodePortConstant.PORT_RIGHT, NodePortConstant.OUT)); - return ret; - } -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java deleted file mode 100644 index 42fc8f1..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function; - -/** - * @author icanci - * @since 1.0 Created in 2023/08/21 13:42 - */ -public interface BicFunction { - /** - * 函数调用结果 - * - * @param context 函数调用上下文 - * @return 返回函数调用结果 - */ - FuncInvokeResponse invoke(FuncContext context); -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java deleted file mode 100644 index 69ca115..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function; - -/** - * @author icanci - * @since 1.0 Created in 2023/08/21 13:39 - */ -public interface FuncContext { -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java deleted file mode 100644 index cdfcd14..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function; - -/** - * @author icanci - * @since 1.0 Created in 2023/08/21 13:43 - */ -public interface FuncInvokeResponse { -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java deleted file mode 100644 index 2f8f497..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function.edge; - -import cn.icanci.loopstack.bic.graph.function.BicFunction; -import cn.icanci.loopstack.bic.graph.function.FuncContext; -import cn.icanci.loopstack.bic.graph.function.FuncInvokeResponse; - -/** - * @author icanci - * @since 1.0 Created in 2023/08/21 13:42 - */ -public class EdgeClickFunction implements BicFunction { - - @Override - public FuncInvokeResponse invoke(FuncContext context) { - return null; - } -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java deleted file mode 100644 index 328a0b5..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function.edge; - -import cn.icanci.loopstack.bic.graph.function.FuncContext; - -/** - * 边函数节点上下文 - * - * @author icanci - * @since 1.0 Created in 2023/08/21 13:39 - */ -public class EdgeFuncContext implements FuncContext { - -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java deleted file mode 100644 index 12ee12c..0000000 --- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.icanci.loopstack.bic.graph.function.node; - -import cn.icanci.loopstack.bic.graph.function.FuncContext; - -/** - * Node节点函数上下文 - * - * @author icanci - * @since 1.0 Created in 2023/08/21 13:40 - */ -public class NodeFuncContext implements FuncContext { -} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java new file mode 100644 index 0000000..a542ba6 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/21 13:20 + */ +@Data +public class UnitViewNode extends Node { + // 节点的一些额外参数 +} diff --git a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java deleted file mode 100644 index 1f771c6..0000000 --- a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.icanci.loopstack.bic.graph.builder; - -import cn.hutool.json.JSONUtil; -import cn.icanci.loopstack.bic.graph.node.NodePort; - -import org.junit.Test; - -/** - * @author icanci - * @since 1.0 Created in 2023/08/21 14:41 - */ -public class TestNodeBuilder { - @Test - public void testBuildNodePort() { - NodePort nodePort = NodeDefaultDefineBuilder.buildNodePort(); - System.out.println(JSONUtil.toJsonStr(nodePort)); - } -} -- Gitee