Commit 5d842643 by qiuchaofei

返回节点添加属性.入口节点的关系

parent 400e2554
......@@ -456,6 +456,7 @@ public class TableServiceImpl implements ITableService {
long timeStart = System.currentTimeMillis();
Map<String,ReturnNode> returnNodeMap = new HashMap<>();
Map<String,ReturnEdge> returnEdgeMap = new HashMap<>();
Neo4jConfig neo4jConfig = new Neo4jConfig();
Driver neo4jConnection = neo4jConfig.getNeo4jConnection();
Session session = neo4jConnection.session();
......@@ -463,8 +464,19 @@ public class TableServiceImpl implements ITableService {
int runCypherCount = 0;
long runCypherTime = 0;
Map<String,String> tableIdMap = new HashMap<>();
tableIdMap.put(tableId,tableId);
Neo4jTable neo4jTable = neo4jTableRepository.findNeo4jTableByMetadataId(tableId);
ReturnNode returnTable = new ReturnNode();
if(neo4jTable != null){
returnTable.setId(neo4jTable.getMetadataId());
returnTable.setName(neo4jTable.getName());
returnTable.setType("Table");
returnNodeMap.put(returnTable.getId(),returnTable);
}
//先找出 表的前后关系,再找出表的字段,然后找出字段的前后关系,
String targetTablecypher = "match (n:Neo4jTable{metadataId:\""+ tableId +"\"})-[r1:流向]->(n1)-[r0:TempRelation*0..]->(m2)-[r:流向]->(m1) return m1";
String sourceTablecypher = "match (n:Neo4jTable{metadataId:\""+ tableId +"\"})<-[r1:流向]-(n1)<-[r0:TempRelation*0..]-(m2)<-[r:流向]-(m1) return m1";
long time01=System.currentTimeMillis();
......@@ -472,7 +484,7 @@ public class TableServiceImpl implements ITableService {
long time11=System.currentTimeMillis();
runCypherTime += (time11-time01);
runCypherCount++;
// 先找出目标
// 先找出
while(sourceTableResult.hasNext()){
Record record = sourceTableResult.next();
List<Value> values = record.values();
......@@ -493,7 +505,7 @@ public class TableServiceImpl implements ITableService {
returnNode.setDataPath(metaData.getPath());
returnNode.setType("Table");
returnNodeMap.put(returnNode.getId(),returnNode);
tableIdMap.put(returnNode.getId(),"");
ReturnEdge returnEdge = new ReturnEdge();
String edgeId =returnNode.getId() +"_"+ tableId;
returnEdge.setFromId(returnNode.getId());
......@@ -504,13 +516,13 @@ public class TableServiceImpl implements ITableService {
}
}
}
String targetTablecypher = "match (n:Neo4jTable{metadataId:\""+ tableId +"\"})-[r1:流向]->(n1)-[r0:TempRelation*0..]->(m2)-[r:流向]->(m1) return m1";
long time20=System.currentTimeMillis();
StatementResult targetTablecResult = session.run(targetTablecypher);
runCypherCount++;
long time21=System.currentTimeMillis();
runCypherTime += (time21-time20);
// 找出目标表
// 找出目标表
while(targetTablecResult.hasNext()){
Record record = targetTablecResult.next();
List<Value> values = record.values();
......@@ -532,6 +544,7 @@ public class TableServiceImpl implements ITableService {
returnNode.setType("Table");
returnNodeMap.put(returnNode.getId(),returnNode);
tableIdMap.put(returnNode.getId(),"");
ReturnEdge returnEdge = new ReturnEdge();
String edgeId = tableId+"_"+returnNode.getId();
returnEdge.setFromId(tableId);
......@@ -543,6 +556,8 @@ public class TableServiceImpl implements ITableService {
}
}
int respossitoryCount= 0;
int respossitoryTime= 0;
......@@ -551,12 +566,10 @@ public class TableServiceImpl implements ITableService {
long time102 = System.currentTimeMillis();
respossitoryTime += (time102 - time101);
respossitoryCount++;
logger.info("d");
for(Neo4jColumn neo4jColumn:neo4jColumns){
String currentColumnId = neo4jColumn.getMetadataId();
String targetColumncypher = "match (m:Neo4jColumn{metadataId:\""+currentColumnId+"\"})-[r1:流向]->(n1)-[r0:TempRelation*0..]->(m2)-[r:流向]->(m1) return m1";
String sourceColumncypher = "match (m:Neo4jColumn{metadataId:\""+currentColumnId+"\"})<-[r1:流向]-(n1)<-[r0:TempRelation*0..]-(m2)<-[r:流向]-(m1) return m1";
long time30=System.currentTimeMillis();
StatementResult targetColumnResult = session.run(targetColumncypher);
......@@ -585,7 +598,7 @@ public class TableServiceImpl implements ITableService {
returnNodeMap.put(returnNode.getId(),returnNode);
ReturnEdge returnEdge = new ReturnEdge();
String edgeId = tableId+"_"+returnNode.getId();
String edgeId = currentColumnId+"_"+returnNode.getId();
returnEdge.setFromId(currentColumnId);
returnEdge.setToId(returnNode.getId());
returnEdge.setType("To");
......@@ -594,6 +607,8 @@ public class TableServiceImpl implements ITableService {
}
}
}
String sourceColumncypher = "match (m:Neo4jColumn{metadataId:\""+currentColumnId+"\"})<-[r1:流向]-(n1)<-[r0:TempRelation*0..]-(m2)<-[r:流向]-(m1) return m1";
long time40=System.currentTimeMillis();
StatementResult sourceColumnResult = session.run(sourceColumncypher);
runCypherCount++;
......@@ -605,7 +620,6 @@ public class TableServiceImpl implements ITableService {
for (Value value : values) {
if(value.type().name().equals("NODE")){
Node node = value.asNode();
Map<String, Object> stringObjectMap = node.asMap();
MetaData metaData = new MetaData();
Neo4jTool.transMap2Bean(stringObjectMap, metaData);
......@@ -621,7 +635,7 @@ public class TableServiceImpl implements ITableService {
returnNodeMap.put(returnNode.getId(),returnNode);
ReturnEdge returnEdge = new ReturnEdge();
String edgeId =returnNode.getId() +"_"+tableId;
String edgeId =returnNode.getId() +"_"+currentColumnId;
returnEdge.setFromId(returnNode.getId() );
returnEdge.setToId(currentColumnId);
returnEdge.setType("To");
......@@ -634,13 +648,8 @@ public class TableServiceImpl implements ITableService {
Map<String,ReturnNode> noRelationColumns = new HashMap<>();
for(Object obj:returnNodeMap.keySet()){
for(Object obj: tableIdMap.keySet()){
String currentTableId = (String)obj;
if(!currentTableId.startsWith("Table=")){
continue;
}
long time103 = System.currentTimeMillis();
String table2CoumnCypher = "match (n:Neo4jTable{metadataId:\""+currentTableId+"\"})-[r2:Composition]->(m:Neo4jColumn) return m";
runCypherCount++;
......@@ -683,29 +692,8 @@ public class TableServiceImpl implements ITableService {
}
}
}
// List<Neo4jColumn> currentNeo4jColumns = neo4jTableRepository.getColumnByTableId(currentTableId);
// for(Neo4jColumn currentNeo4jColumn:currentNeo4jColumns){
// String columnId = currentNeo4jColumn.getMetadataId();
// if(!returnNodeMap.containsKey(columnId)){
//
// ReturnNode returnNode = new ReturnNode();
// returnNode.setId(currentNeo4jColumn.getMetadataId());
// returnNode.setName(currentNeo4jColumn.getName());
// returnNode.setCnName(currentNeo4jColumn.getCnName());
// noRelationColumns.put(columnId ,returnNode);
// }
// ReturnEdge returnEdge = new ReturnEdge();
// String edgeId = currentTableId+"_"+columnId;
// returnEdge.setFromId(currentTableId);
// returnEdge.setToId(columnId);
// returnEdge.setType("Composition");
// returnEdgeMap.put(edgeId,returnEdge);
// }
}
long timeStart1 = System.currentTimeMillis();
for(Object obj:returnNodeMap.keySet()){
ReturnNode returnNode = returnNodeMap.get(obj);
returnReslult.getNodes().add(returnNode);
......
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