Commit 78e3257a by qiuchaofei

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

parent 3343e307
......@@ -43,4 +43,12 @@ public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> {
@Query("match (n{metadataId:{tableId}} ) -[r:Composition]->(m:Neo4jColumn) return m ")
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;
import com.keymobile.metadata.metadataRelation.config.Neo4jConfig;
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.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
......@@ -47,7 +48,16 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService {
cypher = " match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"})"+directionNeo4j+"(m) return p "
+ "union match p=(n:Neo4jETLJob {metadataId:\""+metadataId+"\"}) -[r:Composition]->(m) return p ";
}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 ";
}else if(metadataId.startsWith("SQL=")){
cypher="match p=(n:Neo4jETLSql {metadataId:\""+metadataId+"\"}) <-[r:Composition]->(m) return p";
......@@ -64,6 +74,52 @@ public class MetadataRelationServiceImpl implements IMetadataRelationService {
Record record = result.next();
List<Value> values = record.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")){
Path path = value.asPath();
Iterable<Node> nodes = path.nodes();
......
......@@ -312,29 +312,33 @@ public class TableServiceImpl implements ITableService {
}
private void getTargetTable(String tableId, List<ReturnNode> targetTables) {
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getTargetTable(tableId);
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getTargets(tableId);
for(BaseNode baseNode:sourceBaseNodeList){
String metadataId = baseNode.getMetadataId();
if(metadataId.startsWith("Table=")){
if(metadataId.startsWith("Table=") ||metadataId.startsWith("ETLScript=")){
ReturnNode returnNode = new ReturnNode();
returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName());
if(metadataId.startsWith("Table=")){
returnNode.setType("Table");
// 获取属性
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());
}else {
returnNode.setType("ETLScript");
}
// 获取属性
// 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)){
targetTables.add(returnNode);
}
returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap);
// returnNode.setRelationMaps(relationMap);
// returnNode.setAttributeMaps(attributeMap);
}else {
getTargetTable(metadataId,targetTables);
}
......@@ -342,28 +346,32 @@ public class TableServiceImpl implements ITableService {
}
private void getSourceTable(String tableId, List<ReturnNode> sourceTables) {
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getSourceTable(tableId);
List<BaseNode> sourceBaseNodeList = neo4jTableRepository.getSources(tableId);
for(BaseNode baseNode:sourceBaseNodeList){
String metadataId = baseNode.getMetadataId();
if(metadataId.startsWith("Table=")){
if(metadataId.startsWith("Table=") ||metadataId.startsWith("ETLScript=")){
ReturnNode returnNode = new ReturnNode();
returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName());
if(metadataId.startsWith("Table=")){
returnNode.setType("Table");
// 获取属性
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());
}else {
returnNode.setType("ETLScript");
}
// 获取属性
// 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)){
sourceTables.add(returnNode);
}
returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap);
// returnNode.setRelationMaps(relationMap);
// returnNode.setAttributeMaps(attributeMap);
}else {
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