Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
neo4jRelation
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qiuchaofei
neo4jRelation
Commits
400e2554
Commit
400e2554
authored
Apr 25, 2022
by
qiuchaofei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
返回节点添加属性
parent
1366f723
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
101 additions
and
12 deletions
+101
-12
TableServiceImpl.java
...adata/metadataRelation/service/impl/TableServiceImpl.java
+101
-12
No files found.
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/TableServiceImpl.java
View file @
400e2554
...
@@ -453,18 +453,25 @@ public class TableServiceImpl implements ITableService {
...
@@ -453,18 +453,25 @@ public class TableServiceImpl implements ITableService {
@Override
@Override
public
ReturnReslult
getTableAndColumnRelation
(
String
tableId
)
{
public
ReturnReslult
getTableAndColumnRelation
(
String
tableId
)
{
ReturnReslult
returnReslult
=
new
ReturnReslult
();
ReturnReslult
returnReslult
=
new
ReturnReslult
();
long
timeStart
=
System
.
currentTimeMillis
();
Map
<
String
,
ReturnNode
>
returnNodeMap
=
new
HashMap
<>();
Map
<
String
,
ReturnNode
>
returnNodeMap
=
new
HashMap
<>();
Map
<
String
,
ReturnEdge
>
returnEdgeMap
=
new
HashMap
<>();
Map
<
String
,
ReturnEdge
>
returnEdgeMap
=
new
HashMap
<>();
Neo4jConfig
neo4jConfig
=
new
Neo4jConfig
();
Neo4jConfig
neo4jConfig
=
new
Neo4jConfig
();
Driver
neo4jConnection
=
neo4jConfig
.
getNeo4jConnection
();
Driver
neo4jConnection
=
neo4jConfig
.
getNeo4jConnection
();
Session
session
=
neo4jConnection
.
session
();
Session
session
=
neo4jConnection
.
session
();
int
runCypherCount
=
0
;
long
runCypherTime
=
0
;
//先找出 表的前后关系,再找出表的字段,然后找出字段的前后关系,
//先找出 表的前后关系,再找出表的字段,然后找出字段的前后关系,
String
targetTablecypher
=
"match (n:Neo4jTable{metadataId:\""
+
tableId
+
"\"})-[r1:流向]->(n1)-[r0:TempRelation*0..]->(m2)-[r:流向]->(m1) return m1"
;
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"
;
String
sourceTablecypher
=
"match (n:Neo4jTable{metadataId:\""
+
tableId
+
"\"})<-[r1:流向]-(n1)<-[r0:TempRelation*0..]-(m2)<-[r:流向]-(m1) return m1"
;
long
time01
=
System
.
currentTimeMillis
();
StatementResult
sourceTableResult
=
session
.
run
(
sourceTablecypher
);
StatementResult
sourceTableResult
=
session
.
run
(
sourceTablecypher
);
long
time11
=
System
.
currentTimeMillis
();
runCypherTime
+=
(
time11
-
time01
);
runCypherCount
++;
// 先找出目标表
// 先找出目标表
while
(
sourceTableResult
.
hasNext
()){
while
(
sourceTableResult
.
hasNext
()){
Record
record
=
sourceTableResult
.
next
();
Record
record
=
sourceTableResult
.
next
();
...
@@ -484,19 +491,25 @@ public class TableServiceImpl implements ITableService {
...
@@ -484,19 +491,25 @@ public class TableServiceImpl implements ITableService {
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setType
(
"Table"
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
ReturnEdge
returnEdge
=
new
ReturnEdge
();
ReturnEdge
returnEdge
=
new
ReturnEdge
();
String
edgeId
=
returnNode
.
getId
()
+
"_"
+
tableId
;
String
edgeId
=
returnNode
.
getId
()
+
"_"
+
tableId
;
returnEdge
.
setFromId
(
returnNode
.
getId
());
returnEdge
.
setFromId
(
returnNode
.
getId
());
returnEdge
.
setToId
(
tableId
);
returnEdge
.
setToId
(
tableId
);
returnEdge
.
setType
(
"流向"
);
returnEdge
.
setType
(
"To"
);
returnEdge
.
setEdgeId
(
edgeId
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
}
}
}
}
}
}
long
time20
=
System
.
currentTimeMillis
();
StatementResult
targetTablecResult
=
session
.
run
(
targetTablecypher
);
StatementResult
targetTablecResult
=
session
.
run
(
targetTablecypher
);
runCypherCount
++;
long
time21
=
System
.
currentTimeMillis
();
runCypherTime
+=
(
time21
-
time20
);
// 先找出目标表
// 先找出目标表
while
(
targetTablecResult
.
hasNext
()){
while
(
targetTablecResult
.
hasNext
()){
Record
record
=
targetTablecResult
.
next
();
Record
record
=
targetTablecResult
.
next
();
...
@@ -516,26 +529,40 @@ public class TableServiceImpl implements ITableService {
...
@@ -516,26 +529,40 @@ public class TableServiceImpl implements ITableService {
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setType
(
"Table"
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
ReturnEdge
returnEdge
=
new
ReturnEdge
();
ReturnEdge
returnEdge
=
new
ReturnEdge
();
String
edgeId
=
tableId
+
"_"
+
returnNode
.
getId
();
String
edgeId
=
tableId
+
"_"
+
returnNode
.
getId
();
returnEdge
.
setFromId
(
tableId
);
returnEdge
.
setFromId
(
tableId
);
returnEdge
.
setToId
(
returnNode
.
getId
());
returnEdge
.
setToId
(
returnNode
.
getId
());
returnEdge
.
setType
(
"流向"
);
returnEdge
.
setType
(
"To"
);
returnEdge
.
setEdgeId
(
edgeId
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
}
}
}
}
}
}
int
respossitoryCount
=
0
;
int
respossitoryTime
=
0
;
long
time101
=
System
.
currentTimeMillis
();
List
<
Neo4jColumn
>
neo4jColumns
=
neo4jTableRepository
.
getColumnByTableId
(
tableId
);
List
<
Neo4jColumn
>
neo4jColumns
=
neo4jTableRepository
.
getColumnByTableId
(
tableId
);
long
time102
=
System
.
currentTimeMillis
();
respossitoryTime
+=
(
time102
-
time101
);
respossitoryCount
++;
logger
.
info
(
"d"
);
for
(
Neo4jColumn
neo4jColumn:
neo4jColumns
){
for
(
Neo4jColumn
neo4jColumn:
neo4jColumns
){
String
currentColumnId
=
neo4jColumn
.
getMetadataId
();
String
currentColumnId
=
neo4jColumn
.
getMetadataId
();
String
targetColumncypher
=
"match (m:Neo4jColumn{metadataId:\""
+
currentColumnId
+
"\"})-[r1:流向]->(n1)-[r0:TempRelation*0..]->(m2)-[r:流向]->(m1) return m1"
;
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"
;
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
);
StatementResult
targetColumnResult
=
session
.
run
(
targetColumncypher
);
long
time31
=
System
.
currentTimeMillis
();
runCypherTime
+=
(
time31
-
time30
);
runCypherCount
++;
while
(
targetColumnResult
.
hasNext
()){
while
(
targetColumnResult
.
hasNext
()){
Record
record
=
targetColumnResult
.
next
();
Record
record
=
targetColumnResult
.
next
();
List
<
Value
>
values
=
record
.
values
();
List
<
Value
>
values
=
record
.
values
();
...
@@ -553,6 +580,7 @@ public class TableServiceImpl implements ITableService {
...
@@ -553,6 +580,7 @@ public class TableServiceImpl implements ITableService {
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setType
(
"Column"
);
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
...
@@ -560,12 +588,17 @@ public class TableServiceImpl implements ITableService {
...
@@ -560,12 +588,17 @@ public class TableServiceImpl implements ITableService {
String
edgeId
=
tableId
+
"_"
+
returnNode
.
getId
();
String
edgeId
=
tableId
+
"_"
+
returnNode
.
getId
();
returnEdge
.
setFromId
(
currentColumnId
);
returnEdge
.
setFromId
(
currentColumnId
);
returnEdge
.
setToId
(
returnNode
.
getId
());
returnEdge
.
setToId
(
returnNode
.
getId
());
returnEdge
.
setType
(
"流向"
);
returnEdge
.
setType
(
"To"
);
returnEdge
.
setEdgeId
(
edgeId
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
}
}
}
}
}
}
long
time40
=
System
.
currentTimeMillis
();
StatementResult
sourceColumnResult
=
session
.
run
(
sourceColumncypher
);
StatementResult
sourceColumnResult
=
session
.
run
(
sourceColumncypher
);
runCypherCount
++;
long
time41
=
System
.
currentTimeMillis
();
runCypherTime
+=
(
time41
-
time40
);
while
(
sourceColumnResult
.
hasNext
()){
while
(
sourceColumnResult
.
hasNext
()){
Record
record
=
sourceColumnResult
.
next
();
Record
record
=
sourceColumnResult
.
next
();
List
<
Value
>
values
=
record
.
values
();
List
<
Value
>
values
=
record
.
values
();
...
@@ -584,13 +617,15 @@ public class TableServiceImpl implements ITableService {
...
@@ -584,13 +617,15 @@ public class TableServiceImpl implements ITableService {
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setType
(
"Column"
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
returnNodeMap
.
put
(
returnNode
.
getId
(),
returnNode
);
ReturnEdge
returnEdge
=
new
ReturnEdge
();
ReturnEdge
returnEdge
=
new
ReturnEdge
();
String
edgeId
=
returnNode
.
getId
()
+
"_"
+
tableId
;
String
edgeId
=
returnNode
.
getId
()
+
"_"
+
tableId
;
returnEdge
.
setFromId
(
returnNode
.
getId
()
);
returnEdge
.
setFromId
(
returnNode
.
getId
()
);
returnEdge
.
setToId
(
currentColumnId
);
returnEdge
.
setToId
(
currentColumnId
);
returnEdge
.
setType
(
"流向"
);
returnEdge
.
setType
(
"To"
);
returnEdge
.
setEdgeId
(
edgeId
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
}
}
}
}
...
@@ -603,25 +638,74 @@ public class TableServiceImpl implements ITableService {
...
@@ -603,25 +638,74 @@ public class TableServiceImpl implements ITableService {
String
currentTableId
=
(
String
)
obj
;
String
currentTableId
=
(
String
)
obj
;
List
<
Neo4jColumn
>
currentNeo4jColumns
=
neo4jTableRepository
.
getColumnByTableId
(
currentTableId
);
if
(!
currentTableId
.
startsWith
(
"Table="
)){
for
(
Neo4jColumn
currentNeo4jColumn:
currentNeo4jColumns
){
continue
;
String
columnId
=
currentNeo4jColumn
.
getMetadataId
();
}
if
(!
returnNodeMap
.
containsKey
(
columnId
)){
long
time103
=
System
.
currentTimeMillis
();
String
table2CoumnCypher
=
"match (n:Neo4jTable{metadataId:\""
+
currentTableId
+
"\"})-[r2:Composition]->(m:Neo4jColumn) return m"
;
runCypherCount
++;
StatementResult
table2CoumnResult
=
session
.
run
(
table2CoumnCypher
);
long
time104
=
System
.
currentTimeMillis
();
runCypherTime
+=
(
time104
-
time103
);
while
(
table2CoumnResult
.
hasNext
()){
Record
record
=
table2CoumnResult
.
next
();
List
<
Value
>
values
=
record
.
values
();
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
);
if
(
metaData
.
getMetadataId
()
==
null
){
metaData
.
setMetadataId
(
"System="
+
metaData
.
getName
());
}
String
columnId
=
metaData
.
getMetadataId
();
if
(!
returnNodeMap
.
containsKey
(
columnId
)){
ReturnNode
returnNode
=
new
ReturnNode
();
ReturnNode
returnNode
=
new
ReturnNode
();
returnNode
.
setId
(
currentNeo4jColumn
.
getMetadataId
());
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
currentNeo4jColumn
.
getName
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setCnName
(
currentNeo4jColumn
.
getCnName
());
returnNode
.
setCnName
(
metaData
.
getCnName
());
returnNode
.
setDataPath
(
metaData
.
getPath
());
returnNode
.
setType
(
"Column"
);
noRelationColumns
.
put
(
columnId
,
returnNode
);
noRelationColumns
.
put
(
columnId
,
returnNode
);
}
}
ReturnEdge
returnEdge
=
new
ReturnEdge
();
ReturnEdge
returnEdge
=
new
ReturnEdge
();
String
edgeId
=
currentTableId
+
"_"
+
columnId
;
String
edgeId
=
currentTableId
+
"_"
+
columnId
;
returnEdge
.
setEdgeId
(
edgeId
);
returnEdge
.
setFromId
(
currentTableId
);
returnEdge
.
setFromId
(
currentTableId
);
returnEdge
.
setToId
(
columnId
);
returnEdge
.
setToId
(
columnId
);
returnEdge
.
setType
(
"Composition"
);
returnEdge
.
setType
(
"Composition"
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
returnEdgeMap
.
put
(
edgeId
,
returnEdge
);
}
}
}
}
}
// 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
()){
for
(
Object
obj:
returnNodeMap
.
keySet
()){
ReturnNode
returnNode
=
returnNodeMap
.
get
(
obj
);
ReturnNode
returnNode
=
returnNodeMap
.
get
(
obj
);
returnReslult
.
getNodes
().
add
(
returnNode
);
returnReslult
.
getNodes
().
add
(
returnNode
);
...
@@ -634,7 +718,12 @@ public class TableServiceImpl implements ITableService {
...
@@ -634,7 +718,12 @@ public class TableServiceImpl implements ITableService {
ReturnEdge
returnEdge
=
returnEdgeMap
.
get
(
obj
);
ReturnEdge
returnEdge
=
returnEdgeMap
.
get
(
obj
);
returnReslult
.
getEdges
().
add
(
returnEdge
);
returnReslult
.
getEdges
().
add
(
returnEdge
);
}
}
System
.
out
.
println
(
"查询run次数:"
+
runCypherCount
+
" , 时间:"
+
runCypherTime
);
System
.
out
.
println
(
"查询respossitory次数:"
+
respossitoryCount
+
" , 时间:"
+
respossitoryTime
);
long
timeEnd
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"总耗时:"
+(
timeEnd
-
timeStart
));
return
returnReslult
;
return
returnReslult
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment