Commit 352d3355 by linxu
parents 527c2ec0 06a96f10
......@@ -47,137 +47,30 @@ public class MetaDataController {
private IBaseRelationshipService baseRelationshipService;
/**
* 查询元数据,关系
* 返回 node,edge,icon
*/
@ApiOperation(tags = "", value = "获取所有的节点与关系")
@RequestMapping(path = "/result1", method = RequestMethod.GET)
public ReturnReslult getAllNodeAndRelation() {
logger.info("开始获取所有的节点与关系");
ReturnReslult result = new ReturnReslult();
List<MetaData> metaDataList = metadataService.finAllMetaData();
Map<Long, Node> nodeMap = new HashMap<>();
Map<String, MetaModel> metaModelMap = new HashMap<>();
for (MetaData metaData : metaDataList) {
Node node = new Node();
String[] strings = metaData.getMetadataId().split("=");
String modelName = strings[0];
node.setId(metaData.getMetadataId());
node.setIcon(modelName);
if (!metaModelMap.containsKey(modelName)) {
MetaModel model = new MetaModel();
String iconContext = getIconByModelId(modelName);
model.setModelName(modelName);
model.setCnName(modelName);
model.setDescription("");
model.setIcon(iconContext);
metaModelMap.put(modelName, model);
}
node.setName(metaData.getName());
node.setType("MetaData");
result.getNodes().add(node);
nodeMap.put(metaData.getId(), node);
}
List<TempNode> allTempNode = metadataService.findAllTempNode();
for (TempNode tempNode : allTempNode) {
Node node = new Node();
String[] strings = tempNode.getMetadataId().split("=");
String modelName = strings[0];
node.setId(tempNode.getMetadataId());
node.setIcon(modelName);
if (!metaModelMap.containsKey(modelName)) {
MetaModel model = new MetaModel();
String iconContext = getIconByModelId(modelName);
model.setModelName(modelName);
model.setCnName(modelName);
model.setDescription("");
model.setIcon(iconContext);
metaModelMap.put(modelName, model);
}
node.setName(tempNode.getName());
node.setType("TempNode");
result.getNodes().add(node);
nodeMap.put(tempNode.getId(), node);
}
logger.info("节点的数量:" + result.getNodes().size());
List<BaseRelationship> baseRelationshipList = baseRelationshipService.findAllRelation();
for (BaseRelationship baseRelationship : baseRelationshipList) {
Edge edge = new Edge();
edge.setEdgeId(String.valueOf(baseRelationship.getId()));
Long startId = baseRelationship.getStart().getId();
Long endId = baseRelationship.getEnd().getId();
String startMetaId = "";
String endMEtaId = "";
if (nodeMap.containsKey(startId)) {
startMetaId = nodeMap.get(startId).getId();
}
if (nodeMap.containsKey(endId)) {
endMEtaId = nodeMap.get(endId).getId();
}
if (StringUtils.isNotBlank(startMetaId) && StringUtils.isNotBlank(endMEtaId)) {
edge.setFromId(startMetaId);
edge.setToId(endMEtaId);
edge.setType(baseRelationship.getName());
result.getEdges().add(edge);
}
}
logger.info("关系的数量:" + result.getEdges().size());
result.setMetaModelMap(metaModelMap);
return result;
}
@ApiOperation(tags = "", value = "传入元模型名称,返回该元模型的元数据所有关系")
// @RequestMapping(path = "/getNodeAndRelationByModel", method = RequestMethod.GET)
@RequestMapping(path = "/getNodeAndRelationByModel", method = RequestMethod.GET)
public ReturnReslult getNodeAndRelationByModel(String modelName) {
if (modelName == null || modelName.equals("")) {
modelName = "Table";
}
ReturnReslult returnReslult = metadataService.findResultByModelName(modelName);
return returnReslult;
}
/**
* 查询元数据
*/
@RequestMapping(path = "/list", method = RequestMethod.GET)
public List<MetaData> getUserNodeList() {
logger.info("获取所有的节点");
return metadataService.finAllMetaData();
}
/**
* 返回一个系统级的大图
*/
@ApiOperation(tags = "", value = "系统级的大图")
// @RequestMapping(path = "/getBigGraph", method = RequestMethod.GET)
@RequestMapping(path = "/result", method = RequestMethod.GET)
public ReturnReslult getBigGraph() {
logger.info("开始获取系统级的大图");
ReturnReslult result = new ReturnReslult();
public ReturnReslult getBigGraph(String modelName0) {
logger.info("传入的元模型名称是:"+modelName0);
ReturnReslult returnReslult = new ReturnReslult();
if (modelName0 == null || modelName0.equals("")) {
modelName0 = "Table";
}
if(!modelName0.toLowerCase().equals("all")){
returnReslult = metadataService.findResultByModelName(modelName0);
}else {
List<MetaData> metaDataList = metadataService.finAllMetaData();
Map<String, Node> nodeMap = new HashMap<>();
......@@ -215,7 +108,7 @@ public class MetaDataController {
}
systemNode.setType("MetaData");
result.getNodes().add(systemNode);
returnReslult.getNodes().add(systemNode);
nodeMap.put("" + systemNode.getId(), systemNode);
child2Parent.put("" + metaData.getId(), systemNode.getId());
}
......@@ -233,13 +126,11 @@ public class MetaDataController {
}
node.setName(metaData.getName());
node.setType("MetaData");
result.getNodes().add(node);
returnReslult.getNodes().add(node);
nodeMap.put("" + metaData.getId(), node);
}
logger.info("节点的数量:" + result.getNodes().size());
logger.info("节点的数量:" + returnReslult.getNodes().size());
List<BaseRelationship> baseRelationshipList = baseRelationshipService.findAllRelation();
/**
* 分成两部分,一个是组合关系,一个是依赖关系。
......@@ -318,43 +209,15 @@ public class MetaDataController {
edge.setFromId(startMetaId);
edge.setToId(endMetaId);
edge.setType(baseRelationship.getName());
result.getEdges().add(edge);
returnReslult.getEdges().add(edge);
}
}
// for(Object obj : child2Parent.keySet()){
// logger.info("child:"+ obj + " ,parent:"+ child2Parent.get(obj));
// }
// for(Object obj : parent2Children.keySet()){
// List<String> children = parent2Children.get(obj);
// logger.info("parent:"+ obj);
// for(String child:children){
// logger.info(" child:" + child );
// }
// }
//
// for(Object obj : source2Target.keySet()){
// List<String> targets = source2Target.get(obj);
// logger.info("source:"+ obj);
// for(String target:targets){
// logger.info(" target:" + target );
// }
// }
//
//
// for(Object obj : target2Source.keySet()){
// List<String> sources = target2Source.get(obj);
// logger.info("target:"+ obj);
// for(String source:sources){
// logger.info(" source:" + source );
// }
// }
logger.info("关系的数量:" + result.getEdges().size());
result.setMetaModelMap(metaModelMap);
logger.info("关系的数量:" + returnReslult.getEdges().size());
returnReslult.setMetaModelMap(metaModelMap);
}
return result;
return returnReslult;
}
private String getParentId(String neo4jId, Map<String, String> child2Parent) {
......@@ -517,7 +380,7 @@ public class MetaDataController {
/**
* 查询所有的节点类型
*/
@ApiOperation(tags = "", value = "查询所有的节点型")
@ApiOperation(tags = "", value = "查询所有的节点元模型")
@RequestMapping(path = "/listAllNodeType", method = RequestMethod.GET)
public List<String> getAllNodeType() {
......@@ -530,7 +393,6 @@ public class MetaDataController {
@ApiOperation(tags = "", value = "传入元数据id,显示的层数,查找出与该元数据有关系的数据")
@RequestMapping(path = "/getNodeByDataId", method = RequestMethod.GET)
public ReturnReslult getNodeByDataId(String metadataId, int depth) {
return metadataService.findNodeByDataId(metadataId, depth);
}
......@@ -544,17 +406,6 @@ public class MetaDataController {
}
/**
* 添加元数据的接口
*/
@RequestMapping(path = "/addMetadata", method = RequestMethod.POST)
public MetaData addMetadata(@RequestBody MetaData metaData) {
System.out.println("这是写入元数据的方法。");
MetaData metaData1 = metadataService.addMetaData(metaData);
return metaData1;
}
/**
* 同步元数据关系的接口,传入一个环境名称(catalognName),从mongo读取关系,存入到neo4j中
......
......@@ -229,8 +229,23 @@ public class MetadataServiceImpl implements IMetadataService {
if (analysisId.contains(metadataId1)) {
continue;
}
String impactCypher = "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-[r:Composition]->()-->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" +
String impactCypher = "";
if(modelName.toLowerCase().equals("table") ){
impactCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-[r:Composition]->()-->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("sqlscript")){
impactCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-[r:Execute]->()-->()-->()<-[r1:Execute]-(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("etljob")){
impactCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-[r:Execute]->()-[r1:Execute]->()-->()-->()<-[r2:Execute]-()<-[r3:Execute]-(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("column") ||modelName.toLowerCase().equals("sql") ){
impactCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-->()-->(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" +
"RETURN p";
}
StatementResult impactResult = session.run(impactCypher);
if (impactResult.hasNext()) {
logger.info(metadataId + " --->>" + metadataId1);
......@@ -242,12 +257,24 @@ public class MetadataServiceImpl implements IMetadataService {
edge.setEdgeId("" + count++);
returnReslult.getEdges().add(edge);
}
String lineageCypher = "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Composition]->() -->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
String lineageCypher = "";
if(modelName.toLowerCase().equals("table")){
lineageCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Composition]->() -->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("sqlscript")){
lineageCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Execute]->() -->()-->()<-[r1:Execute]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("etljob")){
lineageCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Execute]->()-[r1:Execute]->()-->()-->()<-[r2:Execute]-()<-[r3:Execute]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
"RETURN p";
}else if(modelName.toLowerCase().equals("column") ||modelName.toLowerCase().equals("sql") ){
lineageCypher= "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-->()-->(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
"RETURN p";
}
// String lineageCypher = "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Composition]->() -->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" +
// "RETURN p";
StatementResult lineageResult = session.run(lineageCypher);
if (lineageResult.hasNext()) {
logger.info(metadataId + "<<-- " + metadataId1);
Edge edge = new Edge();
......@@ -554,23 +581,17 @@ public class MetadataServiceImpl implements IMetadataService {
@Override
public List<String> findAllNodeTypes() {
Iterable<MetaData> dataIterable = metadataRepository.findAll();
List<String> labels = new ArrayList<>();
Neo4jConfig neo4jConfig = new Neo4jConfig();
Driver neo4jConnection = neo4jConfig.getNeo4jConnection();
Session session = neo4jConnection.session();
String getLabels = " MATCH (n) RETURN distinct labels(n) as name ";
StatementResult result = session.run(getLabels);
while (result.hasNext()) {
Record record = (Record) result.next();
String labelName = record.get("name").toString();
Value name = record.get("name");
List<Object> objects = name.asList();
int size = objects.size();
String type = "";
Object object = objects.get(size - 1);
labels.add(object.toString());
for(MetaData data :dataIterable){
String metadataId = data.getMetadataId();
String[] metadataIds = metadataId.split("=");
String modelName = metadataIds[0];
if(!labels.contains(modelName)){
labels.add(modelName);
}
}
return labels;
}
......
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