Commit 0c5f98b1 by qiuchaofei

1.按照新原型设计模型,实体类,新的前后端接口。2修改从mongo同步数据到neo4j的方法。

parent 03229683
......@@ -12,9 +12,9 @@ import java.util.stream.Collectors;
import com.keymobile.metadata.metadataRelation.pojo.BaseRelationship;
import com.keymobile.metadata.metadataRelation.pojo.MetaData;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.Node;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import com.keymobile.metadata.metadataRelation.service.AsyncDataFromMongoToNeo4j;
import com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService;
......@@ -30,7 +30,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -165,7 +164,7 @@ public class MetaDataController {
returnReslult = metadataService.findResultByModelName(modelName0,sizeInt);
}else{
List<MetaData> metaDataList = metadataService.finAllMetaData();
Map<String, Node> nodeMap = new HashMap<>();
Map<String, ReturnNode> nodeMap = new HashMap<>();
Map<String, String> child2Parent = new HashMap<>();
Map<String, List<String>> parent2Children = new HashMap<>();
......@@ -175,7 +174,7 @@ public class MetaDataController {
Map<String, MetaModel> metaModelMap = new HashMap<>();
for (MetaData metaData : metaDataList) {
Node node = new Node();
ReturnNode node = new ReturnNode();
String[] strings = metaData.getMetadataId().split("=");
String modelName = strings[0];
......@@ -184,7 +183,7 @@ public class MetaDataController {
String systemName = metaData.getSystem();
Node systemNode = new Node();
ReturnNode systemNode = new ReturnNode();
systemNode.setId("catalog=" + systemName);
systemNode.setName(systemName);
String newModelName = "Catalog";
......@@ -297,7 +296,7 @@ public class MetaDataController {
// }
if (nodeMap.containsKey("" + startId)) {
Node startNode = nodeMap.get("" + startId);
ReturnNode startNode = nodeMap.get("" + startId);
startMetaId = nodeMap.get("" + startId).getId();
}
......@@ -306,7 +305,7 @@ public class MetaDataController {
endMetaId = nodeMap.get("" + endId).getId();
}
if(StringUtils.isNotBlank(startMetaId) &&StringUtils.isNotBlank(endMetaId)){
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId("" + baseRelationship.getId());
edge.setFromId(startMetaId);
edge.setToId(endMetaId);
......@@ -368,7 +367,7 @@ public class MetaDataController {
metaDataList = metadataService.findChildrenByParentId(dataId,count);
}
for (MetaData metaData : metaDataList) {
Node node = new Node();
ReturnNode node = new ReturnNode();
String[] strings = metaData.getMetadataId().split("=");
String modelName = strings[0];
......
package com.keymobile.metadata.metadataRelation.controller;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import com.keymobile.metadata.metadataRelation.service.IMetadataService;
import com.keymobile.metadata.metadataRelation.service.ISchemaService;
import com.keymobile.metadata.metadataRelation.service.ISystemService;
import com.keymobile.metadata.metadataRelation.service.impl.SystemServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@Api(value = "关系图谱的接口", tags = "relational graph controller")
public class RelationalGraphController {
private static final Logger logger = LoggerFactory.getLogger(RelationalGraphController.class);
@Autowired
private IMetadataService metadataService;
@Autowired
private ISystemService systemService;
@Autowired
private ISchemaService schemaService;
//系统总图的接口
@ApiOperation(tags = "", value = "系统总图")
@RequestMapping(path = "/getSystemGraph1", method = RequestMethod.GET)
public ReturnReslult getSystemGraph1(){
int size = 300;
return metadataService.getSystemGraph(size);
}
//系统总图下钻获取schema,schema要分层
@ApiOperation(tags = "", value = "按照系统获取schema,要分层")
@RequestMapping(path = "/getSchemaBySystemId", method = RequestMethod.GET)
public Map<String, List<ReturnNode>> getSchemaBySystem(String systemId){
//传入一个系统名称/id,返回系统下的所有schema,注意分层
Map<String, List<ReturnNode>> stringListMap = systemService.getSchemaBySystemId(systemId);
int size = 300;
return stringListMap;// metadataService.getSystemGraph(size);
}
//单个schema的数据,包括表,视图,函数,过程等,列表形势
@ApiOperation(tags = "", value = "按照系统获取schema,要分层")
@RequestMapping(path = "/getTableBySchemaId", method = RequestMethod.GET)
public Map<String, List<ReturnNode>> getTableBySchemaId(String schemaId){
//传入一个系统名称/id,返回系统下的所有schema,注意分层
Map<String, List<ReturnNode>> stringListMap = schemaService.getTablesBySchemaId(schemaId);
int size = 300;
return stringListMap;// metadataService.getSystemGraph(size);
}
//关系的分层,图的形势,由里到外
//表的分析,关系分析--表与模型,表与质量,表与标准,表与作业的关系
//表的分析,链路分析,表与其他表的关系,其他表可以下钻,并且可以收缩。
//搜索接口,多个搜索结果,则先弹出列表(对象的全路径),再进行选择哪个对象
//同步数据,从mongo到neo4j,从“环境,系统,schema,表”的结构
}
......@@ -4,6 +4,25 @@ package com.keymobile.metadata.metadataRelation.pojo;
public class BaseNode extends AllBaseEntity {
private String name; //名称
public String getCnName() {
return cnName;
}
public void setCnName(String cnName) {
this.cnName = cnName;
}
public String getMetadataId() {
return metadataId;
}
public void setMetadataId(String metadataId) {
this.metadataId = metadataId;
}
private String metadataId;
private String cnName;
// @Relationship(type= NodeType.REF)
// private Set<BaseRelationship> relationships; //关系列表
......
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label = "Neo4jFunction")
public class Neo4jFunction extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label="Neo4jJob")
public class Neo4jJob extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label = "Neo4jProcedure")
public class Neo4jProcedure extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label = "Neo4jSchema")
public class Neo4jSchema extends BaseNode {
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
private String label;
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label = "Neo4jSystem")
public class Neo4jSystem extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label ="Neo4jTable")
public class Neo4jTable extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label ="Neo4jView")
public class Neo4jView extends BaseNode {
}
package com.keymobile.metadata.metadataRelation.pojo.mongo;
import java.util.ArrayList;
import java.util.List;
public class MongoData {
private String _id;
private String name;
private String cnName;
private String parentId;
public List<String> getSysList() {
return sysList;
}
public void setSysList(List<String> sysList) {
this.sysList = sysList;
}
private List<String> sysList = new ArrayList<>();
public String get_class() {
return _class;
}
public void set_class(String _class) {
this._class = _class;
}
private String _class;
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCnName() {
return cnName;
}
public void setCnName(String cnName) {
this.cnName = cnName;
}
}
package com.keymobile.metadata.metadataRelation.pojo.returnBean;
public class Edge {
public class ReturnEdge {
private String edgeId;
private String fromId;
......
package com.keymobile.metadata.metadataRelation.pojo.returnBean;
public class Node {
public class ReturnNode {
private String name;
private String id;
......
......@@ -3,7 +3,6 @@ package com.keymobile.metadata.metadataRelation.pojo.returnBean;
import org.apache.commons.collections.map.HashedMap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -20,9 +19,9 @@ public class ReturnReslult {
}
private List<Edge> edges = new ArrayList<>();
private List<ReturnEdge> edges = new ArrayList<>();
private List<Node> nodes = new ArrayList<>();
private List<ReturnNode> nodes = new ArrayList<>();
public Map<String, MetaModel> getMetaModelMap() {
return metaModelMap;
......@@ -35,19 +34,19 @@ public class ReturnReslult {
private Map<String, MetaModel> metaModelMap = new HashedMap();
public List<Edge> getEdges() {
public List<ReturnEdge> getEdges() {
return edges;
}
public void setEdges(List<Edge> edges) {
public void setEdges(List<ReturnEdge> edges) {
this.edges = edges;
}
public List<Node> getNodes() {
public List<ReturnNode> getNodes() {
return nodes;
}
public void setNodes(List<Node> nodes) {
public void setNodes(List<ReturnNode> nodes) {
this.nodes = nodes;
}
......
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jFunction;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jTable;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jFunctionRepository extends Neo4jRepository<Neo4jFunction, Long> {
List<Neo4jFunction> findNeo4jFunctionByMetadataId(String metadataId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jFunction;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jProcedure;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jProcedureRepository extends Neo4jRepository<Neo4jProcedure, Long> {
List<Neo4jProcedure> findNeo4jProcedureByMetadataId(String metadataId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jSchemaRepository extends Neo4jRepository<Neo4jSchema, Long> {
List<Neo4jSchema> findNeo4jSchemaByMetadataId(String metadataId);
@Query("match (n:Neo4jSchema{metadataId:{schemaId}} )-[r:Composition]->(m) return m ")
List<BaseNode> getTableBySchemaId(@Param("schemaId") String schemaId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jSystemRepository extends Neo4jRepository<Neo4jSystem, Long> {
List<Neo4jSystem> findNeo4jSystemByMetadataId(String metadataId);
// @Query("MATCH p=(n:MetaData {metadataId:{parentId}})-[r:Composition]->(m) RETURN m limit {limit} ")
@Query("match (n:Neo4jSystem{metadataId:{systemId}} )-[r:Composition]->(m) return m ")
List<Neo4jSchema> getSchemaBySystemId(@Param("systemId") String systemId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jTable;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> {
List<Neo4jTable> findNeo4jTableByMetadataId(String metadataId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jProcedure;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jView;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface Neo4jViewRepository extends Neo4jRepository<Neo4jView,Long> {
List<Neo4jView> findNeo4jViewByMetadataId(String metadataId);
}
package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
......@@ -10,6 +13,9 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.concurrent.Executor;
@Service
......@@ -19,12 +25,38 @@ public class AsyncDataFromMongoToNeo4j {
@Autowired
private IMetadataService metadataService;
@Autowired
private JdbcTemplate jdbcTemplate;
@Async
public void asyncDataFromMongoToNeo4j(String catalogName) {
metadataService.syschroRelationFromMongo(catalogName);
metadataService.deleteTempNodeByCatalogName(catalogName);
metadataService.createTempNode(catalogName);
String sql = "select scope_id, scope_name from auth_scope";
List<MongoData> mongoDataList = jdbcTemplate.query(sql, new RowMapper<MongoData>() {
@Override
public MongoData mapRow(ResultSet resultSet, int i) throws SQLException {
MongoData user = new MongoData();
user.set_id(resultSet.getString("scope_id"));
user.setName(resultSet.getString("scope_name"));
user.setCnName(resultSet.getString("scope_name"));
user.set_class("System");
return user;
}
});
metadataService.syschroMetadataFromMongo(catalogName,mongoDataList);
//先同步元数据,纵向关系,root开始
//再同步元数据的横向关系
// metadataService.syschroRelationFromMongo(catalogName);
// // 同步其他数据(模型,标准,质量等)
//
// //同步作业内部的临时数据
// metadataService.deleteTempNodeByCatalogName(catalogName);
// metadataService.createTempNode(catalogName);
}
......
......@@ -3,7 +3,6 @@ package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import com.keymobile.metadata.metadataRelation.pojo.BaseRelationship;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge;
import java.util.List;
......@@ -67,4 +66,6 @@ public interface IBaseRelationshipService {
* @desc 根据节点名称, 获取所有有关系的节点
*/
List<BaseNode> findMetadataByStartName(String startName);
void saveRelation(String startMetadataId, String endMetadataid, String composition);
}
......@@ -3,6 +3,7 @@ package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.pojo.BaseRelationship;
import com.keymobile.metadata.metadataRelation.pojo.MetaData;
import com.keymobile.metadata.metadataRelation.pojo.TempNode;
import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import java.util.List;
......@@ -97,4 +98,6 @@ public interface IMetadataService {
Map<String, String> getAutoMatchByInput(String name,int countInt ,int offsetInt);
ReturnReslult searchGraphBySystem(String metadataId, int layerLong);
void syschroMetadataFromMongo(String catalogName,List<MongoData> mongoDataList);
}
package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import java.util.List;
import java.util.Map;
public interface ISchemaService {
Map<String,String> getSchemaBySystem(String systemId);
Map<String, List<ReturnNode>> getTablesBySchemaId(String schemaId);
}
package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import java.util.List;
import java.util.Map;
public interface ISystemService {
Map<String ,List<ReturnNode>> getSchemaBySystemId(String systemId);
}
......@@ -3,6 +3,8 @@ package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.config.Neo4jConfig;
import com.keymobile.metadata.metadataRelation.pojo.*;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem;
import com.keymobile.metadata.metadataRelation.respository.*;
import com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService;
import org.neo4j.driver.v1.Driver;
......@@ -165,4 +167,18 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService {
// }
return null;
}
@Override
public void saveRelation(String startId, String endId, String composition) {
Neo4jConfig neo4jConfig = new Neo4jConfig();
Driver neo4jConnection = neo4jConfig.getNeo4jConnection();
Session session = neo4jConnection.session();
// match (n{metadataId:"Column=1=d9c2d67e56a3428e8e4f22918782437f"}),
// (m{metadataId:"Table=1=d644b631fa8c434e928bcd1f1665b060"})
// create (n)<-[r:Composition]-(m)
// return n,m,r
String cypher = " match (n{metadataId:\""+startId+"\"}),(m{metadataId:\""+endId+"\"}) merge (n)-[r:"+composition+"]->(m) return n,m,r ";
session.run(cypher);
logger.info("运行保存关系完成:" + cypher);
}
}
......@@ -9,11 +9,15 @@ import java.util.concurrent.*;
import com.keymobile.metadata.metadataRelation.config.Neo4jConfig;
import com.keymobile.metadata.metadataRelation.pojo.*;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge;
import com.keymobile.metadata.metadataRelation.pojo.metadata.*;
import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import com.keymobile.metadata.metadataRelation.remote.MetadataRepoRemoteService;
import com.keymobile.metadata.metadataRelation.respository.*;
import com.keymobile.metadata.metadataRelation.respository.metadata.*;
import com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService;
import com.keymobile.metadata.metadataRelation.service.IMetadataService;
import com.keymobile.metadata.metadataRelation.util.Neo4jTool;
......@@ -29,13 +33,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Meta;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import sun.misc.BASE64Encoder;
import javax.swing.*;
@Service
public class MetadataServiceImpl implements IMetadataService {
......@@ -69,7 +70,21 @@ public class MetadataServiceImpl implements IMetadataService {
@Autowired
private MetadataRepoRemoteService metadataRepoRemoteService;
@Autowired
private Neo4jSystemRepository neo4jSystemRepository;
@Autowired
private Neo4jSchemaRepository neo4jSchemaRepository;
@Autowired
private Neo4jTableRepository neo4jTableRepository;
@Autowired
private Neo4jViewRepository neo4jViewRepository;
@Autowired
private Neo4jFunctionRepository neo4jFunctionRepository;
@Autowired
private Neo4jProcedureRepository neo4jProcedureRepository;
@Override
public List<MetaData> findNodeByName(String dataName) {
......@@ -105,7 +120,7 @@ public class MetadataServiceImpl implements IMetadataService {
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
// metaDataList.add(data);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
......@@ -137,7 +152,7 @@ public class MetadataServiceImpl implements IMetadataService {
*/
// relationship.id();
//
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
String relationName =
nodesMap.get(startID).getMetadataId() + "-" + rType + "-"
+ nodesMap.get(endID).getMetadataId();
......@@ -199,7 +214,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
......@@ -233,11 +248,11 @@ public class MetadataServiceImpl implements IMetadataService {
long time0 = System.currentTimeMillis();
ExecutorService executor = Executors.newFixedThreadPool(threadCount);
List<Future<List<Edge>>> relations = new ArrayList<>();
List<Future<List<ReturnEdge>>> relations = new ArrayList<>();
final CountDownLatch countDownLatch = new CountDownLatch(threadCount);
for(String metadataId:metadataIdList){
Future<List<Edge>> futures = executor.submit(new neo4jRelaionTask(metadataId,metadataIdList,modelName,session,countDownLatch));
Future<List<ReturnEdge>> futures = executor.submit(new neo4jRelaionTask(metadataId,metadataIdList,modelName,session,countDownLatch));
relations.add(futures);
}
try {
......@@ -249,10 +264,10 @@ public class MetadataServiceImpl implements IMetadataService {
executor.shutdown();
}
for(Future<List<Edge>> f : relations){
for(Future<List<ReturnEdge>> f : relations){
try {
List<Edge> relationList = f.get();
for(Edge edge:relationList){
List<ReturnEdge> relationList = f.get();
for(ReturnEdge edge:relationList){
// System.out.println("relation:"+edge.getEdgeId());
returnReslult.getEdges().add(edge);
}
......@@ -362,7 +377,7 @@ public class MetadataServiceImpl implements IMetadataService {
String modelName = "System";
List<String> metadataIdList = new ArrayList<>();
Map<Long, com.keymobile.metadata.metadataRelation.pojo.returnBean.Node> nodesMap = new HashMap<>();
Map<Long, ReturnNode> nodesMap = new HashMap<>();
Map<String, MetaModel> metaModelMap = new HashMap<>();
while (result.hasNext()) {
......@@ -384,7 +399,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(metaData.getMetadataId() == null ){
metaData.setMetadataId("System="+metaData.getName());
}
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
......@@ -426,7 +441,7 @@ public class MetadataServiceImpl implements IMetadataService {
endMEtaId = nodesMap.get(endID).getId();
}
if(!StringUtils.isBlank(startMetaId) && !StringUtils.isBlank(endMEtaId)){
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
String relationName =
nodesMap.get(startID).getId() + "-" + rType + "-"
+ nodesMap.get(endID).getId();
......@@ -444,7 +459,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
for(Object object:nodesMap.keySet()){
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node node = nodesMap.get(object);
ReturnNode node = nodesMap.get(object);
returnReslult.getNodes().add(node);
}
......@@ -500,9 +515,9 @@ public class MetadataServiceImpl implements IMetadataService {
}
public void getPreNodeBySystemName(String metadataName, Session session, ReturnReslult returnReslult,
Map<Long, com.keymobile.metadata.metadataRelation.pojo.returnBean.Node> longMetaDataMap,
Map<Long, ReturnNode> longMetaDataMap,
Map<String, MetaModel> metaModelMap ,
Map<String,Edge> edgeMap , int layer){
Map<String, ReturnEdge> edgeMap , int layer){
String cypher = "match p=(n:softplatform{name:\""+metadataName+"\"}) <-[r]-(m:softplatform) return p";
......@@ -538,7 +553,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(metaData.getMetadataId() ==null){
metaData.setMetadataId("System="+ metaData.getName());
}
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnNode.setType("MetaData");
......@@ -574,7 +589,7 @@ public class MetadataServiceImpl implements IMetadataService {
long endLong = relationship.endNodeId();
if(longMetaDataMap.containsKey(startLong )&& longMetaDataMap.containsKey(endLong)){
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
String edgeId = startLong+"_"+endLong;
if(edgeMap.containsKey(edgeId)){
continue;
......@@ -593,9 +608,9 @@ public class MetadataServiceImpl implements IMetadataService {
}
public void getToNodeBySystemName(String metadataName, Session session, ReturnReslult returnReslult,
Map<Long, com.keymobile.metadata.metadataRelation.pojo.returnBean.Node> longMetaDataMap,
Map<Long, ReturnNode> longMetaDataMap,
Map<String, MetaModel> metaModelMap ,
Map<String,Edge> edgeMap , int layer){
Map<String, ReturnEdge> edgeMap , int layer){
String cypher = "match p=(n:softplatform{name:\""+metadataName+"\"}) -[r]->(m:softplatform) return p";
......@@ -631,7 +646,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(metaData.getMetadataId() ==null){
metaData.setMetadataId("System="+ metaData.getName());
}
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
longMetaDataMap.put(node.id(),returnNode);
......@@ -666,7 +681,7 @@ public class MetadataServiceImpl implements IMetadataService {
long endLong = relationship.endNodeId();
if(longMetaDataMap.containsKey(startLong )&& longMetaDataMap.containsKey(endLong)){
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
String edgeId = startLong+"_"+endLong;
if(edgeMap.containsKey(edgeId)){
continue;
......@@ -696,17 +711,17 @@ public class MetadataServiceImpl implements IMetadataService {
Session session = neo4jConnection.session();
String[] strings = metadataId.split("=");
String metadataName = strings[strings.length-1];
Map<Long, com.keymobile.metadata.metadataRelation.pojo.returnBean.Node> longMetaDataMap =new HashMap<>();
Map<String,Edge> edgeMap =new HashMap<>();
Map<Long, ReturnNode> longMetaDataMap =new HashMap<>();
Map<String, ReturnEdge> edgeMap =new HashMap<>();
Map<String, MetaModel> metaModelMap = new HashMap<>();
getPreNodeBySystemName(metadataName,session,returnReslult,longMetaDataMap,metaModelMap,edgeMap,layer);
for(Object obj : longMetaDataMap.keySet()){
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node node = longMetaDataMap.get(obj);
ReturnNode node = longMetaDataMap.get(obj);
returnReslult.getNodes().add(node);
}
for(Object obj : edgeMap.keySet()){
Edge edge = edgeMap.get(obj);
ReturnEdge edge = edgeMap.get(obj);
returnReslult.getEdges().add(edge);
}
......@@ -715,17 +730,19 @@ public class MetadataServiceImpl implements IMetadataService {
returnReslult.setCount(0);
getToNodeBySystemName(metadataName,session,returnReslult,longMetaDataMap,metaModelMap,edgeMap,layer);
for(Object obj : longMetaDataMap.keySet()){
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node node = longMetaDataMap.get(obj);
ReturnNode node = longMetaDataMap.get(obj);
returnReslult.getNodes().add(node);
}
for(Object obj : edgeMap.keySet()){
Edge edge = edgeMap.get(obj);
ReturnEdge edge = edgeMap.get(obj);
returnReslult.getEdges().add(edge);
}
returnReslult.setMetaModelMap(metaModelMap);
return returnReslult;
}
@Override
public ReturnReslult searchGraph(String metadataId,int layer ) {
logger.info("开始获取图形。。。");
......@@ -760,7 +777,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnReslult.getNodes().add(returnNode);
......@@ -783,7 +800,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(returnNode.getId().equals(metadataId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(returnNode.getId()+"_"+childId);
edge.setFromId(returnNode.getId());
edge.setToId(childId);
......@@ -814,7 +831,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnReslult.getNodes().add(returnNode);
......@@ -837,7 +854,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(returnNode.getId().equals(metadataId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(metadataId+"_"+returnNode.getId());
edge.setFromId(metadataId);
edge.setToId(returnNode.getId());
......@@ -875,7 +892,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnReslult.getNodes().add(returnNode);
......@@ -898,7 +915,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(returnNode.getId().equals(metadataId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(returnNode.getId()+"_"+childId);
edge.setFromId(returnNode.getId());
edge.setToId(childId);
......@@ -916,7 +933,7 @@ public class MetadataServiceImpl implements IMetadataService {
logger.info("cypher:" + cypher);
Map<Long,MetaData> longMetaDataMap = new HashMap<>();
Map<String,Edge> edgeMap = new HashMap<>();
Map<String, ReturnEdge> edgeMap = new HashMap<>();
//先获取纵向节点,
StatementResult result = session.run(cypher);
......@@ -937,7 +954,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
......@@ -967,7 +984,7 @@ public class MetadataServiceImpl implements IMetadataService {
long endLong = relationship.endNodeId();
if(longMetaDataMap.containsKey(startLong )&& longMetaDataMap.containsKey(endLong)){
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
String edgeId = startLong+"_"+endLong;
if(edgeMap.containsKey(edgeId)){
continue;
......@@ -983,7 +1000,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
for(Object obj : edgeMap.keySet()){
Edge edge = edgeMap.get(obj);
ReturnEdge edge = edgeMap.get(obj);
returnReslult.getEdges().add(edge);
}
......@@ -1052,7 +1069,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnReslult.getNodes().add(returnNode);
......@@ -1066,7 +1083,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(returnNode.getId().equals(metadataId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(metadataId+"_"+returnNode.getId());
edge.setFromId(metadataId );
edge.setToId(returnNode.getId());
......@@ -1122,7 +1139,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
returnReslult.getNodes().add(returnNode);
......@@ -1137,7 +1154,7 @@ public class MetadataServiceImpl implements IMetadataService {
if(returnNode.getId().equals(metadataId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(returnNode.getId()+"_"+metadataId);
edge.setFromId(returnNode.getId());
......@@ -1223,12 +1240,155 @@ public class MetadataServiceImpl implements IMetadataService {
return null;
}
@Override
public void syschroMetadataFromMongo(String catalogName,List<MongoData> systemDataList) {
List<String> layer = new ArrayList<>();
layer.add("贴源数据层");
layer.add("基础数据层");
layer.add("整合数据层");
layer.add("统计数据层");
layer.add("分析数据层");
layer.add("集市数据层");
layer.add("应用数据层");
String collectionName = "Metadata_"+catalogName;
Random r = new Random(1);
List<MongoData> catalogDataList = mongoDbServiceImpl.findDatabaseByparentId("root",collectionName);
Map<String ,Neo4jSystem> systemDataMap = new HashMap<>();
for(MongoData systemData:systemDataList){
Neo4jSystem neo4jSystem = new Neo4jSystem();
String systemId = "System="+systemData.get_id();
neo4jSystem.setMetadataId(systemId);
neo4jSystem.setName(systemData.getName());
neo4jSystem.setCnName(systemData.getCnName());
//如果存在,就不用创建
List<Neo4jSystem> neo4jSchemaList = neo4jSystemRepository.findNeo4jSystemByMetadataId(systemId);
if(neo4jSchemaList==null || neo4jSchemaList.size()==0){
neo4jSystemRepository.save(neo4jSystem);
}
systemDataMap.put(systemData.get_id(),neo4jSystem);
}
for(MongoData catalogData:catalogDataList){
List<MongoData> dataBaseDataList= mongoDbServiceImpl.findDataByparentId(catalogData.get_id(),collectionName);
for(MongoData dataBaseData:dataBaseDataList){
List<MongoData> schemaDataList= mongoDbServiceImpl.findDataByparentId(dataBaseData.get_id(),collectionName);
for(MongoData schemaData:schemaDataList){
//系统与schema的关系
Neo4jSchema neo4jSchema = new Neo4jSchema();
neo4jSchema.setMetadataId(schemaData.get_id());
neo4jSchema.setName(schemaData.getName());
neo4jSchema.setCnName(schemaData.getCnName());
//如果存在,就不用创建
int ran1 = r.nextInt(6);
if(ran1>6){
ran1 = 6;
}
if(neo4jSchema.getLabel()==null || neo4jSchema.getLabel().equals("")){
String label = layer.get(ran1);
neo4jSchema.setLabel(label);
}
List<Neo4jSchema> neo4jSchemaList = neo4jSchemaRepository.findNeo4jSchemaByMetadataId(neo4jSchema.getMetadataId());
if(neo4jSchemaList==null || neo4jSchemaList.size()==0){
neo4jSchemaRepository.save(neo4jSchema);
}
Neo4jSystem neo4jSystem = null;
List<String> systemIdList = dataBaseData.getSysList();
for(String systemId:systemIdList){
if(systemDataMap.containsKey(systemId)){
neo4jSystem = systemDataMap.get(systemId);
}
}
relationshipService.saveRelation(neo4jSystem.getMetadataId(),neo4jSchema.getMetadataId(),"Composition");
//根据schema获取表级数据,再按照类型分类:表,视图,作业,函数等
List<MongoData> tableClassDataList = mongoDbServiceImpl.findDataByparentId(schemaData.get_id(),collectionName);
int count=0;//获取前100个表测试
for(MongoData tableClassData:tableClassDataList){
if(count >20){
// break;
}
count++;
String metadataId = tableClassData.get_id();
String endId = tableClassData.get_id();
if(metadataId.startsWith("Table=")){
Neo4jTable neo4jTable = new Neo4jTable();
neo4jTable.setMetadataId(tableClassData.get_id());
neo4jTable.setName(tableClassData.getName());
neo4jTable.setCnName(tableClassData.getCnName());
List<Neo4jTable> neo4jTableList = neo4jTableRepository.findNeo4jTableByMetadataId(metadataId);
if(neo4jTableList==null || neo4jTableList.size()==0){
neo4jTableRepository.save(neo4jTable);
}
}else if(metadataId.startsWith("View=")){
Neo4jView neo4jView = new Neo4jView();
neo4jView.setMetadataId(tableClassData.get_id());
neo4jView.setName(tableClassData.getName());
neo4jView.setCnName(tableClassData.getCnName());
List<Neo4jView> neo4jTableList = neo4jViewRepository.findNeo4jViewByMetadataId(metadataId);
if(neo4jTableList==null || neo4jTableList.size()==0){
neo4jViewRepository.save(neo4jView);
}
}else if(metadataId.startsWith("Function=")){
Neo4jFunction neo4jFunction = new Neo4jFunction();
neo4jFunction.setMetadataId(tableClassData.get_id());
neo4jFunction.setName(tableClassData.getName());
neo4jFunction.setCnName(tableClassData.getCnName());
List<Neo4jFunction> neo4jFunctionList = neo4jFunctionRepository.findNeo4jFunctionByMetadataId(metadataId);
if(neo4jFunctionList==null || neo4jFunctionList.size()==0){
neo4jFunctionRepository.save(neo4jFunction);
}
}else if(metadataId.startsWith("Procedure=")){
Neo4jProcedure neo4jProcedure = new Neo4jProcedure();
neo4jProcedure.setMetadataId(tableClassData.get_id());
neo4jProcedure.setName(tableClassData.getName());
neo4jProcedure.setCnName(tableClassData.getCnName());
List<Neo4jProcedure> neo4jProcedureList = neo4jProcedureRepository.findNeo4jProcedureByMetadataId(metadataId);
if(neo4jProcedureList==null || neo4jProcedureList.size()==0){
neo4jProcedureRepository.save(neo4jProcedure);
}
}else{
}
relationshipService.saveRelation(neo4jSchema.getMetadataId(),endId,"Composition");
}
}
}
}
}
@Override
public void syschroRelationFromMongo(String catalogName) {
//先从mongo读取关系,写入neo4j
Map<String, MetaData> metaDataMap = new HashMap<>();
logger.info("开始从mongo获取数据。");
List<RelationMongo> relationMongoList = mongoDbServiceImpl.findAll(catalogName);
List<RelationMongo> relationMongoList = mongoDbServiceImpl.findAllRelationByCatalog(catalogName);
logger.info("mongo获取数据完成。");
for (RelationMongo relationMongo : relationMongoList) {
// 获取元数据属性
......@@ -1403,7 +1563,6 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
}
}
......@@ -1412,9 +1571,7 @@ public class MetadataServiceImpl implements IMetadataService {
if (relationship == null || relationship.size() == 0) {
inputRelationReRepository.addInputRelation(sourceId, targetId);
}
} else if ("output".equalsIgnoreCase(type)) {
List<OutputRelation> relationship = outputRelationRepository.findOutputRelationship(sourceId, targetId);
if (relationship == null || relationship.size() == 0) {
outputRelationRepository.addOutRelation(sourceId, targetId);
......@@ -1691,7 +1848,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
class neo4jRelaionTask implements Callable<List<Edge>>{
class neo4jRelaionTask implements Callable<List<ReturnEdge>>{
private static final Logger logger = LoggerFactory.getLogger(neo4jRelaionTask.class);
private String metadataId ;
......@@ -1707,10 +1864,10 @@ class neo4jRelaionTask implements Callable<List<Edge>>{
this.modelName = modelname;
this.session=session;
}
List<Edge> edgeList = new ArrayList<>();
List<ReturnEdge> edgeList = new ArrayList<>();
@Override
public List<Edge> call() throws Exception {
public List<ReturnEdge> call() throws Exception {
long count = System.currentTimeMillis();
String impactCypher = "";
......@@ -1746,7 +1903,7 @@ class neo4jRelaionTask implements Callable<List<Edge>>{
String id = value.asString("metadataId");
System.out.println(metadataId+"-->>"+id);
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
// edge.setEdgeId();
edge.setFromId(metadataId);
edge.setToId(id);
......
package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.pojo.RelationMongo;
import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData;
import org.bson.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -9,6 +10,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -22,12 +24,14 @@ public class MongoDbServiceImpl {
private MongoTemplate mongoTemplate;
/**
* 查询所有
*
* @return
*/
public List<RelationMongo> findAll(String catalogName) {
public List<RelationMongo> findAllRelationByCatalog(String catalogName) {
logger.info("--------------------->[MongoDB find start]");
try {
return mongoTemplate.findAll(RelationMongo.class, "md_relation_" + catalogName);
......@@ -39,6 +43,50 @@ public class MongoDbServiceImpl {
}
/**
* 获取领域,获取系统,获取数据库
* */
/**
* 查询所有数据库
*
* @return
*/
public List<MongoData> findDatabaseByparentId(String catalogName,String collectionName) {
logger.info("开始从mongo获取元数据:"+ catalogName);
try {
Query query = new Query();
query.addCriteria(Criteria.where("parentId").is(catalogName));
List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,collectionName);
return mongoDataList;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 查询所有数据库
*
* @return
*/
public List<MongoData> findDataByparentId(String parentId,String collectionName) {
logger.info("开始从mongo获取元数据:"+ parentId);
try {
Query query = new Query();
query.addCriteria(Criteria.where("parentId").is(parentId));
List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,collectionName);
return mongoDataList;// mongoTemplate.findAll(MongoData.class, "md_relation_" + catalogName);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 查询所有
*
* @return
......
package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.config.Neo4jConfig;
import com.keymobile.metadata.metadataRelation.pojo.*;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import com.keymobile.metadata.metadataRelation.respository.*;
import com.keymobile.metadata.metadataRelation.service.MultiModelService;
import com.keymobile.metadata.metadataRelation.util.Neo4jTool;
import org.hibernate.boot.Metadata;
import org.neo4j.driver.v1.*;
import org.neo4j.driver.v1.types.Node;
import org.neo4j.driver.v1.types.Path;
import org.neo4j.driver.v1.types.Relationship;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Encoder;
import sun.rmi.runtime.Log;
import javax.persistence.Table;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
......@@ -257,7 +249,7 @@ public class MultiModelServiceImpl implements MultiModelService {
if(!returnMetadata.contains(toId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(fromId+"_"+toId);
MetaData startNode = metaDataMapLong.get(fromId);
......@@ -280,7 +272,7 @@ public class MultiModelServiceImpl implements MultiModelService {
if(!returnMetadata.contains(toId)){
continue;
}
Edge edge = new Edge();
ReturnEdge edge = new ReturnEdge();
edge.setEdgeId(fromId+"_"+toId);
MetaData startNode = metaDataMapLong.get(fromId);
......@@ -297,7 +289,7 @@ public class MultiModelServiceImpl implements MultiModelService {
for(Long returnMeta:returnMetadata){
MetaData metaData = metaDataMapLong.get(returnMeta);
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node returnNode = new com.keymobile.metadata.metadataRelation.pojo.returnBean.Node();
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
......
package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSchemaRepository;
import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository;
import com.keymobile.metadata.metadataRelation.service.ISchemaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SchemaServiceImpl implements ISchemaService {
@Autowired
private Neo4jSchemaRepository neo4jSchemaRepository;
@Override
public Map<String, String> getSchemaBySystem(String systemId) {
return null;
}
@Override
public Map<String, List<ReturnNode>> getTablesBySchemaId(String schemaId) {
Map<String ,List<ReturnNode>> schemaMap = new HashMap<>();
List<BaseNode> baseNodeList = neo4jSchemaRepository.getTableBySchemaId(schemaId);
for(BaseNode baseNode:baseNodeList){
ReturnNode returnNode = new ReturnNode();
returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName());
if(baseNode.getMetadataId().startsWith("Table=")){
returnNode.setType("表");
if(schemaMap.containsKey("表")){
List<ReturnNode> returnNodeList = schemaMap.get("表");
returnNodeList.add(returnNode);
}else {
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put("表",returnNodeList);
}
}else if(baseNode.getMetadataId().startsWith("View=")){
returnNode.setType("视图");
if(schemaMap.containsKey("视图")){
List<ReturnNode> returnNodeList = schemaMap.get("视图");
returnNodeList.add(returnNode);
}else {
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put("视图",returnNodeList);
}
}else if(baseNode.getMetadataId().startsWith("Function=")){
returnNode.setType("函数");
if(schemaMap.containsKey("函数")){
List<ReturnNode> returnNodeList = schemaMap.get("函数");
returnNodeList.add(returnNode);
}else {
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put("函数",returnNodeList);
}
}else if(baseNode.getMetadataId().startsWith("Procedure=")){
returnNode.setType("存储过程");
if(schemaMap.containsKey("存储过程")){
List<ReturnNode> returnNodeList = schemaMap.get("存储过程");
returnNodeList.add(returnNode);
}else {
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put("存储过程",returnNodeList);
}
}else {
returnNode.setType("其他类型");
if(schemaMap.containsKey("其他类型")){
List<ReturnNode> returnNodeList = schemaMap.get("其他类型");
returnNodeList.add(returnNode);
}else {
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put("其他类型",returnNodeList);
}
}
}
return schemaMap;
}
}
package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository;
import com.keymobile.metadata.metadataRelation.service.ISystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SystemServiceImpl implements ISystemService {
@Autowired
private Neo4jSystemRepository neo4jSystemRepository;
@Override
public Map<String ,List<ReturnNode>> getSchemaBySystemId(String systemId) {
Map<String ,List<ReturnNode>> schemaMap = new HashMap<>();
List<Neo4jSchema> neo4jSchemaList = neo4jSystemRepository.getSchemaBySystemId(systemId);
for(Neo4jSchema neo4jSchema:neo4jSchemaList){
ReturnNode returnNode = new ReturnNode();
returnNode.setId(neo4jSchema.getMetadataId());
returnNode.setName(neo4jSchema.getName());
returnNode.setType("Schema");
String label = neo4jSchema.getLabel();
if(label == null || label.equals("")){
label = "未分层";
}
if(schemaMap .containsKey(label)){
List<ReturnNode> returnNodeList = schemaMap.get(label);
if(!returnNodeList.contains(returnNode)){
returnNodeList.add(returnNode);
}
}else{
List<ReturnNode> returnNodeList = new ArrayList<>();
returnNodeList.add(returnNode);
schemaMap.put(label,returnNodeList);
}
}
return schemaMap;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment