Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
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
黄营
datax-cloud
Commits
d54a9076
Commit
d54a9076
authored
Jul 29, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目初始化
parent
b07012f4
Hide whitespace changes
Inline
Side-by-side
Showing
49 changed files
with
1875 additions
and
10 deletions
+1875
-10
datax-gateway-dev.yml
datax-config/src/main/resources/config/datax-gateway-dev.yml
+12
-0
datax-service-data-metadata-dev.yml
...main/resources/config/datax-service-data-metadata-dev.yml
+86
-0
DataSourceEntity.java
...tax/service/data/factory/api/entity/DataSourceEntity.java
+5
-0
DataSourceServiceFeign.java
...ervice/data/factory/api/feign/DataSourceServiceFeign.java
+4
-0
DataSourceVo.java
...va/cn/datax/service/data/factory/api/vo/DataSourceVo.java
+1
-0
InnerController.java
...atax/service/data/factory/controller/InnerController.java
+6
-4
DataSourceService.java
...datax/service/data/factory/service/DataSourceService.java
+2
-0
DataSourceServiceImpl.java
...vice/data/factory/service/impl/DataSourceServiceImpl.java
+9
-0
DataSourceMapper.xml
...ry-service/src/main/resources/mapper/DataSourceMapper.xml
+2
-1
pom.xml
...metadata-service-parent/data-metadata-service-api/pom.xml
+46
-0
DataMetadataColumnDto.java
.../service/data/metadata/api/dto/DataMetadataColumnDto.java
+52
-0
DataMetadataTableDto.java
...x/service/data/metadata/api/dto/DataMetadataTableDto.java
+32
-0
DataMetadataColumnEntity.java
...ce/data/metadata/api/entity/DataMetadataColumnEntity.java
+84
-0
DataMetadataTableEntity.java
...ice/data/metadata/api/entity/DataMetadataTableEntity.java
+34
-0
DataMetadataColumnQuery.java
...vice/data/metadata/api/query/DataMetadataColumnQuery.java
+26
-0
DataMetadataTableQuery.java
...rvice/data/metadata/api/query/DataMetadataTableQuery.java
+24
-0
DataMetadataColumnVo.java
...ax/service/data/metadata/api/vo/DataMetadataColumnVo.java
+38
-0
DataMetadataTableVo.java
...tax/service/data/metadata/api/vo/DataMetadataTableVo.java
+28
-0
spring.factories
...-service-api/src/main/resources/META-INF/spring.factories
+1
-0
pom.xml
...ata-metadata-service-parent/data-metadata-service/pom.xml
+93
-0
DataxMetadataApplication.java
...datax/service/data/metadata/DataxMetadataApplication.java
+14
-0
AsyncConfig.java
...va/cn/datax/service/data/metadata/config/AsyncConfig.java
+30
-0
DataResourceServerConfig.java
...ervice/data/metadata/config/DataResourceServerConfig.java
+67
-0
StartedUpRunner.java
...n/datax/service/data/metadata/config/StartedUpRunner.java
+31
-0
SwaggerConfig.java
.../cn/datax/service/data/metadata/config/SwaggerConfig.java
+112
-0
SwaggerProperties.java
...datax/service/data/metadata/config/SwaggerProperties.java
+92
-0
DataMetadataColumnController.java
...ata/metadata/controller/DataMetadataColumnController.java
+150
-0
DataMetadataController.java
...vice/data/metadata/controller/DataMetadataController.java
+27
-0
DataMetadataTableController.java
...data/metadata/controller/DataMetadataTableController.java
+148
-0
InnerController.java
...tax/service/data/metadata/controller/InnerController.java
+11
-0
DataMetadataColumnDao.java
...atax/service/data/metadata/dao/DataMetadataColumnDao.java
+18
-0
DataMetadataTableDao.java
...datax/service/data/metadata/dao/DataMetadataTableDao.java
+18
-0
DataMetadataColumnMapper.java
...ice/data/metadata/mapstruct/DataMetadataColumnMapper.java
+20
-0
DataMetadataTableMapper.java
...vice/data/metadata/mapstruct/DataMetadataTableMapper.java
+20
-0
DataMetadataColumnService.java
...vice/data/metadata/service/DataMetadataColumnService.java
+28
-0
DataMetadataService.java
...ax/service/data/metadata/service/DataMetadataService.java
+6
-0
DataMetadataTableService.java
...rvice/data/metadata/service/DataMetadataTableService.java
+28
-0
DataMetadataColumnServiceImpl.java
.../metadata/service/impl/DataMetadataColumnServiceImpl.java
+67
-0
DataMetadataServiceImpl.java
...e/data/metadata/service/impl/DataMetadataServiceImpl.java
+101
-0
DataMetadataTableServiceImpl.java
...a/metadata/service/impl/DataMetadataTableServiceImpl.java
+67
-0
bootstrap.yml
...nt/data-metadata-service/src/main/resources/bootstrap.yml
+29
-0
logback-spring.xml
...ta-metadata-service/src/main/resources/logback-spring.xml
+79
-0
DataMetadataColumnMapper.xml
...ce/src/main/resources/mapper/DataMetadataColumnMapper.xml
+40
-0
DataMetadataTableMapper.xml
...ice/src/main/resources/mapper/DataMetadataTableMapper.xml
+30
-0
spy.properties
...t/data-metadata-service/src/main/resources/spy.properties
+26
-0
pom.xml
datax-modules/data-metadata-service-parent/pom.xml
+21
-0
pom.xml
datax-modules/pom.xml
+2
-0
AsyncTask.java
...rc/main/java/cn/datax/service/system/async/AsyncTask.java
+1
-1
AsyncConfig.java
...main/java/cn/datax/service/system/config/AsyncConfig.java
+7
-4
No files found.
datax-config/src/main/resources/config/datax-gateway-dev.yml
View file @
d54a9076
...
...
@@ -108,6 +108,18 @@ spring:
args
:
name
:
dataApiMappingHystrix
fallbackUri
:
forward:/fallback
# 元数据管理
-
id
:
datax-service-data-metadata
uri
:
lb://datax-service-data-metadata
predicates
:
-
Path=/data/metadata/**
filters
:
-
SwaggerHeaderFilter
-
StripPrefix=2
-
name
:
Hystrix
args
:
name
:
dataMetadataHystrix
fallbackUri
:
forward:/fallback
# 定时任务
-
id
:
datax-service-quartz
uri
:
lb://datax-service-quartz
...
...
datax-config/src/main/resources/config/datax-service-data-metadata-dev.yml
0 → 100644
View file @
d54a9076
# 数据源配置
spring
:
redis
:
database
:
1
host
:
localhost
port
:
6379
password
:
1234@abcd
# 密码(默认为空)
timeout
:
6000ms
# 连接超时时长(毫秒)
lettuce
:
pool
:
max-active
:
1000
# 连接池最大连接数(使用负值表示没有限制)
max-wait
:
-1ms
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle
:
10
# 连接池中的最大空闲连接
min-idle
:
5
# 连接池中的最小空闲连接
datasource
:
dynamic
:
type
:
com.zaxxer.hikari.HikariDataSource
hikari
:
auto-commit
:
false
connection-timeout
:
30000
idle-timeout
:
25000
login-timeout
:
5
max-lifetime
:
30000
read-only
:
false
validation-timeout
:
3000
maximum-pool-size
:
15
minimum-idle
:
5
pool-name
:
DataxHikariCP
connection-test-query
:
SELECT 1 FROM DUAL
data-source-properties
:
cachePrepStmts
:
true
prepStmtCacheSize
:
250
prepStmtCacheSqlLimit
:
2048
useServerPrepStmts
:
true
useLocalSessionState
:
true
rewriteBatchedStatements
:
true
cacheResultSetMetadata
:
true
cacheServerConfiguration
:
true
elideSetAutoCommits
:
true
maintainTimeStats
:
false
primary
:
mysql
datasource
:
mysql
:
driver-class-name
:
com.p6spy.engine.spy.P6SpyDriver
url
:
jdbc:p6spy:mysql://localhost:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
root
password
:
1234@abcd
mybatis-plus
:
mapper-locations
:
classpath*:mapper/*Mapper.xml
type-aliases-package
:
cn.datax.service.data.metadata.api.entity
global-config
:
db-config
:
id-type
:
ASSIGN_ID
banner
:
false
configuration
:
map-underscore-to-camel-case
:
true
cache-enabled
:
false
call-setters-on-nulls
:
true
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
# spring security 配置
security
:
oauth2
:
client
:
access-token-uri
:
http://localhost:8612/auth/oauth/token
user-authorization-uri
:
http://localhost:8612/auth/oauth/authorize
client-id
:
datax
client-secret
:
123456
scope
:
all
resource
:
loadBalanced
:
true
token-info-uri
:
http://localhost:8612/auth/oauth/check_token
# Swagger界面内容配置
swagger
:
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
basePackage
:
cn.datax.service.data.metadata.controller
termsOfServiceUrl
:
http://www.baidu.com
contact
:
name
:
yuwei
url
:
http://www.baidu.com
email
:
312075478@qq.com
\ No newline at end of file
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/entity/DataSourceEntity.java
View file @
d54a9076
...
...
@@ -45,4 +45,9 @@ public class DataSourceEntity extends DataScopeBaseEntity {
*/
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
private
DbSchema
dbSchema
;
/**
* 元数据同步1是0否
*/
private
Integer
sourceSync
;
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/feign/DataSourceServiceFeign.java
View file @
d54a9076
...
...
@@ -5,10 +5,14 @@ import cn.datax.service.data.factory.api.feign.factory.DataSourceServiceFeignFal
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PutMapping
;
@FeignClient
(
contextId
=
"dataSourceServiceFeign"
,
value
=
"datax-service-data-factory"
,
fallbackFactory
=
DataSourceServiceFeignFallbackFactory
.
class
)
public
interface
DataSourceServiceFeign
{
@GetMapping
(
"/inner/sources/{id}"
)
DataSourceEntity
getDataSourceById
(
@PathVariable
(
"id"
)
String
id
);
@PutMapping
(
"/inner/sources/sync/{id}"
)
void
updateDataSourceSyncById
(
@PathVariable
(
"id"
)
String
id
);
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/vo/DataSourceVo.java
View file @
d54a9076
...
...
@@ -29,4 +29,5 @@ public class DataSourceVo implements Serializable {
private
String
sourceName
;
private
String
themeId
;
private
DbSchema
dbSchema
;
private
Integer
sync
;
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/controller/InnerController.java
View file @
d54a9076
...
...
@@ -6,10 +6,7 @@ import cn.datax.service.data.factory.api.entity.DataSourceEntity;
import
cn.datax.service.data.factory.service.DataSetService
;
import
cn.datax.service.data.factory.service.DataSourceService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
"/inner"
)
...
...
@@ -27,6 +24,11 @@ public class InnerController extends BaseController {
return
dataSourceEntity
;
}
@PutMapping
(
"/sources/sync/{id}"
)
public
void
updateDataSourceSyncById
(
@PathVariable
(
"id"
)
String
id
)
{
dataSourceService
.
updateDataSourceSyncById
(
id
);
}
@GetMapping
(
"/sets/{id}"
)
public
DataSetEntity
getDataSetById
(
@PathVariable
(
"id"
)
String
id
)
{
DataSetEntity
dataSetEntity
=
dataSetService
.
getDataSetById
(
id
);
...
...
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/service/DataSourceService.java
View file @
d54a9076
...
...
@@ -36,4 +36,6 @@ public interface DataSourceService extends BaseService<DataSourceEntity> {
List
<
DbTable
>
getDbTables
(
String
id
);
List
<
DbColumn
>
getDbTableColumns
(
String
id
,
String
tableName
);
void
updateDataSourceSyncById
(
String
id
);
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/service/impl/DataSourceServiceImpl.java
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
factory
.
service
.
impl
;
import
cn.datax.common.core.DataConstant
;
import
cn.datax.common.database.DataSourceFactory
;
import
cn.datax.common.database.DbQuery
;
import
cn.datax.common.database.constants.DbQueryProperty
;
...
...
@@ -113,4 +114,12 @@ public class DataSourceServiceImpl extends BaseServiceImpl<DataSourceDao, DataSo
List
<
DbColumn
>
columns
=
dbQuery
.
getTableColumns
(
dbSchema
.
getDbName
(),
tableName
);
return
columns
;
}
@Override
public
void
updateDataSourceSyncById
(
String
id
)
{
DataSourceEntity
dataSource
=
new
DataSourceEntity
();
dataSource
.
setId
(
id
);
dataSource
.
setSourceSync
(
Integer
.
valueOf
(
DataConstant
.
TrueOrFalse
.
TRUE
.
getKey
()));
dataSourceDao
.
updateById
(
dataSource
);
}
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/resources/mapper/DataSourceMapper.xml
View file @
d54a9076
...
...
@@ -15,6 +15,7 @@
<result
column=
"db_type"
property=
"dbType"
/>
<result
column=
"source_name"
property=
"sourceName"
/>
<result
column=
"theme_id"
property=
"themeId"
/>
<result
column=
"source_sync"
property=
"sourceSync"
/>
<result
column=
"db_schema"
property=
"dbSchema"
typeHandler=
"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
/>
</resultMap>
...
...
@@ -28,7 +29,7 @@
update_by,
update_time,
remark,
db_type, source_name, theme_id, db_schema
db_type, source_name, theme_id,
source_sync,
db_schema
</sql>
</mapper>
datax-modules/data-metadata-service-parent/data-metadata-service-api/pom.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
data-metadata-service-parent
</artifactId>
<groupId>
cn.datax
</groupId>
<version>
2.0.0
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<version>
2.0.0
</version>
<artifactId>
data-metadata-service-api
</artifactId>
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
<artifactId>
feign-okhttp
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-core
</artifactId>
<version>
2.0.0
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/dto/DataMetadataColumnDto.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
dto
;
import
cn.datax.common.validate.ValidationGroups
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* <p>
* 元数据信息表 实体DTO
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@ApiModel
(
value
=
"元数据信息表Model"
)
@Data
public
class
DataMetadataColumnDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键ID"
)
@NotBlank
(
message
=
"主键ID不能为空"
,
groups
=
{
ValidationGroups
.
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
value
=
"所属数据源"
)
private
String
sourceId
;
@ApiModelProperty
(
value
=
"所属数据表"
)
private
String
tableId
;
@ApiModelProperty
(
value
=
"字段名称"
)
private
String
columnName
;
@ApiModelProperty
(
value
=
"字段注释"
)
private
String
columnComment
;
@ApiModelProperty
(
value
=
"字段是否主键(1是0否)"
)
private
String
columnKey
;
@ApiModelProperty
(
value
=
"字段是否允许为空(1是0否)"
)
private
String
columnNullable
;
@ApiModelProperty
(
value
=
"字段序号"
)
private
String
columnPosition
;
@ApiModelProperty
(
value
=
"数据类型"
)
private
String
dataType
;
@ApiModelProperty
(
value
=
"数据长度"
)
private
String
dataLength
;
@ApiModelProperty
(
value
=
"数据精度"
)
private
String
dataPrecision
;
@ApiModelProperty
(
value
=
"数据小数位"
)
private
String
dataScale
;
@ApiModelProperty
(
value
=
"数据默认值"
)
private
String
dataDefault
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/dto/DataMetadataTableDto.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
dto
;
import
cn.datax.common.validate.ValidationGroups
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* <p>
* 数据库表信息表 实体DTO
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@ApiModel
(
value
=
"数据库表信息表Model"
)
@Data
public
class
DataMetadataTableDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键ID"
)
@NotBlank
(
message
=
"主键ID不能为空"
,
groups
=
{
ValidationGroups
.
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
value
=
"所属数据源"
)
private
String
sourceId
;
@ApiModelProperty
(
value
=
"表名"
)
private
String
tableName
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/entity/DataMetadataColumnEntity.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
cn.datax.common.base.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 元数据信息表
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"data_metadata_column"
)
public
class
DataMetadataColumnEntity
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 所属数据源
*/
private
String
sourceId
;
/**
* 所属数据表
*/
private
String
tableId
;
/**
* 字段名称
*/
private
String
columnName
;
/**
* 字段注释
*/
private
String
columnComment
;
/**
* 字段是否主键(1是0否)
*/
private
String
columnKey
;
/**
* 字段是否允许为空(1是0否)
*/
private
String
columnNullable
;
/**
* 字段序号
*/
private
String
columnPosition
;
/**
* 数据类型
*/
private
String
dataType
;
/**
* 数据长度
*/
private
String
dataLength
;
/**
* 数据精度
*/
private
String
dataPrecision
;
/**
* 数据小数位
*/
private
String
dataScale
;
/**
* 数据默认值
*/
private
String
dataDefault
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/entity/DataMetadataTableEntity.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
cn.datax.common.base.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 数据库表信息表
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"data_metadata_table"
)
public
class
DataMetadataTableEntity
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 所属数据源
*/
private
String
sourceId
;
/**
* 表名
*/
private
String
tableName
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/query/DataMetadataColumnQuery.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
query
;
import
cn.datax.common.base.BaseQueryParams
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 元数据信息表 查询实体
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
DataMetadataColumnQuery
extends
BaseQueryParams
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
sourceId
;
private
String
tableId
;
private
String
columnName
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/query/DataMetadataTableQuery.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
query
;
import
cn.datax.common.base.BaseQueryParams
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 数据库表信息表 查询实体
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
DataMetadataTableQuery
extends
BaseQueryParams
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
sourceId
;
private
String
tableName
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/vo/DataMetadataColumnVo.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 元数据信息表 实体VO
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
public
class
DataMetadataColumnVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
Integer
status
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
createTime
;
private
String
sourceId
;
private
String
tableId
;
private
String
columnName
;
private
String
columnComment
;
private
String
columnKey
;
private
String
columnNullable
;
private
String
columnPosition
;
private
String
dataType
;
private
String
dataLength
;
private
String
dataPrecision
;
private
String
dataScale
;
private
String
dataDefault
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/vo/DataMetadataTableVo.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 数据库表信息表 实体VO
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Data
public
class
DataMetadataTableVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
Integer
status
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
createTime
;
private
String
sourceId
;
private
String
tableName
;
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/resources/META-INF/spring.factories
0 → 100644
View file @
d54a9076
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
datax-modules/data-metadata-service-parent/data-metadata-service/pom.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
data-metadata-service-parent
</artifactId>
<groupId>
cn.datax
</groupId>
<version>
2.0.0
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<version>
2.0.0
</version>
<artifactId>
data-metadata-service
</artifactId>
<dependencies>
<!--web 模块-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<exclusions>
<exclusion>
<artifactId>
spring-boot-starter-tomcat
</artifactId>
<groupId>
org.springframework.boot
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-undertow
</artifactId>
</dependency>
<!--配置中心客户端 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-config
</artifactId>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<version>
${mapstruct.version}
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-processor
</artifactId>
<version>
${mapstruct.version}
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-mybatis
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-redis
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-security
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-database
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-log
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
data-metadata-service-api
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
data-factory-service-api
</artifactId>
<version>
2.0.0
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/DataxMetadataApplication.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.cloud.client.SpringCloudApplication
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
@EnableFeignClients
(
basePackages
=
{
"cn.datax.service.system.api.feign"
,
"cn.datax.service.data.factory.api.feign"
})
@SpringCloudApplication
public
class
DataxMetadataApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
DataxMetadataApplication
.
class
);
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/AsyncConfig.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@EnableAsync
@Configuration
public
class
AsyncConfig
{
@Bean
(
"taskExecutor"
)
public
Executor
taskExecutor
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
executor
.
setCorePoolSize
(
5
);
executor
.
setMaxPoolSize
(
20
);
executor
.
setQueueCapacity
(
100
);
executor
.
setKeepAliveSeconds
(
30
);
executor
.
setThreadNamePrefix
(
"datax-async-service-"
);
executor
.
setWaitForTasksToCompleteOnShutdown
(
true
);
executor
.
setAwaitTerminationSeconds
(
60
);
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
executor
.
initialize
();
return
executor
;
}
}
\ No newline at end of file
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/DataResourceServerConfig.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
cn.datax.common.security.handler.DataAccessDeniedHandler
;
import
cn.datax.common.security.handler.DataAuthExceptionEntryPoint
;
import
cn.datax.common.security.utils.DataRedisTokenServices
;
import
cn.datax.common.security.utils.RedisTokenStore
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter
;
import
org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer
;
import
org.springframework.security.oauth2.provider.token.TokenStore
;
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
public
class
DataResourceServerConfig
extends
ResourceServerConfigurerAdapter
{
@Autowired
private
DataAccessDeniedHandler
accessDeniedHandler
;
@Autowired
private
DataAuthExceptionEntryPoint
exceptionEntryPoint
;
@Autowired
private
RedisConnectionFactory
redisConnectionFactory
;
@Bean
public
TokenStore
redisTokenStore
()
{
return
new
RedisTokenStore
(
redisConnectionFactory
);
}
@Override
public
void
configure
(
ResourceServerSecurityConfigurer
resources
)
{
DataRedisTokenServices
dataTokenServices
=
new
DataRedisTokenServices
();
dataTokenServices
.
setTokenStore
(
redisTokenStore
());
resources
.
tokenStore
(
redisTokenStore
())
.
tokenServices
(
dataTokenServices
)
.
authenticationEntryPoint
(
exceptionEntryPoint
)
.
accessDeniedHandler
(
accessDeniedHandler
);
}
@Override
public
void
configure
(
HttpSecurity
http
)
throws
Exception
{
//允许使用iframe 嵌套,避免swagger-ui 不被加载的问题
http
.
headers
().
frameOptions
().
disable
();
http
.
authorizeRequests
()
.
antMatchers
(
"/actuator/**"
,
"/v2/api-docs/**"
,
"/swagger-ui.html"
,
"/doc.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
// feign 内部调用不用授权
"/inner/**"
).
permitAll
()
.
anyRequest
().
authenticated
()
.
and
().
csrf
().
disable
();
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/StartedUpRunner.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.core.env.Environment
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
@Component
@RequiredArgsConstructor
public
class
StartedUpRunner
implements
ApplicationRunner
{
private
final
ConfigurableApplicationContext
context
;
private
final
Environment
environment
;
@Override
public
void
run
(
ApplicationArguments
args
)
{
if
(
context
.
isActive
())
{
String
banner
=
"-----------------------------------------\n"
+
"服务启动成功,时间:"
+
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
LocalDateTime
.
now
())
+
"\n"
+
"服务名称:"
+
environment
.
getProperty
(
"spring.application.name"
)
+
"\n"
+
"端口号:"
+
environment
.
getProperty
(
"server.port"
)
+
"\n"
+
"-----------------------------------------"
;
System
.
out
.
println
(
banner
);
}
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/SwaggerConfig.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
import
java.util.ArrayList
;
import
java.util.List
;
@Configuration
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
public
class
SwaggerConfig
{
@Autowired
private
SwaggerProperties
swaggerProperties
;
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
*
* @return
*/
@Bean
public
Docket
createRestApi
(){
//版本类型是swagger2
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
//通过调用自定义方法apiInfo,获得文档的主要信息
.
apiInfo
(
apiInfo
())
//设置全局参数
.
globalOperationParameters
(
globalParamBuilder
())
//设置全局响应参数
.
globalResponseMessage
(
RequestMethod
.
GET
,
responseBuilder
())
.
globalResponseMessage
(
RequestMethod
.
POST
,
responseBuilder
())
.
globalResponseMessage
(
RequestMethod
.
PUT
,
responseBuilder
())
.
globalResponseMessage
(
RequestMethod
.
DELETE
,
responseBuilder
())
.
select
()
//扫描该包下面的API注解
.
apis
(
RequestHandlerSelectors
.
basePackage
(
swaggerProperties
.
getBasePackage
()))
.
paths
(
PathSelectors
.
any
())
.
build
()
//设置安全认证
.
securitySchemes
(
security
());
}
/**
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
* @return
*/
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
swaggerProperties
.
getTitle
())
.
description
(
swaggerProperties
.
getDescription
())
.
termsOfServiceUrl
(
swaggerProperties
.
getTermsOfServiceUrl
())
.
version
(
swaggerProperties
.
getVersion
())
.
contact
(
new
Contact
(
swaggerProperties
.
getContact
().
getName
(),
swaggerProperties
.
getContact
().
getUrl
(),
swaggerProperties
.
getContact
().
getEmail
()))
.
build
();
}
/**
* 安全认证参数
* @return
*/
private
List
<
ApiKey
>
security
()
{
List
<
ApiKey
>
apiKeys
=
new
ArrayList
<>();
apiKeys
.
add
(
new
ApiKey
(
"Authorization"
,
"Authorization"
,
"header"
));
return
apiKeys
;
}
/**
* 构建全局参数列表
* @return
*/
private
List
<
Parameter
>
globalParamBuilder
(){
List
<
Parameter
>
pars
=
new
ArrayList
<>();
pars
.
add
(
parameterBuilder
(
"Authorization"
,
"令牌"
,
"string"
,
"header"
,
false
).
build
());
return
pars
;
}
/**
* 创建参数
* @return
*/
private
ParameterBuilder
parameterBuilder
(
String
name
,
String
desc
,
String
type
,
String
parameterType
,
boolean
required
)
{
ParameterBuilder
tokenPar
=
new
ParameterBuilder
();
tokenPar
.
name
(
name
).
description
(
desc
).
modelRef
(
new
ModelRef
(
type
)).
parameterType
(
parameterType
).
required
(
required
).
build
();
return
tokenPar
;
}
/**
* 创建全局响应值
* @return
*/
private
List
<
ResponseMessage
>
responseBuilder
()
{
List
<
ResponseMessage
>
responseMessageList
=
new
ArrayList
<>();
responseMessageList
.
add
(
new
ResponseMessageBuilder
().
code
(
200
).
message
(
"响应成功"
).
build
());
responseMessageList
.
add
(
new
ResponseMessageBuilder
().
code
(
500
).
message
(
"服务器内部错误"
).
build
());
return
responseMessageList
;
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/SwaggerProperties.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
@ConfigurationProperties
(
ignoreUnknownFields
=
false
,
prefix
=
"swagger"
)
public
class
SwaggerProperties
{
private
String
title
;
private
String
description
;
private
String
version
;
private
String
termsOfServiceUrl
;
private
String
basePackage
;
private
Contact
contact
;
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
public
String
getVersion
()
{
return
version
;
}
public
void
setVersion
(
String
version
)
{
this
.
version
=
version
;
}
public
String
getTermsOfServiceUrl
()
{
return
termsOfServiceUrl
;
}
public
void
setTermsOfServiceUrl
(
String
termsOfServiceUrl
)
{
this
.
termsOfServiceUrl
=
termsOfServiceUrl
;
}
public
String
getBasePackage
()
{
return
basePackage
;
}
public
void
setBasePackage
(
String
basePackage
)
{
this
.
basePackage
=
basePackage
;
}
public
Contact
getContact
()
{
return
contact
;
}
public
void
setContact
(
Contact
contact
)
{
this
.
contact
=
contact
;
}
public
static
class
Contact
{
private
String
name
;
private
String
url
;
private
String
email
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
String
getEmail
()
{
return
email
;
}
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/DataMetadataColumnController.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
controller
;
import
cn.datax.common.core.JsonPage
;
import
cn.datax.common.core.R
;
import
cn.datax.common.validate.ValidationGroups
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataColumnDto
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.vo.DataMetadataColumnVo
;
import
cn.datax.service.data.metadata.api.query.DataMetadataColumnQuery
;
import
cn.datax.service.data.metadata.mapstruct.DataMetadataColumnMapper
;
import
cn.datax.service.data.metadata.service.DataMetadataColumnService
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
cn.datax.common.base.BaseController
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* <p>
* 元数据信息表 前端控制器
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Api
(
tags
=
{
"元数据信息表"
})
@RestController
@RequestMapping
(
"/columns"
)
public
class
DataMetadataColumnController
extends
BaseController
{
@Autowired
private
DataMetadataColumnService
dataMetadataColumnService
;
@Autowired
private
DataMetadataColumnMapper
dataMetadataColumnMapper
;
/**
* 通过ID查询信息
*
* @param id
* @return
*/
@ApiOperation
(
value
=
"获取详细信息"
,
notes
=
"根据url的id来获取详细信息"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@GetMapping
(
"/{id}"
)
public
R
getDataMetadataColumnById
(
@PathVariable
String
id
)
{
DataMetadataColumnEntity
dataMetadataColumnEntity
=
dataMetadataColumnService
.
getDataMetadataColumnById
(
id
);
return
R
.
ok
().
setData
(
dataMetadataColumnMapper
.
toVO
(
dataMetadataColumnEntity
));
}
@ApiOperation
(
value
=
"获取列表"
,
notes
=
""
)
@GetMapping
(
"/list"
)
public
R
getDataMetadataColumnList
(
DataMetadataColumnQuery
dataMetadataColumnQuery
)
{
QueryWrapper
<
DataMetadataColumnEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getColumnName
()),
"column_name"
,
dataMetadataColumnQuery
.
getColumnName
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getSourceId
()),
"source_id"
,
dataMetadataColumnQuery
.
getSourceId
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getTableId
()),
"table_id"
,
dataMetadataColumnQuery
.
getTableId
());
List
<
DataMetadataColumnEntity
>
list
=
dataMetadataColumnService
.
list
(
queryWrapper
);
List
<
DataMetadataColumnVo
>
collect
=
list
.
stream
().
map
(
dataMetadataColumnMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
return
R
.
ok
().
setData
(
collect
);
}
/**
* 分页查询信息
*
* @param dataMetadataColumnQuery
* @return
*/
@ApiOperation
(
value
=
"分页查询"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"dataMetadataColumnQuery"
,
value
=
"查询实体dataMetadataColumnQuery"
,
required
=
true
,
dataTypeClass
=
DataMetadataColumnQuery
.
class
)
})
@GetMapping
(
"/page"
)
public
R
getDataMetadataColumnPage
(
DataMetadataColumnQuery
dataMetadataColumnQuery
)
{
QueryWrapper
<
DataMetadataColumnEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getColumnName
()),
"column_name"
,
dataMetadataColumnQuery
.
getColumnName
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getSourceId
()),
"source_id"
,
dataMetadataColumnQuery
.
getSourceId
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataColumnQuery
.
getTableId
()),
"table_id"
,
dataMetadataColumnQuery
.
getTableId
());
IPage
<
DataMetadataColumnEntity
>
page
=
dataMetadataColumnService
.
page
(
new
Page
<>(
dataMetadataColumnQuery
.
getPageNum
(),
dataMetadataColumnQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataMetadataColumnVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataMetadataColumnMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
JsonPage
<
DataMetadataColumnVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
collect
);
return
R
.
ok
().
setData
(
jsonPage
);
}
/**
* 添加
* @param dataMetadataColumn
* @return
*/
@ApiOperation
(
value
=
"添加信息"
,
notes
=
"根据dataMetadataColumn对象添加信息"
)
@ApiImplicitParam
(
name
=
"dataMetadataColumn"
,
value
=
"详细实体dataMetadataColumn"
,
required
=
true
,
dataType
=
"DataMetadataColumnDto"
)
@PostMapping
()
public
R
saveDataMetadataColumn
(
@RequestBody
@Validated
({
ValidationGroups
.
Insert
.
class
})
DataMetadataColumnDto
dataMetadataColumn
)
{
DataMetadataColumnEntity
dataMetadataColumnEntity
=
dataMetadataColumnService
.
saveDataMetadataColumn
(
dataMetadataColumn
);
return
R
.
ok
().
setData
(
dataMetadataColumnMapper
.
toVO
(
dataMetadataColumnEntity
));
}
/**
* 修改
* @param dataMetadataColumn
* @return
*/
@ApiOperation
(
value
=
"修改信息"
,
notes
=
"根据url的id来指定修改对象,并根据传过来的信息来修改详细信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
),
@ApiImplicitParam
(
name
=
"dataMetadataColumn"
,
value
=
"详细实体dataMetadataColumn"
,
required
=
true
,
dataType
=
"DataMetadataColumnDto"
)
})
@PutMapping
(
"/{id}"
)
public
R
updateDataMetadataColumn
(
@PathVariable
String
id
,
@RequestBody
@Validated
({
ValidationGroups
.
Update
.
class
})
DataMetadataColumnDto
dataMetadataColumn
)
{
DataMetadataColumnEntity
dataMetadataColumnEntity
=
dataMetadataColumnService
.
updateDataMetadataColumn
(
dataMetadataColumn
);
return
R
.
ok
().
setData
(
dataMetadataColumnMapper
.
toVO
(
dataMetadataColumnEntity
));
}
/**
* 删除
* @param id
* @return
*/
@ApiOperation
(
value
=
"删除"
,
notes
=
"根据url的id来指定删除对象"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@DeleteMapping
(
"/{id}"
)
public
R
deleteDataMetadataColumnById
(
@PathVariable
String
id
)
{
dataMetadataColumnService
.
deleteDataMetadataColumnById
(
id
);
return
R
.
ok
();
}
/**
* 批量删除
* @param ids
* @return
*/
@ApiOperation
(
value
=
"批量删除角色"
,
notes
=
"根据url的ids来批量删除对象"
)
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"ID集合"
,
required
=
true
,
dataType
=
"List"
,
paramType
=
"path"
)
@DeleteMapping
(
"/batch/{ids}"
)
public
R
deleteDataMetadataColumnBatch
(
@PathVariable
List
<
String
>
ids
)
{
dataMetadataColumnService
.
deleteDataMetadataColumnBatch
(
ids
);
return
R
.
ok
();
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/DataMetadataController.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
controller
;
import
cn.datax.common.core.R
;
import
cn.datax.service.data.metadata.service.DataMetadataService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
tags
=
{
"元数据"
})
@RestController
public
class
DataMetadataController
{
@Autowired
private
DataMetadataService
dataMetadataService
;
@ApiOperation
(
value
=
"同步"
,
notes
=
"根据url的id来指定同步对象"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@PostMapping
(
"/databases/{id}"
)
public
R
syncMetadata
(
@PathVariable
String
id
)
{
dataMetadataService
.
syncMetadata
(
id
);
return
R
.
ok
();
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/DataMetadataTableController.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
controller
;
import
cn.datax.common.core.JsonPage
;
import
cn.datax.common.core.R
;
import
cn.datax.common.validate.ValidationGroups
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataTableDto
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
cn.datax.service.data.metadata.api.vo.DataMetadataTableVo
;
import
cn.datax.service.data.metadata.api.query.DataMetadataTableQuery
;
import
cn.datax.service.data.metadata.mapstruct.DataMetadataTableMapper
;
import
cn.datax.service.data.metadata.service.DataMetadataTableService
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
cn.datax.common.base.BaseController
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* <p>
* 数据库表信息表 前端控制器
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Api
(
tags
=
{
"数据库表信息表"
})
@RestController
@RequestMapping
(
"/tables"
)
public
class
DataMetadataTableController
extends
BaseController
{
@Autowired
private
DataMetadataTableService
dataMetadataTableService
;
@Autowired
private
DataMetadataTableMapper
dataMetadataTableMapper
;
/**
* 通过ID查询信息
*
* @param id
* @return
*/
@ApiOperation
(
value
=
"获取详细信息"
,
notes
=
"根据url的id来获取详细信息"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@GetMapping
(
"/{id}"
)
public
R
getDataMetadataTableById
(
@PathVariable
String
id
)
{
DataMetadataTableEntity
dataMetadataTableEntity
=
dataMetadataTableService
.
getDataMetadataTableById
(
id
);
return
R
.
ok
().
setData
(
dataMetadataTableMapper
.
toVO
(
dataMetadataTableEntity
));
}
@ApiOperation
(
value
=
"获取列表"
,
notes
=
""
)
@GetMapping
(
"/list"
)
public
R
getDataMetadataTableList
(
DataMetadataTableQuery
dataMetadataTableQuery
)
{
QueryWrapper
<
DataMetadataTableEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataMetadataTableQuery
.
getTableName
()),
"table_name"
,
dataMetadataTableQuery
.
getTableName
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataTableQuery
.
getSourceId
()),
"source_id"
,
dataMetadataTableQuery
.
getSourceId
());
List
<
DataMetadataTableEntity
>
list
=
dataMetadataTableService
.
list
(
queryWrapper
);
List
<
DataMetadataTableVo
>
collect
=
list
.
stream
().
map
(
dataMetadataTableMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
return
R
.
ok
().
setData
(
collect
);
}
/**
* 分页查询信息
*
* @param dataMetadataTableQuery
* @return
*/
@ApiOperation
(
value
=
"分页查询"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"dataMetadataTableQuery"
,
value
=
"查询实体dataMetadataTableQuery"
,
required
=
true
,
dataTypeClass
=
DataMetadataTableQuery
.
class
)
})
@GetMapping
(
"/page"
)
public
R
getDataMetadataTablePage
(
DataMetadataTableQuery
dataMetadataTableQuery
)
{
QueryWrapper
<
DataMetadataTableEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataMetadataTableQuery
.
getTableName
()),
"table_name"
,
dataMetadataTableQuery
.
getTableName
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataMetadataTableQuery
.
getSourceId
()),
"source_id"
,
dataMetadataTableQuery
.
getSourceId
());
IPage
<
DataMetadataTableEntity
>
page
=
dataMetadataTableService
.
page
(
new
Page
<>(
dataMetadataTableQuery
.
getPageNum
(),
dataMetadataTableQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataMetadataTableVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataMetadataTableMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
JsonPage
<
DataMetadataTableVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
collect
);
return
R
.
ok
().
setData
(
jsonPage
);
}
/**
* 添加
* @param dataMetadataTable
* @return
*/
@ApiOperation
(
value
=
"添加信息"
,
notes
=
"根据dataMetadataTable对象添加信息"
)
@ApiImplicitParam
(
name
=
"dataMetadataTable"
,
value
=
"详细实体dataMetadataTable"
,
required
=
true
,
dataType
=
"DataMetadataTableDto"
)
@PostMapping
()
public
R
saveDataMetadataTable
(
@RequestBody
@Validated
({
ValidationGroups
.
Insert
.
class
})
DataMetadataTableDto
dataMetadataTable
)
{
DataMetadataTableEntity
dataMetadataTableEntity
=
dataMetadataTableService
.
saveDataMetadataTable
(
dataMetadataTable
);
return
R
.
ok
().
setData
(
dataMetadataTableMapper
.
toVO
(
dataMetadataTableEntity
));
}
/**
* 修改
* @param dataMetadataTable
* @return
*/
@ApiOperation
(
value
=
"修改信息"
,
notes
=
"根据url的id来指定修改对象,并根据传过来的信息来修改详细信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
),
@ApiImplicitParam
(
name
=
"dataMetadataTable"
,
value
=
"详细实体dataMetadataTable"
,
required
=
true
,
dataType
=
"DataMetadataTableDto"
)
})
@PutMapping
(
"/{id}"
)
public
R
updateDataMetadataTable
(
@PathVariable
String
id
,
@RequestBody
@Validated
({
ValidationGroups
.
Update
.
class
})
DataMetadataTableDto
dataMetadataTable
)
{
DataMetadataTableEntity
dataMetadataTableEntity
=
dataMetadataTableService
.
updateDataMetadataTable
(
dataMetadataTable
);
return
R
.
ok
().
setData
(
dataMetadataTableMapper
.
toVO
(
dataMetadataTableEntity
));
}
/**
* 删除
* @param id
* @return
*/
@ApiOperation
(
value
=
"删除"
,
notes
=
"根据url的id来指定删除对象"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@DeleteMapping
(
"/{id}"
)
public
R
deleteDataMetadataTableById
(
@PathVariable
String
id
)
{
dataMetadataTableService
.
deleteDataMetadataTableById
(
id
);
return
R
.
ok
();
}
/**
* 批量删除
* @param ids
* @return
*/
@ApiOperation
(
value
=
"批量删除角色"
,
notes
=
"根据url的ids来批量删除对象"
)
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"ID集合"
,
required
=
true
,
dataType
=
"List"
,
paramType
=
"path"
)
@DeleteMapping
(
"/batch/{ids}"
)
public
R
deleteDataMetadataTableBatch
(
@PathVariable
List
<
String
>
ids
)
{
dataMetadataTableService
.
deleteDataMetadataTableBatch
(
ids
);
return
R
.
ok
();
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/InnerController.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
controller
;
import
cn.datax.common.base.BaseController
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
"/inner"
)
public
class
InnerController
extends
BaseController
{
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/dao/DataMetadataColumnDao.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
dao
;
import
cn.datax.common.base.BaseDao
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 元数据信息表 Mapper 接口
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Mapper
public
interface
DataMetadataColumnDao
extends
BaseDao
<
DataMetadataColumnEntity
>
{
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/dao/DataMetadataTableDao.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
dao
;
import
cn.datax.common.base.BaseDao
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 数据库表信息表 Mapper 接口
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Mapper
public
interface
DataMetadataTableDao
extends
BaseDao
<
DataMetadataTableEntity
>
{
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/mapstruct/DataMetadataColumnMapper.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
mapstruct
;
import
cn.datax.common.mapstruct.EntityMapper
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataColumnDto
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.vo.DataMetadataColumnVo
;
import
org.mapstruct.Mapper
;
/**
* <p>
* 元数据信息表 Mapper 实体映射
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Mapper
(
componentModel
=
"spring"
)
public
interface
DataMetadataColumnMapper
extends
EntityMapper
<
DataMetadataColumnDto
,
DataMetadataColumnEntity
,
DataMetadataColumnVo
>
{
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/mapstruct/DataMetadataTableMapper.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
mapstruct
;
import
cn.datax.common.mapstruct.EntityMapper
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataTableDto
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
cn.datax.service.data.metadata.api.vo.DataMetadataTableVo
;
import
org.mapstruct.Mapper
;
/**
* <p>
* 数据库表信息表 Mapper 实体映射
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Mapper
(
componentModel
=
"spring"
)
public
interface
DataMetadataTableMapper
extends
EntityMapper
<
DataMetadataTableDto
,
DataMetadataTableEntity
,
DataMetadataTableVo
>
{
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/DataMetadataColumnService.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataColumnDto
;
import
cn.datax.common.base.BaseService
;
import
java.util.List
;
/**
* <p>
* 元数据信息表 服务类
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
public
interface
DataMetadataColumnService
extends
BaseService
<
DataMetadataColumnEntity
>
{
DataMetadataColumnEntity
saveDataMetadataColumn
(
DataMetadataColumnDto
dataMetadataColumn
);
DataMetadataColumnEntity
updateDataMetadataColumn
(
DataMetadataColumnDto
dataMetadataColumn
);
DataMetadataColumnEntity
getDataMetadataColumnById
(
String
id
);
void
deleteDataMetadataColumnById
(
String
id
);
void
deleteDataMetadataColumnBatch
(
List
<
String
>
ids
);
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/DataMetadataService.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
;
public
interface
DataMetadataService
{
void
syncMetadata
(
String
id
);
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/DataMetadataTableService.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataTableDto
;
import
cn.datax.common.base.BaseService
;
import
java.util.List
;
/**
* <p>
* 数据库表信息表 服务类
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
public
interface
DataMetadataTableService
extends
BaseService
<
DataMetadataTableEntity
>
{
DataMetadataTableEntity
saveDataMetadataTable
(
DataMetadataTableDto
dataMetadataTable
);
DataMetadataTableEntity
updateDataMetadataTable
(
DataMetadataTableDto
dataMetadataTable
);
DataMetadataTableEntity
getDataMetadataTableById
(
String
id
);
void
deleteDataMetadataTableById
(
String
id
);
void
deleteDataMetadataTableBatch
(
List
<
String
>
ids
);
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/DataMetadataColumnServiceImpl.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
.
impl
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataColumnDto
;
import
cn.datax.service.data.metadata.service.DataMetadataColumnService
;
import
cn.datax.service.data.metadata.mapstruct.DataMetadataColumnMapper
;
import
cn.datax.service.data.metadata.dao.DataMetadataColumnDao
;
import
cn.datax.common.base.BaseServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* <p>
* 元数据信息表 服务实现类
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
DataMetadataColumnServiceImpl
extends
BaseServiceImpl
<
DataMetadataColumnDao
,
DataMetadataColumnEntity
>
implements
DataMetadataColumnService
{
@Autowired
private
DataMetadataColumnDao
dataMetadataColumnDao
;
@Autowired
private
DataMetadataColumnMapper
dataMetadataColumnMapper
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataMetadataColumnEntity
saveDataMetadataColumn
(
DataMetadataColumnDto
dataMetadataColumnDto
)
{
DataMetadataColumnEntity
dataMetadataColumn
=
dataMetadataColumnMapper
.
toEntity
(
dataMetadataColumnDto
);
dataMetadataColumnDao
.
insert
(
dataMetadataColumn
);
return
dataMetadataColumn
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataMetadataColumnEntity
updateDataMetadataColumn
(
DataMetadataColumnDto
dataMetadataColumnDto
)
{
DataMetadataColumnEntity
dataMetadataColumn
=
dataMetadataColumnMapper
.
toEntity
(
dataMetadataColumnDto
);
dataMetadataColumnDao
.
updateById
(
dataMetadataColumn
);
return
dataMetadataColumn
;
}
@Override
public
DataMetadataColumnEntity
getDataMetadataColumnById
(
String
id
)
{
DataMetadataColumnEntity
dataMetadataColumnEntity
=
super
.
getById
(
id
);
return
dataMetadataColumnEntity
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataMetadataColumnById
(
String
id
)
{
dataMetadataColumnDao
.
deleteById
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataMetadataColumnBatch
(
List
<
String
>
ids
)
{
dataMetadataColumnDao
.
deleteBatchIds
(
ids
);
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/DataMetadataServiceImpl.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
.
impl
;
import
cn.datax.common.core.DataConstant
;
import
cn.datax.common.database.DataSourceFactory
;
import
cn.datax.common.database.DbQuery
;
import
cn.datax.common.database.constants.DbQueryProperty
;
import
cn.datax.common.database.core.DbColumn
;
import
cn.datax.common.database.core.DbTable
;
import
cn.datax.common.exception.DataException
;
import
cn.datax.service.data.factory.api.dto.DbSchema
;
import
cn.datax.service.data.factory.api.entity.DataSourceEntity
;
import
cn.datax.service.data.factory.api.feign.DataSourceServiceFeign
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
cn.datax.service.data.metadata.dao.DataMetadataColumnDao
;
import
cn.datax.service.data.metadata.dao.DataMetadataTableDao
;
import
cn.datax.service.data.metadata.service.DataMetadataService
;
import
cn.hutool.core.collection.CollUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
DataMetadataServiceImpl
implements
DataMetadataService
{
@Autowired
private
DataSourceFactory
dataSourceFactory
;
@Autowired
private
DataSourceServiceFeign
dataSourceServiceFeign
;
@Autowired
private
DataMetadataTableDao
dataMetadataTableDao
;
@Autowired
private
DataMetadataColumnDao
dataMetadataColumnDao
;
@Override
public
void
syncMetadata
(
String
id
)
{
DataSourceEntity
dataSourceEntity
=
dataSourceServiceFeign
.
getDataSourceById
(
id
);
if
(
dataSourceServiceFeign
==
null
)
{
throw
new
DataException
(
"未找到数据源"
);
}
if
(
Integer
.
valueOf
(
DataConstant
.
TrueOrFalse
.
TRUE
.
getKey
()).
equals
(
dataSourceEntity
.
getSourceSync
()))
{
throw
new
DataException
(
"元数据已同步"
);
}
// 异步执行同步任务
syncTask
(
dataSourceEntity
);
}
@Async
public
void
syncTask
(
DataSourceEntity
dataSource
)
{
long
start
=
System
.
currentTimeMillis
();
DbSchema
dbSchema
=
dataSource
.
getDbSchema
();
DbQueryProperty
dbQueryProperty
=
new
DbQueryProperty
(
dataSource
.
getDbType
(),
dbSchema
.
getHost
(),
dbSchema
.
getUsername
(),
dbSchema
.
getPassword
(),
dbSchema
.
getPort
(),
dbSchema
.
getDbName
(),
dbSchema
.
getSid
());
DbQuery
dbQuery
=
dataSourceFactory
.
createDbQuery
(
dbQueryProperty
);
List
<
DbTable
>
tables
=
dbQuery
.
getTables
(
dbSchema
.
getDbName
());
if
(
CollUtil
.
isNotEmpty
(
tables
))
{
List
<
DataMetadataTableEntity
>
metadataTableEntityList
=
tables
.
stream
().
map
(
table
->
{
DataMetadataTableEntity
metadataTable
=
new
DataMetadataTableEntity
();
metadataTable
.
setSourceId
(
dataSource
.
getId
());
metadataTable
.
setTableName
(
table
.
getTableName
());
return
metadataTable
;
}).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isNotEmpty
(
metadataTableEntityList
))
{
metadataTableEntityList
.
stream
().
forEach
(
table
->
{
dataMetadataTableDao
.
insert
(
table
);
List
<
DbColumn
>
columns
=
dbQuery
.
getTableColumns
(
dbSchema
.
getDbName
(),
table
.
getTableName
());
if
(
CollUtil
.
isNotEmpty
(
columns
))
{
List
<
DataMetadataColumnEntity
>
metadataColumnEntityList
=
columns
.
stream
().
map
(
column
->
{
DataMetadataColumnEntity
metadataColumn
=
new
DataMetadataColumnEntity
();
metadataColumn
.
setSourceId
(
dataSource
.
getId
());
metadataColumn
.
setTableId
(
table
.
getId
());
metadataColumn
.
setColumnName
(
column
.
getColName
());
metadataColumn
.
setColumnComment
(
column
.
getColComment
());
metadataColumn
.
setColumnKey
(
column
.
getColKey
()
?
"1"
:
"0"
);
metadataColumn
.
setColumnNullable
(
column
.
getNullable
()
?
"1"
:
"0"
);
metadataColumn
.
setColumnPosition
(
column
.
getColPosition
().
toString
());
metadataColumn
.
setDataType
(
column
.
getDataType
());
metadataColumn
.
setDataLength
(
column
.
getDataLength
().
toString
());
metadataColumn
.
setDataPrecision
(
column
.
getDataPrecision
().
toString
());
metadataColumn
.
setDataScale
(
column
.
getDataScale
().
toString
());
metadataColumn
.
setDataDefault
(
column
.
getDataDefault
());
return
metadataColumn
;
}).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isNotEmpty
(
metadataColumnEntityList
))
{
metadataColumnEntityList
.
stream
().
forEach
(
column
->
dataMetadataColumnDao
.
insert
(
column
));
}
}
});
}
}
log
.
info
(
"异步任务执行完成!耗时{}秒"
,
(
System
.
currentTimeMillis
()
-
start
/
1000
));
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/DataMetadataTableServiceImpl.java
0 → 100644
View file @
d54a9076
package
cn
.
datax
.
service
.
data
.
metadata
.
service
.
impl
;
import
cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity
;
import
cn.datax.service.data.metadata.api.dto.DataMetadataTableDto
;
import
cn.datax.service.data.metadata.service.DataMetadataTableService
;
import
cn.datax.service.data.metadata.mapstruct.DataMetadataTableMapper
;
import
cn.datax.service.data.metadata.dao.DataMetadataTableDao
;
import
cn.datax.common.base.BaseServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* <p>
* 数据库表信息表 服务实现类
* </p>
*
* @author yuwei
* @since 2020-07-29
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
DataMetadataTableServiceImpl
extends
BaseServiceImpl
<
DataMetadataTableDao
,
DataMetadataTableEntity
>
implements
DataMetadataTableService
{
@Autowired
private
DataMetadataTableDao
dataMetadataTableDao
;
@Autowired
private
DataMetadataTableMapper
dataMetadataTableMapper
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataMetadataTableEntity
saveDataMetadataTable
(
DataMetadataTableDto
dataMetadataTableDto
)
{
DataMetadataTableEntity
dataMetadataTable
=
dataMetadataTableMapper
.
toEntity
(
dataMetadataTableDto
);
dataMetadataTableDao
.
insert
(
dataMetadataTable
);
return
dataMetadataTable
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataMetadataTableEntity
updateDataMetadataTable
(
DataMetadataTableDto
dataMetadataTableDto
)
{
DataMetadataTableEntity
dataMetadataTable
=
dataMetadataTableMapper
.
toEntity
(
dataMetadataTableDto
);
dataMetadataTableDao
.
updateById
(
dataMetadataTable
);
return
dataMetadataTable
;
}
@Override
public
DataMetadataTableEntity
getDataMetadataTableById
(
String
id
)
{
DataMetadataTableEntity
dataMetadataTableEntity
=
super
.
getById
(
id
);
return
dataMetadataTableEntity
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataMetadataTableById
(
String
id
)
{
dataMetadataTableDao
.
deleteById
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataMetadataTableBatch
(
List
<
String
>
ids
)
{
dataMetadataTableDao
.
deleteBatchIds
(
ids
);
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/resources/bootstrap.yml
0 → 100644
View file @
d54a9076
server
:
port
:
8820
spring
:
application
:
name
:
datax-service-data-metadata
profiles
:
active
:
dev
cloud
:
config
:
fail-fast
:
true
name
:
${spring.application.name}
profile
:
${spring.profiles.active}
discovery
:
enabled
:
true
service-id
:
datax-config
# 注册中心配置
eureka
:
instance
:
lease-renewal-interval-in-seconds
:
20
client
:
register-with-eureka
:
true
fetch-registry
:
true
instance-info-replication-interval-seconds
:
30
registry-fetch-interval-seconds
:
3
service-url
:
defaultZone
:
http://localhost:8610/eureka
\ No newline at end of file
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/resources/logback-spring.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<configuration
scan=
"true"
scanPeriod=
"60 seconds"
debug=
"false"
>
<springProperty
scope=
"context"
name=
"springAppName"
source=
"spring.application.name"
/>
<property
name=
"log.path"
value=
"logs/datax-service-data-metadata"
/>
<property
name=
"log.maxHistory"
value=
"15"
/>
<property
name=
"log.totalSizeCap"
value=
"500MB"
/>
<property
name=
"log.maxFileSize"
value=
"10MB"
/>
<property
name=
"log.colorPattern"
value=
"%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %boldCyan(${springAppName:-}) %yellow(%thread) %green(%logger) %msg%n"
/>
<property
name=
"log.pattern"
value=
"%d{yyyy-MM-dd HH:mm:ss} %-5level ${springAppName:-} %thread %logger %msg%n"
/>
<!--输出到控制台-->
<appender
name=
"console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder>
<pattern>
${log.colorPattern}
</pattern>
</encoder>
</appender>
<!--输出到文件-->
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是project_info.log -->
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过10MB时,对当前日志进行分割 重命名-->
<appender
name=
"file_info"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--日志文件路径和名称-->
<File>
${log.path}/info/info.log
</File>
<!--是否追加到文件末尾,默认为true-->
<append>
true
</append>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<!-- 日志文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
<!-- 文件名:logs/project_info.2017-12-05.0.log -->
<!-- 注意:SizeAndTimeBasedRollingPolicy中 %i和%d令牌都是强制性的,必须存在,要不会报错 -->
<fileNamePattern>
${log.path}/info/info.%d.%i.log
</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为30天, ps:maxHistory的单位是根据fileNamePattern中的翻转策略自动推算出来的,例如上面选用了yyyy-MM-dd,则单位为天
如果上面选用了yyyy-MM,则单位为月,另外上面的单位默认为yyyy-MM-dd-->
<MaxHistory>
${log.maxHistory}
</MaxHistory>
<!-- 每个日志文件到2mb的时候开始切分,最多保留30天,但最大到500MB,哪怕没到30天也要删除多余的日志 -->
<totalSizeCap>
${log.totalSizeCap}
</totalSizeCap>
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 -->
<maxFileSize>
${log.maxFileSize}
</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>
${log.pattern}
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
INFO
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<appender
name=
"file_error"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<File>
${log.path}/error/error.log
</File>
<append>
true
</append>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<fileNamePattern>
${log.path}/error/error.%d.%i.log
</fileNamePattern>
<MaxHistory>
${log.maxHistory}
</MaxHistory>
<totalSizeCap>
${log.totalSizeCap}
</totalSizeCap>
<maxFileSize>
${log.maxFileSize}
</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>
${log.pattern}
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<root
level=
"debug"
>
<appender-ref
ref=
"console"
/>
</root>
<root
level=
"info"
>
<appender-ref
ref=
"file_info"
/>
<appender-ref
ref=
"file_error"
/>
</root>
</configuration>
\ No newline at end of file
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/resources/mapper/DataMetadataColumnMapper.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.datax.service.data.metadata.dao.DataMetadataColumnDao"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"create_by"
property=
"createBy"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"source_id"
property=
"sourceId"
/>
<result
column=
"table_id"
property=
"tableId"
/>
<result
column=
"column_name"
property=
"columnName"
/>
<result
column=
"column_comment"
property=
"columnComment"
/>
<result
column=
"column_key"
property=
"columnKey"
/>
<result
column=
"column_nullable"
property=
"columnNullable"
/>
<result
column=
"column_position"
property=
"columnPosition"
/>
<result
column=
"data_type"
property=
"dataType"
/>
<result
column=
"data_length"
property=
"dataLength"
/>
<result
column=
"data_precision"
property=
"dataPrecision"
/>
<result
column=
"data_scale"
property=
"dataScale"
/>
<result
column=
"data_default"
property=
"dataDefault"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id,
status,
create_by,
create_time,
update_by,
update_time,
remark,
source_id, table_id, column_name, column_comment, column_key, column_nullable, column_position, data_type, data_length, data_precision, data_scale, data_default
</sql>
</mapper>
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/resources/mapper/DataMetadataTableMapper.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.datax.service.data.metadata.dao.DataMetadataTableDao"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"create_by"
property=
"createBy"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"source_id"
property=
"sourceId"
/>
<result
column=
"table_name"
property=
"tableName"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id,
status,
create_by,
create_time,
update_by,
update_time,
remark,
source_id, table_name
</sql>
</mapper>
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/resources/spy.properties
0 → 100644
View file @
d54a9076
module.log
=
com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat
=
com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender
=
com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers
=
true
# 取消JDBC URL前缀
useprefix
=
true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories
=
info,debug,result,batch,resultset
# 日期格式
dateformat
=
yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection
=
true
# 慢SQL记录标准 2 秒
outagedetectioninterval
=
2
# 开启过滤
filter
=
true
# 配置不打印的内容
exclude
=
select 1
\ No newline at end of file
datax-modules/data-metadata-service-parent/pom.xml
0 → 100644
View file @
d54a9076
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
datax-modules
</artifactId>
<groupId>
cn.datax
</groupId>
<version>
2.0.0
</version>
</parent>
<packaging>
pom
</packaging>
<modelVersion>
4.0.0
</modelVersion>
<version>
2.0.0
</version>
<description>
元数据
</description>
<artifactId>
data-metadata-service-parent
</artifactId>
<modules>
<module>
data-metadata-service
</module>
<module>
data-metadata-service-api
</module>
</modules>
</project>
\ No newline at end of file
datax-modules/pom.xml
View file @
d54a9076
...
...
@@ -20,5 +20,6 @@
<module>
data-market-service-parent
</module>
<module>
quartz-service-parent
</module>
<module>
codegen-service-parent
</module>
<module>
data-metadata-service-parent
</module>
</modules>
</project>
\ No newline at end of file
datax-modules/system-service-parent/system-service/src/main/java/cn/datax/service/system/async/AsyncTask.java
View file @
d54a9076
...
...
@@ -17,7 +17,7 @@ public class AsyncTask {
@Autowired
private
LogService
logService
;
@Async
(
"dataxAsyncThreadPool"
)
@Async
public
void
doTask
(
LogDto
logDto
)
{
logService
.
saveLog
(
logDto
);
}
...
...
datax-modules/system-service-parent/system-service/src/main/java/cn/datax/service/system/config/
Log
AsyncConfig.java
→
datax-modules/system-service-parent/system-service/src/main/java/cn/datax/service/system/config/AsyncConfig.java
View file @
d54a9076
package
cn
.
datax
.
service
.
system
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@EnableAsync
public
class
LogAsyncConfig
{
@Configuration
public
class
AsyncConfig
{
@Bean
(
"
dataxAsyncThreadPool
"
)
public
ThreadPoolTaskExecutor
asyncThreadPoolT
askExecutor
()
{
@Bean
(
"
taskExecutor
"
)
public
Executor
t
askExecutor
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
executor
.
setCorePoolSize
(
5
);
executor
.
setMaxPoolSize
(
20
);
executor
.
setQueueCapacity
(
100
);
executor
.
setKeepAliveSeconds
(
30
);
executor
.
setThreadNamePrefix
(
"
Datax-Async-Thread
"
);
executor
.
setThreadNamePrefix
(
"
datax-async-service-
"
);
executor
.
setWaitForTasksToCompleteOnShutdown
(
true
);
executor
.
setAwaitTerminationSeconds
(
60
);
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
...
...
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