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
0c5f98b1
Commit
0c5f98b1
authored
Dec 16, 2021
by
qiuchaofei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.按照新原型设计模型,实体类,新的前后端接口。2修改从mongo同步数据到neo4j的方法。
parent
03229683
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
828 additions
and
88 deletions
+828
-88
MetaDataController.java
...adata/metadataRelation/controller/MetaDataController.java
+8
-9
RelationalGraphController.java
...etadataRelation/controller/RelationalGraphController.java
+78
-0
BaseNode.java
...om/keymobile/metadata/metadataRelation/pojo/BaseNode.java
+19
-0
Neo4jFunction.java
...etadata/metadataRelation/pojo/metadata/Neo4jFunction.java
+8
-0
Neo4jJob.java
...ile/metadata/metadataRelation/pojo/metadata/Neo4jJob.java
+8
-0
Neo4jProcedure.java
...tadata/metadataRelation/pojo/metadata/Neo4jProcedure.java
+8
-0
Neo4jSchema.java
.../metadata/metadataRelation/pojo/metadata/Neo4jSchema.java
+18
-0
Neo4jSystem.java
.../metadata/metadataRelation/pojo/metadata/Neo4jSystem.java
+9
-0
Neo4jTable.java
...e/metadata/metadataRelation/pojo/metadata/Neo4jTable.java
+8
-0
Neo4jView.java
...le/metadata/metadataRelation/pojo/metadata/Neo4jView.java
+8
-0
MongoData.java
...obile/metadata/metadataRelation/pojo/mongo/MongoData.java
+64
-0
ReturnEdge.java
...metadata/metadataRelation/pojo/returnBean/ReturnEdge.java
+1
-1
ReturnNode.java
...metadata/metadataRelation/pojo/returnBean/ReturnNode.java
+1
-1
ReturnReslult.java
...adata/metadataRelation/pojo/returnBean/ReturnReslult.java
+6
-7
Neo4jFunctionRepository.java
...elation/respository/metadata/Neo4jFunctionRepository.java
+13
-0
Neo4jProcedureRepository.java
...lation/respository/metadata/Neo4jProcedureRepository.java
+14
-0
Neo4jSchemaRepository.java
...aRelation/respository/metadata/Neo4jSchemaRepository.java
+18
-0
Neo4jSystemRepository.java
...aRelation/respository/metadata/Neo4jSystemRepository.java
+18
-0
Neo4jTableRepository.java
...taRelation/respository/metadata/Neo4jTableRepository.java
+12
-0
Neo4jViewRepository.java
...ataRelation/respository/metadata/Neo4jViewRepository.java
+14
-0
AsyncDataFromMongoToNeo4j.java
...a/metadataRelation/service/AsyncDataFromMongoToNeo4j.java
+35
-3
IBaseRelationshipService.java
...ta/metadataRelation/service/IBaseRelationshipService.java
+2
-1
IMetadataService.java
...e/metadata/metadataRelation/service/IMetadataService.java
+3
-0
ISchemaService.java
...ile/metadata/metadataRelation/service/ISchemaService.java
+12
-0
ISystemService.java
...ile/metadata/metadataRelation/service/ISystemService.java
+13
-0
BaseRelationshipServiceImpl.java
...ataRelation/service/impl/BaseRelationshipServiceImpl.java
+16
-0
MetadataServiceImpl.java
...ta/metadataRelation/service/impl/MetadataServiceImpl.java
+209
-52
MongoDbServiceImpl.java
...ata/metadataRelation/service/impl/MongoDbServiceImpl.java
+49
-1
MultiModelServiceImpl.java
.../metadataRelation/service/impl/MultiModelServiceImpl.java
+5
-13
SchemaServiceImpl.java
...data/metadataRelation/service/impl/SchemaServiceImpl.java
+100
-0
SystemServiceImpl.java
...data/metadataRelation/service/impl/SystemServiceImpl.java
+51
-0
No files found.
src/main/java/com/keymobile/metadata/metadataRelation/controller/MetaDataController.java
View file @
0c5f98b1
...
...
@@ -12,9 +12,9 @@ import java.util.stream.Collectors;
import
com.keymobile.metadata.metadataRelation.pojo.BaseRelationship
;
import
com.keymobile.metadata.metadataRelation.pojo.MetaData
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.
Return
Edge
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.Node
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.
Return
Node
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult
;
import
com.keymobile.metadata.metadataRelation.service.AsyncDataFromMongoToNeo4j
;
import
com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService
;
...
...
@@ -30,7 +30,6 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.system.ApplicationHome
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -165,7 +164,7 @@ public class MetaDataController {
returnReslult
=
metadataService
.
findResultByModelName
(
modelName0
,
sizeInt
);
}
else
{
List
<
MetaData
>
metaDataList
=
metadataService
.
finAllMetaData
();
Map
<
String
,
Node
>
nodeMap
=
new
HashMap
<>();
Map
<
String
,
Return
Node
>
nodeMap
=
new
HashMap
<>();
Map
<
String
,
String
>
child2Parent
=
new
HashMap
<>();
Map
<
String
,
List
<
String
>>
parent2Children
=
new
HashMap
<>();
...
...
@@ -175,7 +174,7 @@ public class MetaDataController {
Map
<
String
,
MetaModel
>
metaModelMap
=
new
HashMap
<>();
for
(
MetaData
metaData
:
metaDataList
)
{
Node
node
=
new
Node
();
ReturnNode
node
=
new
Return
Node
();
String
[]
strings
=
metaData
.
getMetadataId
().
split
(
"="
);
String
modelName
=
strings
[
0
];
...
...
@@ -184,7 +183,7 @@ public class MetaDataController {
String
systemName
=
metaData
.
getSystem
();
Node
systemNode
=
new
Node
();
ReturnNode
systemNode
=
new
Return
Node
();
systemNode
.
setId
(
"catalog="
+
systemName
);
systemNode
.
setName
(
systemName
);
String
newModelName
=
"Catalog"
;
...
...
@@ -297,7 +296,7 @@ public class MetaDataController {
// }
if
(
nodeMap
.
containsKey
(
""
+
startId
))
{
Node
startNode
=
nodeMap
.
get
(
""
+
startId
);
Return
Node
startNode
=
nodeMap
.
get
(
""
+
startId
);
startMetaId
=
nodeMap
.
get
(
""
+
startId
).
getId
();
}
...
...
@@ -306,7 +305,7 @@ public class MetaDataController {
endMetaId
=
nodeMap
.
get
(
""
+
endId
).
getId
();
}
if
(
StringUtils
.
isNotBlank
(
startMetaId
)
&&
StringUtils
.
isNotBlank
(
endMetaId
)){
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
""
+
baseRelationship
.
getId
());
edge
.
setFromId
(
startMetaId
);
edge
.
setToId
(
endMetaId
);
...
...
@@ -368,7 +367,7 @@ public class MetaDataController {
metaDataList
=
metadataService
.
findChildrenByParentId
(
dataId
,
count
);
}
for
(
MetaData
metaData
:
metaDataList
)
{
Node
node
=
new
Node
();
ReturnNode
node
=
new
Return
Node
();
String
[]
strings
=
metaData
.
getMetadataId
().
split
(
"="
);
String
modelName
=
strings
[
0
];
...
...
src/main/java/com/keymobile/metadata/metadataRelation/controller/RelationalGraphController.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
controller
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult
;
import
com.keymobile.metadata.metadataRelation.service.IMetadataService
;
import
com.keymobile.metadata.metadataRelation.service.ISchemaService
;
import
com.keymobile.metadata.metadataRelation.service.ISystemService
;
import
com.keymobile.metadata.metadataRelation.service.impl.SystemServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.Map
;
@RestController
@Api
(
value
=
"关系图谱的接口"
,
tags
=
"relational graph controller"
)
public
class
RelationalGraphController
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
RelationalGraphController
.
class
);
@Autowired
private
IMetadataService
metadataService
;
@Autowired
private
ISystemService
systemService
;
@Autowired
private
ISchemaService
schemaService
;
//系统总图的接口
@ApiOperation
(
tags
=
""
,
value
=
"系统总图"
)
@RequestMapping
(
path
=
"/getSystemGraph1"
,
method
=
RequestMethod
.
GET
)
public
ReturnReslult
getSystemGraph1
(){
int
size
=
300
;
return
metadataService
.
getSystemGraph
(
size
);
}
//系统总图下钻获取schema,schema要分层
@ApiOperation
(
tags
=
""
,
value
=
"按照系统获取schema,要分层"
)
@RequestMapping
(
path
=
"/getSchemaBySystemId"
,
method
=
RequestMethod
.
GET
)
public
Map
<
String
,
List
<
ReturnNode
>>
getSchemaBySystem
(
String
systemId
){
//传入一个系统名称/id,返回系统下的所有schema,注意分层
Map
<
String
,
List
<
ReturnNode
>>
stringListMap
=
systemService
.
getSchemaBySystemId
(
systemId
);
int
size
=
300
;
return
stringListMap
;
// metadataService.getSystemGraph(size);
}
//单个schema的数据,包括表,视图,函数,过程等,列表形势
@ApiOperation
(
tags
=
""
,
value
=
"按照系统获取schema,要分层"
)
@RequestMapping
(
path
=
"/getTableBySchemaId"
,
method
=
RequestMethod
.
GET
)
public
Map
<
String
,
List
<
ReturnNode
>>
getTableBySchemaId
(
String
schemaId
){
//传入一个系统名称/id,返回系统下的所有schema,注意分层
Map
<
String
,
List
<
ReturnNode
>>
stringListMap
=
schemaService
.
getTablesBySchemaId
(
schemaId
);
int
size
=
300
;
return
stringListMap
;
// metadataService.getSystemGraph(size);
}
//关系的分层,图的形势,由里到外
//表的分析,关系分析--表与模型,表与质量,表与标准,表与作业的关系
//表的分析,链路分析,表与其他表的关系,其他表可以下钻,并且可以收缩。
//搜索接口,多个搜索结果,则先弹出列表(对象的全路径),再进行选择哪个对象
//同步数据,从mongo到neo4j,从“环境,系统,schema,表”的结构
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/BaseNode.java
View file @
0c5f98b1
...
...
@@ -4,6 +4,25 @@ package com.keymobile.metadata.metadataRelation.pojo;
public
class
BaseNode
extends
AllBaseEntity
{
private
String
name
;
//名称
public
String
getCnName
()
{
return
cnName
;
}
public
void
setCnName
(
String
cnName
)
{
this
.
cnName
=
cnName
;
}
public
String
getMetadataId
()
{
return
metadataId
;
}
public
void
setMetadataId
(
String
metadataId
)
{
this
.
metadataId
=
metadataId
;
}
private
String
metadataId
;
private
String
cnName
;
// @Relationship(type= NodeType.REF)
// private Set<BaseRelationship> relationships; //关系列表
...
...
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jFunction.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jFunction"
)
public
class
Neo4jFunction
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jJob.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jJob"
)
public
class
Neo4jJob
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jProcedure.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jProcedure"
)
public
class
Neo4jProcedure
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jSchema.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jSchema"
)
public
class
Neo4jSchema
extends
BaseNode
{
public
String
getLabel
()
{
return
label
;
}
public
void
setLabel
(
String
label
)
{
this
.
label
=
label
;
}
private
String
label
;
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jSystem.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jSystem"
)
public
class
Neo4jSystem
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jTable.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jTable"
)
public
class
Neo4jTable
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/metadata/Neo4jView.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
org.neo4j.ogm.annotation.NodeEntity
;
@NodeEntity
(
label
=
"Neo4jView"
)
public
class
Neo4jView
extends
BaseNode
{
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/mongo/MongoData.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
mongo
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
MongoData
{
private
String
_id
;
private
String
name
;
private
String
cnName
;
private
String
parentId
;
public
List
<
String
>
getSysList
()
{
return
sysList
;
}
public
void
setSysList
(
List
<
String
>
sysList
)
{
this
.
sysList
=
sysList
;
}
private
List
<
String
>
sysList
=
new
ArrayList
<>();
public
String
get_class
()
{
return
_class
;
}
public
void
set_class
(
String
_class
)
{
this
.
_class
=
_class
;
}
private
String
_class
;
public
String
getParentId
()
{
return
parentId
;
}
public
void
setParentId
(
String
parentId
)
{
this
.
parentId
=
parentId
;
}
public
String
get_id
()
{
return
_id
;
}
public
void
set_id
(
String
_id
)
{
this
.
_id
=
_id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getCnName
()
{
return
cnName
;
}
public
void
setCnName
(
String
cnName
)
{
this
.
cnName
=
cnName
;
}
}
src/main/java/com/keymobile/metadata/metadataRelation/pojo/returnBean/Edge.java
→
src/main/java/com/keymobile/metadata/metadataRelation/pojo/returnBean/
Return
Edge.java
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
;
public
class
Edge
{
public
class
Return
Edge
{
private
String
edgeId
;
private
String
fromId
;
...
...
src/main/java/com/keymobile/metadata/metadataRelation/pojo/returnBean/Node.java
→
src/main/java/com/keymobile/metadata/metadataRelation/pojo/returnBean/
Return
Node.java
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
;
public
class
Node
{
public
class
Return
Node
{
private
String
name
;
private
String
id
;
...
...
src/main/java/com/keymobile/metadata/metadataRelation/pojo/returnBean/ReturnReslult.java
View file @
0c5f98b1
...
...
@@ -3,7 +3,6 @@ package com.keymobile.metadata.metadataRelation.pojo.returnBean;
import
org.apache.commons.collections.map.HashedMap
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -20,9 +19,9 @@ public class ReturnReslult {
}
private
List
<
Edge
>
edges
=
new
ArrayList
<>();
private
List
<
Return
Edge
>
edges
=
new
ArrayList
<>();
private
List
<
Node
>
nodes
=
new
ArrayList
<>();
private
List
<
Return
Node
>
nodes
=
new
ArrayList
<>();
public
Map
<
String
,
MetaModel
>
getMetaModelMap
()
{
return
metaModelMap
;
...
...
@@ -35,19 +34,19 @@ public class ReturnReslult {
private
Map
<
String
,
MetaModel
>
metaModelMap
=
new
HashedMap
();
public
List
<
Edge
>
getEdges
()
{
public
List
<
Return
Edge
>
getEdges
()
{
return
edges
;
}
public
void
setEdges
(
List
<
Edge
>
edges
)
{
public
void
setEdges
(
List
<
Return
Edge
>
edges
)
{
this
.
edges
=
edges
;
}
public
List
<
Node
>
getNodes
()
{
public
List
<
Return
Node
>
getNodes
()
{
return
nodes
;
}
public
void
setNodes
(
List
<
Node
>
nodes
)
{
public
void
setNodes
(
List
<
Return
Node
>
nodes
)
{
this
.
nodes
=
nodes
;
}
...
...
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jFunctionRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jFunction
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jTable
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jFunctionRepository
extends
Neo4jRepository
<
Neo4jFunction
,
Long
>
{
List
<
Neo4jFunction
>
findNeo4jFunctionByMetadataId
(
String
metadataId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jProcedureRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jFunction
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jProcedure
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jProcedureRepository
extends
Neo4jRepository
<
Neo4jProcedure
,
Long
>
{
List
<
Neo4jProcedure
>
findNeo4jProcedureByMetadataId
(
String
metadataId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jSchemaRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
org.springframework.data.neo4j.annotation.Query
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jSchemaRepository
extends
Neo4jRepository
<
Neo4jSchema
,
Long
>
{
List
<
Neo4jSchema
>
findNeo4jSchemaByMetadataId
(
String
metadataId
);
@Query
(
"match (n:Neo4jSchema{metadataId:{schemaId}} )-[r:Composition]->(m) return m "
)
List
<
BaseNode
>
getTableBySchemaId
(
@Param
(
"schemaId"
)
String
schemaId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jSystemRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem
;
import
org.springframework.data.neo4j.annotation.Query
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jSystemRepository
extends
Neo4jRepository
<
Neo4jSystem
,
Long
>
{
List
<
Neo4jSystem
>
findNeo4jSystemByMetadataId
(
String
metadataId
);
// @Query("MATCH p=(n:MetaData {metadataId:{parentId}})-[r:Composition]->(m) RETURN m limit {limit} ")
@Query
(
"match (n:Neo4jSystem{metadataId:{systemId}} )-[r:Composition]->(m) return m "
)
List
<
Neo4jSchema
>
getSchemaBySystemId
(
@Param
(
"systemId"
)
String
systemId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jTableRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jTable
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jTableRepository
extends
Neo4jRepository
<
Neo4jTable
,
Long
>
{
List
<
Neo4jTable
>
findNeo4jTableByMetadataId
(
String
metadataId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/respository/metadata/Neo4jViewRepository.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
respository
.
metadata
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jProcedure
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jView
;
import
org.springframework.data.neo4j.repository.Neo4jRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
Neo4jViewRepository
extends
Neo4jRepository
<
Neo4jView
,
Long
>
{
List
<
Neo4jView
>
findNeo4jViewByMetadataId
(
String
metadataId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/service/AsyncDataFromMongoToNeo4j.java
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
;
import
com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData
;
import
org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.jdbc.core.RowMapper
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.AsyncConfigurer
;
import
org.springframework.scheduling.annotation.EnableAsync
;
...
...
@@ -10,6 +13,9 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import
org.springframework.stereotype.Service
;
import
java.lang.reflect.Method
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.List
;
import
java.util.concurrent.Executor
;
@Service
...
...
@@ -19,12 +25,38 @@ public class AsyncDataFromMongoToNeo4j {
@Autowired
private
IMetadataService
metadataService
;
@Autowired
private
JdbcTemplate
jdbcTemplate
;
@Async
public
void
asyncDataFromMongoToNeo4j
(
String
catalogName
)
{
metadataService
.
syschroRelationFromMongo
(
catalogName
);
metadataService
.
deleteTempNodeByCatalogName
(
catalogName
);
metadataService
.
createTempNode
(
catalogName
);
String
sql
=
"select scope_id, scope_name from auth_scope"
;
List
<
MongoData
>
mongoDataList
=
jdbcTemplate
.
query
(
sql
,
new
RowMapper
<
MongoData
>()
{
@Override
public
MongoData
mapRow
(
ResultSet
resultSet
,
int
i
)
throws
SQLException
{
MongoData
user
=
new
MongoData
();
user
.
set_id
(
resultSet
.
getString
(
"scope_id"
));
user
.
setName
(
resultSet
.
getString
(
"scope_name"
));
user
.
setCnName
(
resultSet
.
getString
(
"scope_name"
));
user
.
set_class
(
"System"
);
return
user
;
}
});
metadataService
.
syschroMetadataFromMongo
(
catalogName
,
mongoDataList
);
//先同步元数据,纵向关系,root开始
//再同步元数据的横向关系
// metadataService.syschroRelationFromMongo(catalogName);
// // 同步其他数据(模型,标准,质量等)
//
// //同步作业内部的临时数据
// metadataService.deleteTempNodeByCatalogName(catalogName);
// metadataService.createTempNode(catalogName);
}
...
...
src/main/java/com/keymobile/metadata/metadataRelation/service/IBaseRelationshipService.java
View file @
0c5f98b1
...
...
@@ -3,7 +3,6 @@ package com.keymobile.metadata.metadataRelation.service;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseRelationship
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge
;
import
java.util.List
;
...
...
@@ -67,4 +66,6 @@ public interface IBaseRelationshipService {
* @desc 根据节点名称, 获取所有有关系的节点
*/
List
<
BaseNode
>
findMetadataByStartName
(
String
startName
);
void
saveRelation
(
String
startMetadataId
,
String
endMetadataid
,
String
composition
);
}
src/main/java/com/keymobile/metadata/metadataRelation/service/IMetadataService.java
View file @
0c5f98b1
...
...
@@ -3,6 +3,7 @@ package com.keymobile.metadata.metadataRelation.service;
import
com.keymobile.metadata.metadataRelation.pojo.BaseRelationship
;
import
com.keymobile.metadata.metadataRelation.pojo.MetaData
;
import
com.keymobile.metadata.metadataRelation.pojo.TempNode
;
import
com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult
;
import
java.util.List
;
...
...
@@ -97,4 +98,6 @@ public interface IMetadataService {
Map
<
String
,
String
>
getAutoMatchByInput
(
String
name
,
int
countInt
,
int
offsetInt
);
ReturnReslult
searchGraphBySystem
(
String
metadataId
,
int
layerLong
);
void
syschroMetadataFromMongo
(
String
catalogName
,
List
<
MongoData
>
mongoDataList
);
}
src/main/java/com/keymobile/metadata/metadataRelation/service/ISchemaService.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
java.util.List
;
import
java.util.Map
;
public
interface
ISchemaService
{
Map
<
String
,
String
>
getSchemaBySystem
(
String
systemId
);
Map
<
String
,
List
<
ReturnNode
>>
getTablesBySchemaId
(
String
schemaId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/service/ISystemService.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
java.util.List
;
import
java.util.Map
;
public
interface
ISystemService
{
Map
<
String
,
List
<
ReturnNode
>>
getSchemaBySystemId
(
String
systemId
);
}
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/BaseRelationshipServiceImpl.java
View file @
0c5f98b1
...
...
@@ -3,6 +3,8 @@ package com.keymobile.metadata.metadataRelation.service.impl;
import
com.keymobile.metadata.metadataRelation.config.Neo4jConfig
;
import
com.keymobile.metadata.metadataRelation.pojo.*
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem
;
import
com.keymobile.metadata.metadataRelation.respository.*
;
import
com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService
;
import
org.neo4j.driver.v1.Driver
;
...
...
@@ -165,4 +167,18 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService {
// }
return
null
;
}
@Override
public
void
saveRelation
(
String
startId
,
String
endId
,
String
composition
)
{
Neo4jConfig
neo4jConfig
=
new
Neo4jConfig
();
Driver
neo4jConnection
=
neo4jConfig
.
getNeo4jConnection
();
Session
session
=
neo4jConnection
.
session
();
// match (n{metadataId:"Column=1=d9c2d67e56a3428e8e4f22918782437f"}),
// (m{metadataId:"Table=1=d644b631fa8c434e928bcd1f1665b060"})
// create (n)<-[r:Composition]-(m)
// return n,m,r
String
cypher
=
" match (n{metadataId:\""
+
startId
+
"\"}),(m{metadataId:\""
+
endId
+
"\"}) merge (n)-[r:"
+
composition
+
"]->(m) return n,m,r "
;
session
.
run
(
cypher
);
logger
.
info
(
"运行保存关系完成:"
+
cypher
);
}
}
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/MetadataServiceImpl.java
View file @
0c5f98b1
...
...
@@ -9,11 +9,15 @@ import java.util.concurrent.*;
import
com.keymobile.metadata.metadataRelation.config.Neo4jConfig
;
import
com.keymobile.metadata.metadataRelation.pojo.*
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.*
;
import
com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult
;
import
com.keymobile.metadata.metadataRelation.remote.MetadataRepoRemoteService
;
import
com.keymobile.metadata.metadataRelation.respository.*
;
import
com.keymobile.metadata.metadataRelation.respository.metadata.*
;
import
com.keymobile.metadata.metadataRelation.service.IBaseRelationshipService
;
import
com.keymobile.metadata.metadataRelation.service.IMetadataService
;
import
com.keymobile.metadata.metadataRelation.util.Neo4jTool
;
...
...
@@ -29,13 +33,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.system.ApplicationHome
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.mongodb.core.query.Meta
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
sun.misc.BASE64Encoder
;
import
javax.swing.*
;
@Service
public
class
MetadataServiceImpl
implements
IMetadataService
{
...
...
@@ -69,7 +70,21 @@ public class MetadataServiceImpl implements IMetadataService {
@Autowired
private
MetadataRepoRemoteService
metadataRepoRemoteService
;
@Autowired
private
Neo4jSystemRepository
neo4jSystemRepository
;
@Autowired
private
Neo4jSchemaRepository
neo4jSchemaRepository
;
@Autowired
private
Neo4jTableRepository
neo4jTableRepository
;
@Autowired
private
Neo4jViewRepository
neo4jViewRepository
;
@Autowired
private
Neo4jFunctionRepository
neo4jFunctionRepository
;
@Autowired
private
Neo4jProcedureRepository
neo4jProcedureRepository
;
@Override
public
List
<
MetaData
>
findNodeByName
(
String
dataName
)
{
...
...
@@ -105,7 +120,7 @@ public class MetadataServiceImpl implements IMetadataService {
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
// metaDataList.add(data);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
...
...
@@ -137,7 +152,7 @@ public class MetadataServiceImpl implements IMetadataService {
*/
// relationship.id();
//
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
String
relationName
=
nodesMap
.
get
(
startID
).
getMetadataId
()
+
"-"
+
rType
+
"-"
+
nodesMap
.
get
(
endID
).
getMetadataId
();
...
...
@@ -199,7 +214,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
...
...
@@ -233,11 +248,11 @@ public class MetadataServiceImpl implements IMetadataService {
long
time0
=
System
.
currentTimeMillis
();
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
threadCount
);
List
<
Future
<
List
<
Edge
>>>
relations
=
new
ArrayList
<>();
List
<
Future
<
List
<
Return
Edge
>>>
relations
=
new
ArrayList
<>();
final
CountDownLatch
countDownLatch
=
new
CountDownLatch
(
threadCount
);
for
(
String
metadataId:
metadataIdList
){
Future
<
List
<
Edge
>>
futures
=
executor
.
submit
(
new
neo4jRelaionTask
(
metadataId
,
metadataIdList
,
modelName
,
session
,
countDownLatch
));
Future
<
List
<
Return
Edge
>>
futures
=
executor
.
submit
(
new
neo4jRelaionTask
(
metadataId
,
metadataIdList
,
modelName
,
session
,
countDownLatch
));
relations
.
add
(
futures
);
}
try
{
...
...
@@ -249,10 +264,10 @@ public class MetadataServiceImpl implements IMetadataService {
executor
.
shutdown
();
}
for
(
Future
<
List
<
Edge
>>
f
:
relations
){
for
(
Future
<
List
<
Return
Edge
>>
f
:
relations
){
try
{
List
<
Edge
>
relationList
=
f
.
get
();
for
(
Edge
edge:
relationList
){
List
<
Return
Edge
>
relationList
=
f
.
get
();
for
(
Return
Edge
edge:
relationList
){
// System.out.println("relation:"+edge.getEdgeId());
returnReslult
.
getEdges
().
add
(
edge
);
}
...
...
@@ -362,7 +377,7 @@ public class MetadataServiceImpl implements IMetadataService {
String
modelName
=
"System"
;
List
<
String
>
metadataIdList
=
new
ArrayList
<>();
Map
<
Long
,
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
>
nodesMap
=
new
HashMap
<>();
Map
<
Long
,
Return
Node
>
nodesMap
=
new
HashMap
<>();
Map
<
String
,
MetaModel
>
metaModelMap
=
new
HashMap
<>();
while
(
result
.
hasNext
())
{
...
...
@@ -384,7 +399,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
metaData
.
getMetadataId
()
==
null
){
metaData
.
setMetadataId
(
"System="
+
metaData
.
getName
());
}
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
...
...
@@ -426,7 +441,7 @@ public class MetadataServiceImpl implements IMetadataService {
endMEtaId
=
nodesMap
.
get
(
endID
).
getId
();
}
if
(!
StringUtils
.
isBlank
(
startMetaId
)
&&
!
StringUtils
.
isBlank
(
endMEtaId
)){
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
String
relationName
=
nodesMap
.
get
(
startID
).
getId
()
+
"-"
+
rType
+
"-"
+
nodesMap
.
get
(
endID
).
getId
();
...
...
@@ -444,7 +459,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
for
(
Object
object:
nodesMap
.
keySet
()){
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
node
=
nodesMap
.
get
(
object
);
Return
Node
node
=
nodesMap
.
get
(
object
);
returnReslult
.
getNodes
().
add
(
node
);
}
...
...
@@ -500,9 +515,9 @@ public class MetadataServiceImpl implements IMetadataService {
}
public
void
getPreNodeBySystemName
(
String
metadataName
,
Session
session
,
ReturnReslult
returnReslult
,
Map
<
Long
,
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
>
longMetaDataMap
,
Map
<
Long
,
Return
Node
>
longMetaDataMap
,
Map
<
String
,
MetaModel
>
metaModelMap
,
Map
<
String
,
Edge
>
edgeMap
,
int
layer
){
Map
<
String
,
Return
Edge
>
edgeMap
,
int
layer
){
String
cypher
=
"match p=(n:softplatform{name:\""
+
metadataName
+
"\"}) <-[r]-(m:softplatform) return p"
;
...
...
@@ -538,7 +553,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
metaData
.
getMetadataId
()
==
null
){
metaData
.
setMetadataId
(
"System="
+
metaData
.
getName
());
}
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnNode
.
setType
(
"MetaData"
);
...
...
@@ -574,7 +589,7 @@ public class MetadataServiceImpl implements IMetadataService {
long
endLong
=
relationship
.
endNodeId
();
if
(
longMetaDataMap
.
containsKey
(
startLong
)&&
longMetaDataMap
.
containsKey
(
endLong
)){
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
String
edgeId
=
startLong
+
"_"
+
endLong
;
if
(
edgeMap
.
containsKey
(
edgeId
)){
continue
;
...
...
@@ -593,9 +608,9 @@ public class MetadataServiceImpl implements IMetadataService {
}
public
void
getToNodeBySystemName
(
String
metadataName
,
Session
session
,
ReturnReslult
returnReslult
,
Map
<
Long
,
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
>
longMetaDataMap
,
Map
<
Long
,
Return
Node
>
longMetaDataMap
,
Map
<
String
,
MetaModel
>
metaModelMap
,
Map
<
String
,
Edge
>
edgeMap
,
int
layer
){
Map
<
String
,
Return
Edge
>
edgeMap
,
int
layer
){
String
cypher
=
"match p=(n:softplatform{name:\""
+
metadataName
+
"\"}) -[r]->(m:softplatform) return p"
;
...
...
@@ -631,7 +646,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
metaData
.
getMetadataId
()
==
null
){
metaData
.
setMetadataId
(
"System="
+
metaData
.
getName
());
}
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
longMetaDataMap
.
put
(
node
.
id
(),
returnNode
);
...
...
@@ -666,7 +681,7 @@ public class MetadataServiceImpl implements IMetadataService {
long
endLong
=
relationship
.
endNodeId
();
if
(
longMetaDataMap
.
containsKey
(
startLong
)&&
longMetaDataMap
.
containsKey
(
endLong
)){
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
String
edgeId
=
startLong
+
"_"
+
endLong
;
if
(
edgeMap
.
containsKey
(
edgeId
)){
continue
;
...
...
@@ -696,17 +711,17 @@ public class MetadataServiceImpl implements IMetadataService {
Session
session
=
neo4jConnection
.
session
();
String
[]
strings
=
metadataId
.
split
(
"="
);
String
metadataName
=
strings
[
strings
.
length
-
1
];
Map
<
Long
,
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
>
longMetaDataMap
=
new
HashMap
<>();
Map
<
String
,
Edge
>
edgeMap
=
new
HashMap
<>();
Map
<
Long
,
Return
Node
>
longMetaDataMap
=
new
HashMap
<>();
Map
<
String
,
Return
Edge
>
edgeMap
=
new
HashMap
<>();
Map
<
String
,
MetaModel
>
metaModelMap
=
new
HashMap
<>();
getPreNodeBySystemName
(
metadataName
,
session
,
returnReslult
,
longMetaDataMap
,
metaModelMap
,
edgeMap
,
layer
);
for
(
Object
obj
:
longMetaDataMap
.
keySet
()){
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
node
=
longMetaDataMap
.
get
(
obj
);
Return
Node
node
=
longMetaDataMap
.
get
(
obj
);
returnReslult
.
getNodes
().
add
(
node
);
}
for
(
Object
obj
:
edgeMap
.
keySet
()){
Edge
edge
=
edgeMap
.
get
(
obj
);
Return
Edge
edge
=
edgeMap
.
get
(
obj
);
returnReslult
.
getEdges
().
add
(
edge
);
}
...
...
@@ -715,17 +730,19 @@ public class MetadataServiceImpl implements IMetadataService {
returnReslult
.
setCount
(
0
);
getToNodeBySystemName
(
metadataName
,
session
,
returnReslult
,
longMetaDataMap
,
metaModelMap
,
edgeMap
,
layer
);
for
(
Object
obj
:
longMetaDataMap
.
keySet
()){
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
node
=
longMetaDataMap
.
get
(
obj
);
Return
Node
node
=
longMetaDataMap
.
get
(
obj
);
returnReslult
.
getNodes
().
add
(
node
);
}
for
(
Object
obj
:
edgeMap
.
keySet
()){
Edge
edge
=
edgeMap
.
get
(
obj
);
Return
Edge
edge
=
edgeMap
.
get
(
obj
);
returnReslult
.
getEdges
().
add
(
edge
);
}
returnReslult
.
setMetaModelMap
(
metaModelMap
);
return
returnReslult
;
}
@Override
public
ReturnReslult
searchGraph
(
String
metadataId
,
int
layer
)
{
logger
.
info
(
"开始获取图形。。。"
);
...
...
@@ -760,7 +777,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnReslult
.
getNodes
().
add
(
returnNode
);
...
...
@@ -783,7 +800,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
returnNode
.
getId
().
equals
(
metadataId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
returnNode
.
getId
()+
"_"
+
childId
);
edge
.
setFromId
(
returnNode
.
getId
());
edge
.
setToId
(
childId
);
...
...
@@ -814,7 +831,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnReslult
.
getNodes
().
add
(
returnNode
);
...
...
@@ -837,7 +854,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
returnNode
.
getId
().
equals
(
metadataId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
metadataId
+
"_"
+
returnNode
.
getId
());
edge
.
setFromId
(
metadataId
);
edge
.
setToId
(
returnNode
.
getId
());
...
...
@@ -875,7 +892,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnReslult
.
getNodes
().
add
(
returnNode
);
...
...
@@ -898,7 +915,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
returnNode
.
getId
().
equals
(
metadataId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
returnNode
.
getId
()+
"_"
+
childId
);
edge
.
setFromId
(
returnNode
.
getId
());
edge
.
setToId
(
childId
);
...
...
@@ -916,7 +933,7 @@ public class MetadataServiceImpl implements IMetadataService {
logger
.
info
(
"cypher:"
+
cypher
);
Map
<
Long
,
MetaData
>
longMetaDataMap
=
new
HashMap
<>();
Map
<
String
,
Edge
>
edgeMap
=
new
HashMap
<>();
Map
<
String
,
Return
Edge
>
edgeMap
=
new
HashMap
<>();
//先获取纵向节点,
StatementResult
result
=
session
.
run
(
cypher
);
...
...
@@ -937,7 +954,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
...
...
@@ -967,7 +984,7 @@ public class MetadataServiceImpl implements IMetadataService {
long
endLong
=
relationship
.
endNodeId
();
if
(
longMetaDataMap
.
containsKey
(
startLong
)&&
longMetaDataMap
.
containsKey
(
endLong
)){
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
String
edgeId
=
startLong
+
"_"
+
endLong
;
if
(
edgeMap
.
containsKey
(
edgeId
)){
continue
;
...
...
@@ -983,7 +1000,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
for
(
Object
obj
:
edgeMap
.
keySet
()){
Edge
edge
=
edgeMap
.
get
(
obj
);
Return
Edge
edge
=
edgeMap
.
get
(
obj
);
returnReslult
.
getEdges
().
add
(
edge
);
}
...
...
@@ -1052,7 +1069,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnReslult
.
getNodes
().
add
(
returnNode
);
...
...
@@ -1066,7 +1083,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
returnNode
.
getId
().
equals
(
metadataId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
metadataId
+
"_"
+
returnNode
.
getId
());
edge
.
setFromId
(
metadataId
);
edge
.
setToId
(
returnNode
.
getId
());
...
...
@@ -1122,7 +1139,7 @@ public class MetadataServiceImpl implements IMetadataService {
MetaData
metaData
=
new
MetaData
();
Neo4jTool
.
transMap2Bean
(
stringObjectMap
,
metaData
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
returnReslult
.
getNodes
().
add
(
returnNode
);
...
...
@@ -1137,7 +1154,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
returnNode
.
getId
().
equals
(
metadataId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
returnNode
.
getId
()+
"_"
+
metadataId
);
edge
.
setFromId
(
returnNode
.
getId
());
...
...
@@ -1223,12 +1240,155 @@ public class MetadataServiceImpl implements IMetadataService {
return
null
;
}
@Override
public
void
syschroMetadataFromMongo
(
String
catalogName
,
List
<
MongoData
>
systemDataList
)
{
List
<
String
>
layer
=
new
ArrayList
<>();
layer
.
add
(
"贴源数据层"
);
layer
.
add
(
"基础数据层"
);
layer
.
add
(
"整合数据层"
);
layer
.
add
(
"统计数据层"
);
layer
.
add
(
"分析数据层"
);
layer
.
add
(
"集市数据层"
);
layer
.
add
(
"应用数据层"
);
String
collectionName
=
"Metadata_"
+
catalogName
;
Random
r
=
new
Random
(
1
);
List
<
MongoData
>
catalogDataList
=
mongoDbServiceImpl
.
findDatabaseByparentId
(
"root"
,
collectionName
);
Map
<
String
,
Neo4jSystem
>
systemDataMap
=
new
HashMap
<>();
for
(
MongoData
systemData:
systemDataList
){
Neo4jSystem
neo4jSystem
=
new
Neo4jSystem
();
String
systemId
=
"System="
+
systemData
.
get_id
();
neo4jSystem
.
setMetadataId
(
systemId
);
neo4jSystem
.
setName
(
systemData
.
getName
());
neo4jSystem
.
setCnName
(
systemData
.
getCnName
());
//如果存在,就不用创建
List
<
Neo4jSystem
>
neo4jSchemaList
=
neo4jSystemRepository
.
findNeo4jSystemByMetadataId
(
systemId
);
if
(
neo4jSchemaList
==
null
||
neo4jSchemaList
.
size
()==
0
){
neo4jSystemRepository
.
save
(
neo4jSystem
);
}
systemDataMap
.
put
(
systemData
.
get_id
(),
neo4jSystem
);
}
for
(
MongoData
catalogData:
catalogDataList
){
List
<
MongoData
>
dataBaseDataList
=
mongoDbServiceImpl
.
findDataByparentId
(
catalogData
.
get_id
(),
collectionName
);
for
(
MongoData
dataBaseData:
dataBaseDataList
){
List
<
MongoData
>
schemaDataList
=
mongoDbServiceImpl
.
findDataByparentId
(
dataBaseData
.
get_id
(),
collectionName
);
for
(
MongoData
schemaData:
schemaDataList
){
//系统与schema的关系
Neo4jSchema
neo4jSchema
=
new
Neo4jSchema
();
neo4jSchema
.
setMetadataId
(
schemaData
.
get_id
());
neo4jSchema
.
setName
(
schemaData
.
getName
());
neo4jSchema
.
setCnName
(
schemaData
.
getCnName
());
//如果存在,就不用创建
int
ran1
=
r
.
nextInt
(
6
);
if
(
ran1
>
6
){
ran1
=
6
;
}
if
(
neo4jSchema
.
getLabel
()==
null
||
neo4jSchema
.
getLabel
().
equals
(
""
)){
String
label
=
layer
.
get
(
ran1
);
neo4jSchema
.
setLabel
(
label
);
}
List
<
Neo4jSchema
>
neo4jSchemaList
=
neo4jSchemaRepository
.
findNeo4jSchemaByMetadataId
(
neo4jSchema
.
getMetadataId
());
if
(
neo4jSchemaList
==
null
||
neo4jSchemaList
.
size
()==
0
){
neo4jSchemaRepository
.
save
(
neo4jSchema
);
}
Neo4jSystem
neo4jSystem
=
null
;
List
<
String
>
systemIdList
=
dataBaseData
.
getSysList
();
for
(
String
systemId:
systemIdList
){
if
(
systemDataMap
.
containsKey
(
systemId
)){
neo4jSystem
=
systemDataMap
.
get
(
systemId
);
}
}
relationshipService
.
saveRelation
(
neo4jSystem
.
getMetadataId
(),
neo4jSchema
.
getMetadataId
(),
"Composition"
);
//根据schema获取表级数据,再按照类型分类:表,视图,作业,函数等
List
<
MongoData
>
tableClassDataList
=
mongoDbServiceImpl
.
findDataByparentId
(
schemaData
.
get_id
(),
collectionName
);
int
count
=
0
;
//获取前100个表测试
for
(
MongoData
tableClassData:
tableClassDataList
){
if
(
count
>
20
){
// break;
}
count
++;
String
metadataId
=
tableClassData
.
get_id
();
String
endId
=
tableClassData
.
get_id
();
if
(
metadataId
.
startsWith
(
"Table="
)){
Neo4jTable
neo4jTable
=
new
Neo4jTable
();
neo4jTable
.
setMetadataId
(
tableClassData
.
get_id
());
neo4jTable
.
setName
(
tableClassData
.
getName
());
neo4jTable
.
setCnName
(
tableClassData
.
getCnName
());
List
<
Neo4jTable
>
neo4jTableList
=
neo4jTableRepository
.
findNeo4jTableByMetadataId
(
metadataId
);
if
(
neo4jTableList
==
null
||
neo4jTableList
.
size
()==
0
){
neo4jTableRepository
.
save
(
neo4jTable
);
}
}
else
if
(
metadataId
.
startsWith
(
"View="
)){
Neo4jView
neo4jView
=
new
Neo4jView
();
neo4jView
.
setMetadataId
(
tableClassData
.
get_id
());
neo4jView
.
setName
(
tableClassData
.
getName
());
neo4jView
.
setCnName
(
tableClassData
.
getCnName
());
List
<
Neo4jView
>
neo4jTableList
=
neo4jViewRepository
.
findNeo4jViewByMetadataId
(
metadataId
);
if
(
neo4jTableList
==
null
||
neo4jTableList
.
size
()==
0
){
neo4jViewRepository
.
save
(
neo4jView
);
}
}
else
if
(
metadataId
.
startsWith
(
"Function="
)){
Neo4jFunction
neo4jFunction
=
new
Neo4jFunction
();
neo4jFunction
.
setMetadataId
(
tableClassData
.
get_id
());
neo4jFunction
.
setName
(
tableClassData
.
getName
());
neo4jFunction
.
setCnName
(
tableClassData
.
getCnName
());
List
<
Neo4jFunction
>
neo4jFunctionList
=
neo4jFunctionRepository
.
findNeo4jFunctionByMetadataId
(
metadataId
);
if
(
neo4jFunctionList
==
null
||
neo4jFunctionList
.
size
()==
0
){
neo4jFunctionRepository
.
save
(
neo4jFunction
);
}
}
else
if
(
metadataId
.
startsWith
(
"Procedure="
)){
Neo4jProcedure
neo4jProcedure
=
new
Neo4jProcedure
();
neo4jProcedure
.
setMetadataId
(
tableClassData
.
get_id
());
neo4jProcedure
.
setName
(
tableClassData
.
getName
());
neo4jProcedure
.
setCnName
(
tableClassData
.
getCnName
());
List
<
Neo4jProcedure
>
neo4jProcedureList
=
neo4jProcedureRepository
.
findNeo4jProcedureByMetadataId
(
metadataId
);
if
(
neo4jProcedureList
==
null
||
neo4jProcedureList
.
size
()==
0
){
neo4jProcedureRepository
.
save
(
neo4jProcedure
);
}
}
else
{
}
relationshipService
.
saveRelation
(
neo4jSchema
.
getMetadataId
(),
endId
,
"Composition"
);
}
}
}
}
}
@Override
public
void
syschroRelationFromMongo
(
String
catalogName
)
{
//先从mongo读取关系,写入neo4j
Map
<
String
,
MetaData
>
metaDataMap
=
new
HashMap
<>();
logger
.
info
(
"开始从mongo获取数据。"
);
List
<
RelationMongo
>
relationMongoList
=
mongoDbServiceImpl
.
findAll
(
catalogName
);
List
<
RelationMongo
>
relationMongoList
=
mongoDbServiceImpl
.
findAll
RelationByCatalog
(
catalogName
);
logger
.
info
(
"mongo获取数据完成。"
);
for
(
RelationMongo
relationMongo
:
relationMongoList
)
{
// 获取元数据属性
...
...
@@ -1403,7 +1563,6 @@ public class MetadataServiceImpl implements IMetadataService {
}
}
}
}
...
...
@@ -1412,9 +1571,7 @@ public class MetadataServiceImpl implements IMetadataService {
if
(
relationship
==
null
||
relationship
.
size
()
==
0
)
{
inputRelationReRepository
.
addInputRelation
(
sourceId
,
targetId
);
}
}
else
if
(
"output"
.
equalsIgnoreCase
(
type
))
{
List
<
OutputRelation
>
relationship
=
outputRelationRepository
.
findOutputRelationship
(
sourceId
,
targetId
);
if
(
relationship
==
null
||
relationship
.
size
()
==
0
)
{
outputRelationRepository
.
addOutRelation
(
sourceId
,
targetId
);
...
...
@@ -1691,7 +1848,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
class
neo4jRelaionTask
implements
Callable
<
List
<
Edge
>>{
class
neo4jRelaionTask
implements
Callable
<
List
<
Return
Edge
>>{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
neo4jRelaionTask
.
class
);
private
String
metadataId
;
...
...
@@ -1707,10 +1864,10 @@ class neo4jRelaionTask implements Callable<List<Edge>>{
this
.
modelName
=
modelname
;
this
.
session
=
session
;
}
List
<
Edge
>
edgeList
=
new
ArrayList
<>();
List
<
Return
Edge
>
edgeList
=
new
ArrayList
<>();
@Override
public
List
<
Edge
>
call
()
throws
Exception
{
public
List
<
Return
Edge
>
call
()
throws
Exception
{
long
count
=
System
.
currentTimeMillis
();
String
impactCypher
=
""
;
...
...
@@ -1746,7 +1903,7 @@ class neo4jRelaionTask implements Callable<List<Edge>>{
String
id
=
value
.
asString
(
"metadataId"
);
System
.
out
.
println
(
metadataId
+
"-->>"
+
id
);
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
// edge.setEdgeId();
edge
.
setFromId
(
metadataId
);
edge
.
setToId
(
id
);
...
...
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/MongoDbServiceImpl.java
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
.
impl
;
import
com.keymobile.metadata.metadataRelation.pojo.RelationMongo
;
import
com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData
;
import
org.bson.Document
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -9,6 +10,7 @@ import org.springframework.data.domain.Pageable;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -22,12 +24,14 @@ public class MongoDbServiceImpl {
private
MongoTemplate
mongoTemplate
;
/**
* 查询所有
*
* @return
*/
public
List
<
RelationMongo
>
findAll
(
String
catalogName
)
{
public
List
<
RelationMongo
>
findAll
RelationByCatalog
(
String
catalogName
)
{
logger
.
info
(
"--------------------->[MongoDB find start]"
);
try
{
return
mongoTemplate
.
findAll
(
RelationMongo
.
class
,
"md_relation_"
+
catalogName
);
...
...
@@ -39,6 +43,50 @@ public class MongoDbServiceImpl {
}
/**
* 获取领域,获取系统,获取数据库
* */
/**
* 查询所有数据库
*
* @return
*/
public
List
<
MongoData
>
findDatabaseByparentId
(
String
catalogName
,
String
collectionName
)
{
logger
.
info
(
"开始从mongo获取元数据:"
+
catalogName
);
try
{
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"parentId"
).
is
(
catalogName
));
List
<
MongoData
>
mongoDataList
=
mongoTemplate
.
find
(
query
,
MongoData
.
class
,
collectionName
);
return
mongoDataList
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 查询所有数据库
*
* @return
*/
public
List
<
MongoData
>
findDataByparentId
(
String
parentId
,
String
collectionName
)
{
logger
.
info
(
"开始从mongo获取元数据:"
+
parentId
);
try
{
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"parentId"
).
is
(
parentId
));
List
<
MongoData
>
mongoDataList
=
mongoTemplate
.
find
(
query
,
MongoData
.
class
,
collectionName
);
return
mongoDataList
;
// mongoTemplate.findAll(MongoData.class, "md_relation_" + catalogName);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 查询所有
*
* @return
...
...
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/MultiModelServiceImpl.java
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
.
impl
;
import
com.keymobile.metadata.metadataRelation.config.Neo4jConfig
;
import
com.keymobile.metadata.metadataRelation.pojo.*
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.Edge
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.
Return
Edge
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult
;
import
com.keymobile.metadata.metadataRelation.respository.*
;
import
com.keymobile.metadata.metadataRelation.service.MultiModelService
;
import
com.keymobile.metadata.metadataRelation.util.Neo4jTool
;
import
org.hibernate.boot.Metadata
;
import
org.neo4j.driver.v1.*
;
import
org.neo4j.driver.v1.types.Node
;
import
org.neo4j.driver.v1.types.Path
;
import
org.neo4j.driver.v1.types.Relationship
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.system.ApplicationHome
;
import
org.springframework.stereotype.Service
;
import
sun.misc.BASE64Encoder
;
import
sun.rmi.runtime.Log
;
import
javax.persistence.Table
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
...
...
@@ -257,7 +249,7 @@ public class MultiModelServiceImpl implements MultiModelService {
if
(!
returnMetadata
.
contains
(
toId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
fromId
+
"_"
+
toId
);
MetaData
startNode
=
metaDataMapLong
.
get
(
fromId
);
...
...
@@ -280,7 +272,7 @@ public class MultiModelServiceImpl implements MultiModelService {
if
(!
returnMetadata
.
contains
(
toId
)){
continue
;
}
Edge
edge
=
new
Edge
();
ReturnEdge
edge
=
new
Return
Edge
();
edge
.
setEdgeId
(
fromId
+
"_"
+
toId
);
MetaData
startNode
=
metaDataMapLong
.
get
(
fromId
);
...
...
@@ -297,7 +289,7 @@ public class MultiModelServiceImpl implements MultiModelService {
for
(
Long
returnMeta:
returnMetadata
){
MetaData
metaData
=
metaDataMapLong
.
get
(
returnMeta
);
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
returnNode
=
new
com
.
keymobile
.
metadata
.
metadataRelation
.
pojo
.
returnBean
.
Node
();
ReturnNode
returnNode
=
new
Return
Node
();
returnNode
.
setId
(
metaData
.
getMetadataId
());
returnNode
.
setName
(
metaData
.
getName
());
...
...
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/SchemaServiceImpl.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
.
impl
;
import
com.keymobile.metadata.metadataRelation.pojo.BaseNode
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSchemaRepository
;
import
com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository
;
import
com.keymobile.metadata.metadataRelation.service.ISchemaService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
public
class
SchemaServiceImpl
implements
ISchemaService
{
@Autowired
private
Neo4jSchemaRepository
neo4jSchemaRepository
;
@Override
public
Map
<
String
,
String
>
getSchemaBySystem
(
String
systemId
)
{
return
null
;
}
@Override
public
Map
<
String
,
List
<
ReturnNode
>>
getTablesBySchemaId
(
String
schemaId
)
{
Map
<
String
,
List
<
ReturnNode
>>
schemaMap
=
new
HashMap
<>();
List
<
BaseNode
>
baseNodeList
=
neo4jSchemaRepository
.
getTableBySchemaId
(
schemaId
);
for
(
BaseNode
baseNode:
baseNodeList
){
ReturnNode
returnNode
=
new
ReturnNode
();
returnNode
.
setId
(
baseNode
.
getMetadataId
());
returnNode
.
setName
(
baseNode
.
getName
());
if
(
baseNode
.
getMetadataId
().
startsWith
(
"Table="
)){
returnNode
.
setType
(
"表"
);
if
(
schemaMap
.
containsKey
(
"表"
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
"表"
);
returnNodeList
.
add
(
returnNode
);
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
"表"
,
returnNodeList
);
}
}
else
if
(
baseNode
.
getMetadataId
().
startsWith
(
"View="
)){
returnNode
.
setType
(
"视图"
);
if
(
schemaMap
.
containsKey
(
"视图"
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
"视图"
);
returnNodeList
.
add
(
returnNode
);
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
"视图"
,
returnNodeList
);
}
}
else
if
(
baseNode
.
getMetadataId
().
startsWith
(
"Function="
)){
returnNode
.
setType
(
"函数"
);
if
(
schemaMap
.
containsKey
(
"函数"
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
"函数"
);
returnNodeList
.
add
(
returnNode
);
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
"函数"
,
returnNodeList
);
}
}
else
if
(
baseNode
.
getMetadataId
().
startsWith
(
"Procedure="
)){
returnNode
.
setType
(
"存储过程"
);
if
(
schemaMap
.
containsKey
(
"存储过程"
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
"存储过程"
);
returnNodeList
.
add
(
returnNode
);
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
"存储过程"
,
returnNodeList
);
}
}
else
{
returnNode
.
setType
(
"其他类型"
);
if
(
schemaMap
.
containsKey
(
"其他类型"
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
"其他类型"
);
returnNodeList
.
add
(
returnNode
);
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
"其他类型"
,
returnNodeList
);
}
}
}
return
schemaMap
;
}
}
src/main/java/com/keymobile/metadata/metadataRelation/service/impl/SystemServiceImpl.java
0 → 100644
View file @
0c5f98b1
package
com
.
keymobile
.
metadata
.
metadataRelation
.
service
.
impl
;
import
com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema
;
import
com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode
;
import
com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository
;
import
com.keymobile.metadata.metadataRelation.service.ISystemService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
public
class
SystemServiceImpl
implements
ISystemService
{
@Autowired
private
Neo4jSystemRepository
neo4jSystemRepository
;
@Override
public
Map
<
String
,
List
<
ReturnNode
>>
getSchemaBySystemId
(
String
systemId
)
{
Map
<
String
,
List
<
ReturnNode
>>
schemaMap
=
new
HashMap
<>();
List
<
Neo4jSchema
>
neo4jSchemaList
=
neo4jSystemRepository
.
getSchemaBySystemId
(
systemId
);
for
(
Neo4jSchema
neo4jSchema:
neo4jSchemaList
){
ReturnNode
returnNode
=
new
ReturnNode
();
returnNode
.
setId
(
neo4jSchema
.
getMetadataId
());
returnNode
.
setName
(
neo4jSchema
.
getName
());
returnNode
.
setType
(
"Schema"
);
String
label
=
neo4jSchema
.
getLabel
();
if
(
label
==
null
||
label
.
equals
(
""
)){
label
=
"未分层"
;
}
if
(
schemaMap
.
containsKey
(
label
)){
List
<
ReturnNode
>
returnNodeList
=
schemaMap
.
get
(
label
);
if
(!
returnNodeList
.
contains
(
returnNode
)){
returnNodeList
.
add
(
returnNode
);
}
}
else
{
List
<
ReturnNode
>
returnNodeList
=
new
ArrayList
<>();
returnNodeList
.
add
(
returnNode
);
schemaMap
.
put
(
label
,
returnNodeList
);
}
}
return
schemaMap
;
}
}
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