Commit eda41b4c by qiuchaofei

1添加获取元模型名称的接口,2cypher语言添加execute关系类型。

parent 8e8c413d
...@@ -159,13 +159,13 @@ public class MetaDataController { ...@@ -159,13 +159,13 @@ public class MetaDataController {
/** /**
* 查询元数据 * 查询元数据
*/ */
@RequestMapping(path = "/list", method = RequestMethod.GET) @RequestMapping(path = "/list", method = RequestMethod.GET)
public List<MetaData> getUserNodeList() { public List<MetaData> getUserNodeList() {
logger.info("获取所有的节点"); logger.info("获取所有的节点");
return metadataService.finAllMetaData(); return metadataService.finAllMetaData();
} }
/** /**
* 返回一个系统级的大图 * 返回一个系统级的大图
*/ */
...@@ -517,7 +517,7 @@ public class MetaDataController { ...@@ -517,7 +517,7 @@ public class MetaDataController {
/** /**
* 查询所有的节点类型 * 查询所有的节点类型
*/ */
@ApiOperation(tags = "", value = "查询所有的节点型") @ApiOperation(tags = "", value = "查询所有的节点元模型")
@RequestMapping(path = "/listAllNodeType", method = RequestMethod.GET) @RequestMapping(path = "/listAllNodeType", method = RequestMethod.GET)
public List<String> getAllNodeType() { public List<String> getAllNodeType() {
......
...@@ -229,8 +229,23 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -229,8 +229,23 @@ public class MetadataServiceImpl implements IMetadataService {
if (analysisId.contains(metadataId1)) { if (analysisId.contains(metadataId1)) {
continue; continue;
} }
String impactCypher = "MATCH p=(a:MetaData{metadataId:\"" + metadataId + "\"})-[r:Composition]->()-->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId1 + "\"})\n" + String impactCypher = "";
"RETURN p"; 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); StatementResult impactResult = session.run(impactCypher);
if (impactResult.hasNext()) { if (impactResult.hasNext()) {
logger.info(metadataId + " --->>" + metadataId1); logger.info(metadataId + " --->>" + metadataId1);
...@@ -242,12 +257,24 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -242,12 +257,24 @@ public class MetadataServiceImpl implements IMetadataService {
edge.setEdgeId("" + count++); edge.setEdgeId("" + count++);
returnReslult.getEdges().add(edge); returnReslult.getEdges().add(edge);
} }
String lineageCypher = "";
String lineageCypher = "MATCH p=(a:MetaData{metadataId:\"" + metadataId1 + "\"})-[r:Composition]->() -->()-->()<-[r1:Composition]-(b:MetaData{metadataId:\"" + metadataId + "\"})\n" + if(modelName.toLowerCase().equals("table")){
"RETURN p"; 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); StatementResult lineageResult = session.run(lineageCypher);
if (lineageResult.hasNext()) { if (lineageResult.hasNext()) {
logger.info(metadataId + "<<-- " + metadataId1); logger.info(metadataId + "<<-- " + metadataId1);
Edge edge = new Edge(); Edge edge = new Edge();
...@@ -554,23 +581,17 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -554,23 +581,17 @@ public class MetadataServiceImpl implements IMetadataService {
@Override @Override
public List<String> findAllNodeTypes() { public List<String> findAllNodeTypes() {
Iterable<MetaData> dataIterable = metadataRepository.findAll();
List<String> labels = new ArrayList<>(); List<String> labels = new ArrayList<>();
Neo4jConfig neo4jConfig = new Neo4jConfig(); for(MetaData data :dataIterable){
Driver neo4jConnection = neo4jConfig.getNeo4jConnection(); String metadataId = data.getMetadataId();
Session session = neo4jConnection.session(); String[] metadataIds = metadataId.split("=");
String modelName = metadataIds[0];
String getLabels = " MATCH (n) RETURN distinct labels(n) as name "; if(!labels.contains(modelName)){
StatementResult result = session.run(getLabels); labels.add(modelName);
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());
} }
return labels; 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