Commit 78e3257a by qiuchaofei

展开节点时,过滤临时表。

parent 3343e307
...@@ -43,4 +43,12 @@ public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> { ...@@ -43,4 +43,12 @@ public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> {
@Query("match (n{metadataId:{tableId}} ) -[r:Composition]->(m:Neo4jColumn) return m ") @Query("match (n{metadataId:{tableId}} ) -[r:Composition]->(m:Neo4jColumn) return m ")
List<Neo4jColumn> getColumnByTableId(@Param("tableId") String tableId); List<Neo4jColumn> getColumnByTableId(@Param("tableId") String tableId);
@Query("match (n:Neo4jTable{metadataId:{tableId}})<-[r1:流向]-(m1) return m1 ")
List<BaseNode> getSources(@Param("tableId") String tableId);
@Query("match (n:Neo4jTable{metadataId:{tableId}})-[r1:流向]->(m1) return m1 ")
List<BaseNode> getTargets(@Param("tableId") String tableId);
} }
...@@ -2,6 +2,7 @@ package com.keymobile.metadata.metadataRelation.service.impl; ...@@ -2,6 +2,7 @@ package com.keymobile.metadata.metadataRelation.service.impl;
import com.keymobile.metadata.metadataRelation.config.Neo4jConfig; import com.keymobile.metadata.metadataRelation.config.Neo4jConfig;
import com.keymobile.metadata.metadataRelation.pojo.MetaData; import com.keymobile.metadata.metadataRelation.pojo.MetaData;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge; import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode; import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult; import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
...@@ -47,7 +48,16 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService { ...@@ -47,7 +48,16 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService {
cypher = " match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return p " cypher = " match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return p "
+ "union match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"}) -[r:Composition]->(m) return p "; + "union match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"}) -[r:Composition]->(m) return p ";
}else if(metadataId.startsWith("ETLScript=")){ }else if(metadataId.startsWith("ETLScript=")){
cypher = " match p=(n:Neo4jETLScript {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return p "; if(direction.equals("forward")){
cypher = " match (n:Neo4jETLScript {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return m "
+" union match (n:Neo4jETLScript{metadataId:\""+metadataId+"\"})-[r0:TempRelation*1..]-> (m) return m"
;
}else if(direction.equals("backward")){
cypher = " match (n:Neo4jETLScript {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return m "
+" union match (n:Neo4jETLScript{metadataId:\""+metadataId+"\"})<-[r0:TempRelation*1..]- (m) return m"
;
}
// + "union match p=(n:Neo4jETLScript {metadataId:\""+metadataId+"\"}) <-[r:Composition]->(m) return p "; // + "union match p=(n:Neo4jETLScript {metadataId:\""+metadataId+"\"}) <-[r:Composition]->(m) return p ";
}else if(metadataId.startsWith("SQL=")){ }else if(metadataId.startsWith("SQL=")){
cypher="match p=(n:Neo4jETLSql {metadataId:\""+metadataId+"\"}) <-[r:Composition]->(m) return p"; cypher="match p=(n:Neo4jETLSql {metadataId:\""+metadataId+"\"}) <-[r:Composition]->(m) return p";
...@@ -64,6 +74,52 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService { ...@@ -64,6 +74,52 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService {
Record record = result.next(); Record record = result.next();
List<Value> values = record.values(); List<Value> values = record.values();
for (Value value : values) { for (Value value : values) {
if (value.type().name().equals("NODE")) {
Node node = value.asNode();
Map<Long, MetaData> nodesMap = new HashMap<>();
Map<String, Object> stringObjectMap = node.asMap();
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
String neo4jMetadataId = metaData.getMetadataId();
if(neo4jMetadataId.startsWith("Table=")||neo4jMetadataId.startsWith("ETLScript=")){
ReturnNode returnNode = new ReturnNode();
returnNode.setId(metaData.getMetadataId());
returnNode.setName(metaData.getName());
if(neo4jMetadataId.startsWith("Table=")){
returnNode.setType("Table");
}else if(neo4jMetadataId.startsWith("ETLScript=")){
returnNode.setType("ETLScript");
}
returnReslult.getNodes().add(returnNode);
nodesMap.put(node.id(), metaData);
ReturnEdge edge = new ReturnEdge();
String edgeId = metadataId+"_"+metaData.getMetadataId();
if(edgeMap.containsKey(edgeId)){
continue;
}
edge.setEdgeId(edgeId);
edgeMap.put(edgeId,edge);
if(direction.equals("forward")){
edge.setFromId(metadataId);
edge.setToId(metaData.getMetadataId());
}else if(direction.equals("backward")){
edge.setFromId(metaData.getMetadataId());
edge.setToId(metadataId );
}
edge.setType("流向");
}
}
if(value.type().name().equals("PATH")){ if(value.type().name().equals("PATH")){
Path path = value.asPath(); Path path = value.asPath();
Iterable<Node> nodes = path.nodes(); Iterable<Node> nodes = path.nodes();
......
...@@ -312,29 +312,33 @@ public class TableServiceImpl implements ITableService { ...@@ -312,29 +312,33 @@ public class TableServiceImpl implements ITableService {
} }
private void getTargetTable(String tableId, List<ReturnNode> targetTables) { private void getTargetTable(String tableId, List<ReturnNode> targetTables) {
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getTargetTable(tableId); List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getTargets(tableId);
for(BaseNode baseNode:sourceBaseNodeList){ for(BaseNode baseNode:sourceBaseNodeList){
String metadataId = baseNode.getMetadataId(); String metadataId = baseNode.getMetadataId();
if(metadataId.startsWith("Table=")){ if(metadataId.startsWith("Table=") ||metadataId.startsWith("ETLScript=")){
ReturnNode returnNode = new ReturnNode(); ReturnNode returnNode = new ReturnNode();
returnNode.setId(baseNode.getMetadataId()); returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName()); returnNode.setName(baseNode.getName());
returnNode.setType("Table"); if(metadataId.startsWith("Table=")){
// 获取属性 returnNode.setType("Table");
Map<String,String> attributeMap = getAttributeMap(metadataId); }else {
List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getTargetEtlScriptBetween2Table(tableId, metadataId); returnNode.setType("ETLScript");
Map<String,String> relationMap = new HashMap<>();
for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
relationMap.put("name",sourceEtlScriptBetween2Table.getName());
relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
} }
// 获取属性
// Map<String,String> attributeMap = getAttributeMap(metadataId);
// List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getTargetEtlScriptBetween2Table(tableId, metadataId);
// Map<String,String> relationMap = new HashMap<>();
// for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
// relationMap.put("name",sourceEtlScriptBetween2Table.getName());
// relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
// }
if(!targetTables.contains(returnNode)){ if(!targetTables.contains(returnNode)){
targetTables.add(returnNode); targetTables.add(returnNode);
} }
returnNode.setRelationMaps(relationMap); // returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap); // returnNode.setAttributeMaps(attributeMap);
}else { }else {
getTargetTable(metadataId,targetTables); getTargetTable(metadataId,targetTables);
} }
...@@ -342,28 +346,32 @@ public class TableServiceImpl implements ITableService { ...@@ -342,28 +346,32 @@ public class TableServiceImpl implements ITableService {
} }
private void getSourceTable(String tableId, List<ReturnNode> sourceTables) { private void getSourceTable(String tableId, List<ReturnNode> sourceTables) {
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getSourceTable(tableId); List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getSources(tableId);
for(BaseNode baseNode:sourceBaseNodeList){ for(BaseNode baseNode:sourceBaseNodeList){
String metadataId = baseNode.getMetadataId(); String metadataId = baseNode.getMetadataId();
if(metadataId.startsWith("Table=")){ if(metadataId.startsWith("Table=") ||metadataId.startsWith("ETLScript=")){
ReturnNode returnNode = new ReturnNode(); ReturnNode returnNode = new ReturnNode();
returnNode.setId(baseNode.getMetadataId()); returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName()); returnNode.setName(baseNode.getName());
returnNode.setType("Table"); if(metadataId.startsWith("Table=")){
// 获取属性 returnNode.setType("Table");
Map<String,String> attributeMap = getAttributeMap(metadataId); }else {
List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getSourceEtlScriptBetween2Table(tableId, metadataId); returnNode.setType("ETLScript");
Map<String,String> relationMap = new HashMap<>();
for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
relationMap.put("name",sourceEtlScriptBetween2Table.getName());
relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
} }
// 获取属性
// Map<String,String> attributeMap = getAttributeMap(metadataId);
// List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getSourceEtlScriptBetween2Table(tableId, metadataId);
// Map<String,String> relationMap = new HashMap<>();
// for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
// relationMap.put("name",sourceEtlScriptBetween2Table.getName());
// relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
// }
if(!sourceTables.contains(returnNode)){ if(!sourceTables.contains(returnNode)){
sourceTables.add(returnNode); sourceTables.add(returnNode);
} }
returnNode.setRelationMaps(relationMap); // returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap); // returnNode.setAttributeMaps(attributeMap);
}else { }else {
getSourceTable(metadataId,sourceTables); getSourceTable(metadataId,sourceTables);
} }
......
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