Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
adaptation-master
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
adaptation-master
Commits
144d8b21
提交
144d8b21
authored
12月 10, 2019
作者:
zhangshuang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zs
上级
6a8d21f9
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
821 行增加
和
0 行删除
+821
-0
DBManageController.java
...aptationmaster/adaptor/controller/DBManageController.java
+30
-0
DBMigrateController.java
...ptationmaster/adaptor/controller/DBMigrateController.java
+26
-0
DBRecordController.java
...aptationmaster/adaptor/controller/DBRecordController.java
+28
-0
DBDeleteResponse.java
.../adaptationmaster/adaptor/entity/db/DBDeleteResponse.java
+13
-0
DBManage.java
...com/zjty/adaptationmaster/adaptor/entity/db/DBManage.java
+29
-0
DBRecord.java
...com/zjty/adaptationmaster/adaptor/entity/db/DBRecord.java
+29
-0
DBRecordPage.java
...zjty/adaptationmaster/adaptor/entity/db/DBRecordPage.java
+15
-0
DBRecordReturn.java
...ty/adaptationmaster/adaptor/entity/db/DBRecordReturn.java
+15
-0
DatabaseResponse.java
.../adaptationmaster/adaptor/entity/db/DatabaseResponse.java
+16
-0
DBManageDao.java
...zjty/adaptationmaster/adaptor/repository/DBManageDao.java
+21
-0
DBRecordDao.java
...zjty/adaptationmaster/adaptor/repository/DBRecordDao.java
+16
-0
DBManageService.java
...jty/adaptationmaster/adaptor/service/DBManageService.java
+14
-0
DBMigrateService.java
...ty/adaptationmaster/adaptor/service/DBMigrateService.java
+13
-0
DBRecordService.java
...jty/adaptationmaster/adaptor/service/DBRecordService.java
+13
-0
DBManageServiceImpl.java
...ationmaster/adaptor/service/Impl/DBManageServiceImpl.java
+52
-0
DBMigrateServiceImpl.java
...tionmaster/adaptor/service/Impl/DBMigrateServiceImpl.java
+182
-0
DBRecordServiceImpl.java
...ationmaster/adaptor/service/Impl/DBRecordServiceImpl.java
+87
-0
Regular.java
src/main/java/com/zjty/adaptationmaster/utils/Regular.java
+222
-0
没有找到文件。
src/main/java/com/zjty/adaptationmaster/adaptor/controller/DBManageController.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
controller
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
com.zjty.adaptationmaster.adaptor.service.DBManageService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
"/database"
)
public
class
DBManageController
{
@Autowired
private
DBManageService
databaseService
;
@PostMapping
(
"/save"
)
public
ServerResponse
add
(
@RequestBody
DBManage
databaseManagement
){
return
databaseService
.
saveDatabase
(
databaseManagement
);
}
@PutMapping
(
"/delete/{id}"
)
public
ServerResponse
delete
(
@PathVariable
(
"id"
)
Integer
id
){
return
databaseService
.
deleteDatabase
(
id
);
}
@GetMapping
(
"/find"
)
public
ServerResponse
findDatabaseManagement
(){
return
databaseService
.
findDatabase
();
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/controller/DBMigrateController.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
controller
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse
;
import
com.zjty.adaptationmaster.adaptor.service.DBMigrateService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
@RequestMapping
(
"/dbMigrate"
)
@RestController
public
class
DBMigrateController
{
@Autowired
private
DBMigrateService
dbMigrateService
;
@PostMapping
(
"/migrate"
)
public
ServerResponse
addDatabase
(
@RequestBody
DatabaseResponse
databaseResponse
){
return
dbMigrateService
.
dbMigrate
(
databaseResponse
);
}
@PutMapping
(
"/find"
)
public
ServerResponse
find
(
@RequestBody
String
dbType
){
return
dbMigrateService
.
findDBByDBType
(
dbType
);
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/controller/DBRecordController.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
controller
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBDeleteResponse
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBRecordPage
;
import
com.zjty.adaptationmaster.adaptor.service.DBRecordService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
"/dbRecord"
)
public
class
DBRecordController
{
@Autowired
private
DBRecordService
dbRecordService
;
@PutMapping
(
"/page"
)
public
ServerResponse
page
(
@RequestBody
DBRecordPage
dbRecordPage
){
return
dbRecordService
.
pageFind
(
dbRecordPage
);
}
@PutMapping
(
"deleteDB"
)
public
ServerResponse
deleteDB
(
@RequestBody
DBDeleteResponse
dbDeleteResponse
){
return
dbRecordService
.
deleteDB
(
dbDeleteResponse
);
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DBDeleteResponse.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
DBDeleteResponse
{
private
String
dbName
;
//数据库名称
private
String
dbType
;
//数据库类型
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DBManage.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public
class
DBManage
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Integer
id
;
private
String
databaseName
;
//数据库名字
private
String
userName
;
//用户名
private
String
password
;
//密码
private
String
databaseType
;
//数据库类型
private
String
driver
;
//数据库驱动
private
String
address
;
//连接地址
private
String
port
;
//数据库端口号
private
String
connectionType
;
//数据库连接时的sql
private
Integer
status
;
//逻辑删除 0-删除 1-未删除
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DBRecord.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.util.Date
;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public
class
DBRecord
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
id
;
//主键id,自增
private
String
dbName
;
//数据库名字
private
String
sourceType
;
//原库类型
private
String
createType
;
//生成库类型
private
String
userName
;
//用户名
private
String
sqlPath
;
//上传sql本地地址
private
String
createSqlPath
;
//转换后的sql本地地址
private
Date
createTime
;
//创建时间
private
Integer
status
;
//逻辑删除 0-删除 1-未删除
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DBRecordPage.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
DBRecordPage
{
private
String
createType
;
//生成库类型
private
String
userName
;
//用户名
private
Integer
page
;
//当前页
private
Integer
size
;
//每页数量
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DBRecordReturn.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
DBRecordReturn
{
private
long
count
;
//总数
private
List
<
DBRecord
>
dbRecords
;
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/DatabaseResponse.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
entity
.
db
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
DatabaseResponse
{
private
String
databaseName
;
//数据库名称
private
String
sourceType
;
//原库类型
private
String
createType
;
//生成库类型
private
String
sqlPath
;
//上传数据库地址
private
String
userName
;
//用户名
}
src/main/java/com/zjty/adaptationmaster/adaptor/repository/DBManageDao.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
repository
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
import
java.util.List
;
public
interface
DBManageDao
extends
JpaRepository
<
DBManage
,
Integer
>
{
DBManage
findDatabaseManagementByDatabaseTypeAndStatus
(
String
databaseType
,
Integer
status
);
List
<
DBManage
>
findDatabaseManagementByStatus
(
Integer
status
);
@Query
(
"update DBManage d set d.status =:status where d.id =:id"
)
@Modifying
void
delete
(
@Param
(
value
=
"id"
)
Integer
id
,
@Param
(
value
=
"status"
)
Integer
status
);
}
src/main/java/com/zjty/adaptationmaster/adaptor/repository/DBRecordDao.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
repository
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBRecord
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
public
interface
DBRecordDao
extends
JpaRepository
<
DBRecord
,
Integer
>,
JpaSpecificationExecutor
{
@Query
(
"update DBRecord d set d.status =:status where d.dbName =:dbName"
)
@Modifying
void
delete
(
@Param
(
value
=
"dbName"
)
String
dbName
,
@Param
(
value
=
"status"
)
Integer
status
);
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/DBManageService.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
public
interface
DBManageService
{
ServerResponse
saveDatabase
(
DBManage
databaseManagement
);
ServerResponse
deleteDatabase
(
Integer
id
);
ServerResponse
findDatabase
();
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/DBMigrateService.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
public
interface
DBMigrateService
{
ServerResponse
dbMigrate
(
DatabaseResponse
databaseResponse
);
ServerResponse
findDBByDBType
(
String
dbType
);
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/DBRecordService.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBDeleteResponse
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBRecordPage
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
public
interface
DBRecordService
{
ServerResponse
pageFind
(
DBRecordPage
dbRecordPage
);
ServerResponse
deleteDB
(
DBDeleteResponse
dbDeleteResponse
);
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/DBManageServiceImpl.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
.
Impl
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
com.zjty.adaptationmaster.adaptor.repository.DBManageDao
;
import
com.zjty.adaptationmaster.adaptor.service.DBManageService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
@Service
public
class
DBManageServiceImpl
implements
DBManageService
{
@Autowired
private
DBManageDao
databaseDao
;
/**
* 新增数据库配置文件
* @param databaseManagement
* @return
*/
@Override
@Transactional
public
ServerResponse
saveDatabase
(
DBManage
databaseManagement
)
{
databaseManagement
.
setStatus
(
1
);
//1-未删除
return
ServerResponse
.
success
(
databaseDao
.
save
(
databaseManagement
));
}
/**
* 根据id删除数据库配置文件
* @param id
* @return
*/
@Override
@Transactional
public
ServerResponse
deleteDatabase
(
Integer
id
)
{
databaseDao
.
delete
(
id
,
0
);
//逻辑删除
return
ServerResponse
.
success
(
id
);
}
/**
* 查找未被逻辑删除的数据库配置文件
* @return
*/
@Override
public
ServerResponse
findDatabase
()
{
return
ServerResponse
.
success
(
databaseDao
.
findDatabaseManagementByStatus
(
1
));
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/DBMigrateServiceImpl.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
.
Impl
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBRecord
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse
;
import
com.zjty.adaptationmaster.adaptor.repository.DBManageDao
;
import
com.zjty.adaptationmaster.adaptor.repository.DBRecordDao
;
import
com.zjty.adaptationmaster.adaptor.service.DBMigrateService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
com.zjty.adaptationmaster.utils.Regular
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.sql.Connection
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Service
public
class
DBMigrateServiceImpl
implements
DBMigrateService
{
@Autowired
private
DBManageDao
dbManageDao
;
@Autowired
private
DBRecordDao
dbRecordDao
;
/**
* 创建新数据库和数据库中的表
*/
@Override
public
ServerResponse
dbMigrate
(
DatabaseResponse
databaseResponse
)
{
if
(
databaseResponse
!=
null
&&
databaseResponse
.
getDatabaseName
()
!=
null
){
String
databaseName
=
databaseResponse
.
getDatabaseName
();
//查询新建的数据库是否存在
ServerResponse
serverResponse
=
findDBByDBType
(
databaseResponse
.
getCreateType
());
Object
obj
=
serverResponse
.
getData
();
List
<
String
>
dbNameList
=
new
ArrayList
<>();
if
(
obj
instanceof
ArrayList
<?>){
for
(
Object
o:
((
List
<?>)
obj
)){
dbNameList
.
add
(
String
.
class
.
cast
(
o
));
}
}
if
(
dbNameList
.
contains
(
databaseName
)){
return
ServerResponse
.
error
(
"该数据库已存在,请重新填写"
);
}
//转换后的.sql文件地址
String
path
=
""
;
//mysql数据库
if
(
databaseResponse
.
getCreateType
().
equals
(
"highgo"
)
&&
databaseResponse
.
getSourceType
().
equals
(
"mysql"
)){
//生成数据库的名称
//连接系统数据库,建立新数据库
//根据传入的生成数据库类型,查找未被删除的配置文件
DBManage
databaseManagement
=
dbManageDao
.
findDatabaseManagementByDatabaseTypeAndStatus
(
databaseResponse
.
getCreateType
(),
1
);
Connection
connection
=
Regular
.
databaseConnection
(
databaseManagement
);
if
(
connection
!=
null
){
PreparedStatement
preparedStatement
=
null
;
try
{
String
createDatabase
=
"CREATE DATABASE \""
+
databaseName
+
"\" WITH OWNER = \""
+
databaseManagement
.
getUserName
()
+
"\" ENCODING = 'UTF8' TEMPLATE template0;"
;
preparedStatement
=
connection
.
prepareStatement
(
createDatabase
);
preparedStatement
.
execute
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
return
ServerResponse
.
error
(
"创建数据库:"
+
databaseName
+
"出错"
);
}
finally
{
try
{
preparedStatement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
//建立表及导入数据
databaseManagement
.
setDatabaseName
(
databaseName
);
Connection
connection1
=
Regular
.
databaseConnection
(
databaseManagement
);
if
(
connection1
!=
null
){
path
=
Regular
.
mySqlRegular
(
databaseResponse
.
getSqlPath
(),
databaseName
);
File
file
=
new
File
(
path
);
FileReader
fileReader
=
null
;
BufferedReader
bufferedReader
=
null
;
PreparedStatement
preparedStatement1
=
null
;
try
{
fileReader
=
new
FileReader
(
file
);
bufferedReader
=
new
BufferedReader
(
fileReader
);
String
s
;
String
sql
=
""
;
while
((
s
=
bufferedReader
.
readLine
())
!=
null
){
try
{
sql
+=
s
;
if
(
s
.
contains
(
";"
)){
preparedStatement1
=
connection1
.
prepareStatement
(
sql
);
preparedStatement1
.
execute
();
sql
=
""
;
}
}
catch
(
SQLException
e
)
{
sql
=
""
;
e
.
printStackTrace
();
continue
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
bufferedReader
.
close
();
fileReader
.
close
();
preparedStatement1
.
close
();
connection1
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
//保存迁移记录到数据库
DBRecord
dbRecord
=
new
DBRecord
();
if
(
databaseResponse
.
getSourceType
()
!=
null
){
dbRecord
.
setSourceType
(
databaseResponse
.
getSourceType
());
}
if
(
databaseResponse
.
getCreateType
()
!=
null
){
dbRecord
.
setCreateType
(
databaseResponse
.
getCreateType
());
}
if
(
databaseResponse
.
getDatabaseName
()
!=
null
){
dbRecord
.
setDbName
(
databaseResponse
.
getDatabaseName
());
}
if
(
databaseResponse
.
getUserName
()
!=
null
){
dbRecord
.
setUserName
(
databaseResponse
.
getUserName
());
}
if
(
databaseResponse
.
getSqlPath
()
!=
null
){
dbRecord
.
setSqlPath
(
databaseResponse
.
getSqlPath
());
}
dbRecord
.
setCreateSqlPath
(
path
);
dbRecord
.
setCreateTime
(
new
Date
());
dbRecord
.
setStatus
(
1
);
dbRecordDao
.
save
(
dbRecord
);
}
return
ServerResponse
.
success
();
}
/**
* 根据传入的数据库类型查询所有的数据库
* @param dbType
* @return
*/
@Override
public
ServerResponse
findDBByDBType
(
String
dbType
)
{
List
<
String
>
dbNameList
=
new
ArrayList
<>();
//highgo查询所有数据库
if
(
dbType
.
equals
(
"highgo"
)){
DBManage
databaseManagement
=
dbManageDao
.
findDatabaseManagementByDatabaseTypeAndStatus
(
dbType
,
1
);
Connection
connection
=
Regular
.
databaseConnection
(
databaseManagement
);
if
(
connection
!=
null
)
{
PreparedStatement
preparedStatement
=
null
;
try
{
String
findDB
=
"select p.datname from pg_database p where p.datistemplate = false;"
;
preparedStatement
=
connection
.
prepareStatement
(
findDB
);
preparedStatement
.
execute
();
ResultSet
resultSet
=
preparedStatement
.
getResultSet
();
while
(
resultSet
.
next
()){
dbNameList
.
add
(
resultSet
.
getString
(
1
));
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
preparedStatement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
}
return
ServerResponse
.
success
(
dbNameList
);
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/DBRecordServiceImpl.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
.
Impl
;
import
com.github.wenhao.jpa.Specifications
;
import
com.zjty.adaptationmaster.adaptor.entity.db.*
;
import
com.zjty.adaptationmaster.adaptor.repository.DBManageDao
;
import
com.zjty.adaptationmaster.adaptor.repository.DBRecordDao
;
import
com.zjty.adaptationmaster.adaptor.service.DBRecordService
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
com.zjty.adaptationmaster.utils.Regular
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.sql.Connection
;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
@Service
public
class
DBRecordServiceImpl
implements
DBRecordService
{
@Autowired
private
DBRecordDao
dbRecordDao
;
@Autowired
private
DBManageDao
dbManageDao
;
/**
* 分页条件查询
* @param dbRecordPage
* @return
*/
@Override
public
ServerResponse
pageFind
(
DBRecordPage
dbRecordPage
)
{
Specification
<
DBRecord
>
specifications
=
Specifications
.<
DBRecord
>
and
()
.
eq
(
dbRecordPage
.
getCreateType
()
!=
null
,
"createType"
,
dbRecordPage
.
getCreateType
())
.
eq
(
dbRecordPage
.
getUserName
()
!=
null
,
"userName"
,
dbRecordPage
.
getUserName
())
.
eq
(
"status"
,
1
)
.
build
();
Integer
page
=
dbRecordPage
.
getPage
();
Integer
size
=
dbRecordPage
.
getSize
();
if
(
page
==
null
||
page
<=
0
){
page
=
1
;
}
if
(
size
==
null
||
size
<=
0
){
size
=
10
;
}
Pageable
pageable
=
PageRequest
.
of
(
page
-
1
,
size
,
Sort
.
Direction
.
DESC
,
"createTime"
);
long
count
=
dbRecordDao
.
count
(
specifications
);
if
(
count
<
0
){
return
ServerResponse
.
error
();
}
return
ServerResponse
.
success
(
new
DBRecordReturn
(
count
,
dbRecordDao
.
findAll
(
specifications
,
pageable
).
getContent
()));
}
/**
* 数据库删除
* @param dbDeleteResponse
* @return
*/
@Override
@Transactional
public
ServerResponse
deleteDB
(
DBDeleteResponse
dbDeleteResponse
)
{
DBManage
dbManage
=
dbManageDao
.
findDatabaseManagementByDatabaseTypeAndStatus
(
dbDeleteResponse
.
getDbType
(),
1
);
Connection
connection
=
Regular
.
databaseConnection
(
dbManage
);
if
(
connection
!=
null
)
{
PreparedStatement
preparedStatement
=
null
;
try
{
String
findDB
=
"DROP DATABASE IF EXISTS "
+
dbDeleteResponse
.
getDbName
()+
";"
;
preparedStatement
=
connection
.
prepareStatement
(
findDB
);
preparedStatement
.
execute
();
dbRecordDao
.
delete
(
dbDeleteResponse
.
getDbName
(),
0
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
preparedStatement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
return
ServerResponse
.
success
();
}
}
src/main/java/com/zjty/adaptationmaster/utils/Regular.java
0 → 100644
浏览文件 @
144d8b21
package
com
.
zjty
.
adaptationmaster
.
utils
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
java.io.*
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
public
class
Regular
{
/**
* 将mysql导出的.sql文件转为highgo可以识别的.sql文件
* @param path sql文件地址
* @param sqlName 数据库名字
*/
public
static
String
mySqlRegular
(
String
path
,
String
sqlName
){
File
file
=
new
File
(
path
);
String
savePath
=
file
.
getParent
()
+
"/"
+
sqlName
+
".sql"
;
File
saveFile
=
new
File
(
savePath
);
FileReader
fileReader
=
null
;
BufferedReader
bufferedReader
=
null
;
FileWriter
fileWriter
=
null
;
BufferedWriter
bufferedWriter
=
null
;
try
{
fileReader
=
new
FileReader
(
file
);
bufferedReader
=
new
BufferedReader
(
fileReader
);
fileWriter
=
new
FileWriter
(
saveFile
);
bufferedWriter
=
new
BufferedWriter
(
fileWriter
);
String
s
=
""
;
boolean
database
=
true
;
//去除.sql中使用数据库的sql语句
String
tableName
=
null
;
String
incrementField
=
null
;
while
((
s
=
bufferedReader
.
readLine
())
!=
null
){
s
=
s
.
replaceAll
(
"`"
,
"\""
);
s
+=
"\r\n"
;
//转换mysql的int和bigint类型
if
(
s
.
contains
(
"int("
)
||
s
.
contains
(
"INT("
)){
String
dataType
=
s
.
substring
(
s
.
lastIndexOf
(
"\""
)
+
1
,
s
.
indexOf
(
"("
)).
trim
();
if
(
dataType
.
length
()
<=
4
){
//int类型
String
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
"("
));
String
endChar
=
s
.
substring
(
s
.
indexOf
(
")"
)
+
1
);
s
=
startChar
+
"4"
+
endChar
;
if
(
lowerAndUpper
(
s
,
"AUTO_INCREMENT"
)){
s
=
s
.
replace
(
"AUTO_INCREMENT"
,
""
);
s
=
s
.
replace
(
"auto_increment"
,
""
);
s
=
s
.
replace
(
"int4"
,
"serial"
);
s
=
s
.
replace
(
"INT4"
,
"serial"
);
incrementField
=
s
.
substring
(
s
.
indexOf
(
"\""
)
+
1
,
s
.
lastIndexOf
(
"\""
));
}
}
else
{
//bigint类型
if
(
lowerAndUpper
(
s
,
"BIGINT"
)){
String
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
"("
));
String
endChar
=
s
.
substring
(
s
.
indexOf
(
")"
)
+
1
);
s
=
startChar
+
endChar
;
if
(
lowerAndUpper
(
s
,
"AUTO_INCREMENT"
)){
s
=
s
.
replace
(
"AUTO_INCREMENT"
,
""
);
s
=
s
.
replace
(
"auto_increment"
,
""
);
s
=
s
.
replace
(
"bigint"
,
"bigserial"
);
s
=
s
.
replace
(
"BIGINT"
,
"bigserial"
);
incrementField
=
s
.
substring
(
s
.
indexOf
(
"\""
)
+
1
,
s
.
lastIndexOf
(
"\""
));
}
}
else
if
(
lowerAndUpper
(
s
,
"SMALLINT"
)){
String
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
"("
));
String
endChar
=
s
.
substring
(
s
.
indexOf
(
")"
)
+
1
);
s
=
startChar
+
endChar
;
if
(
lowerAndUpper
(
s
,
"AUTO_INCREMENT"
)){
s
=
s
.
replace
(
"AUTO_INCREMENT"
,
""
);
s
=
s
.
replace
(
"auto_increment"
,
""
);
s
=
s
.
replace
(
"SMALLINT"
,
"smallserial"
);
s
=
s
.
replace
(
"smallint"
,
"smallserial"
);
incrementField
=
s
.
substring
(
s
.
indexOf
(
"\""
)
+
1
,
s
.
lastIndexOf
(
"\""
));
}
}
}
}
//转换mysql的时间datetime类型
s
=
StringType
(
s
,
"datetime"
,
"timestamp"
);
//转换mysql的double类型
s
=
StringType
(
s
,
"double"
,
"float"
);
//插入值时boolean类型转换
if
(
s
.
contains
(
"bit(1)"
)){
s
=
s
.
replace
(
"bit(1)"
,
"boolean"
);
}
if
(
s
.
contains
(
"'\\0'"
)){
s
=
s
.
replace
(
"'\\0'"
,
"'false'"
);
}
if
(
s
.
contains
(
"'\\1'"
)){
s
=
s
.
replace
(
"'\\1'"
,
"true"
);
}
//mysql的外键key值
if
(
lowerAndUpper
(
s
,
"KEY"
)
&&
!
lowerAndUpper
(
s
,
"FOREIGN"
)
&&
!
lowerAndUpper
(
s
,
"PRIMARY"
)){
String
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
"\""
));
if
(
lowerAndUpper
(
startChar
,
"KEY"
)){
continue
;
}
}
//记录创建表时表的名字
if
(
lowerAndUpper
(
s
,
"CREATE"
)
&&
lowerAndUpper
(
s
,
"TABLE"
)){
tableName
=
s
.
substring
(
s
.
indexOf
(
"\""
)
+
1
,
s
.
lastIndexOf
(
"\""
)).
trim
();
}
//去除表类型的定义
if
(
lowerAndUpper
(
s
,
"ENGINE"
)
&&
lowerAndUpper
(
s
,
"CHARSET"
)){
if
(
lowerAndUpper
(
s
,
"AUTO_INCREMENT"
)){
String
[]
array
=
s
.
split
(
" "
);
for
(
String
a:
array
){
if
(
lowerAndUpper
(
a
.
trim
(),
"AUTO_INCREMENT"
)){
String
num
=
a
.
substring
(
a
.
indexOf
(
"="
)
+
1
);
String
alterIncrementInital
=
"SELECT setval('\""
+
tableName
+
"_"
+
incrementField
+
"_seq\"',"
+
(
Integer
.
parseInt
(
num
)
-
1
)
+
", true);\r\n"
;
s
=
");\r\n"
;
s
=
s
+
alterIncrementInital
;
}
}
}
else
{
s
=
");\r\n"
;
}
}
//去除.sql中使用数据库的sql语句
if
(
s
.
contains
(
"USE"
)
&&
s
.
contains
(
";"
)
&&
s
.
contains
(
"\""
)
&&
database
){
database
=
false
;
}
else
{
bufferedWriter
.
write
(
s
);
}
}
bufferedWriter
.
flush
();
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
bufferedReader
.
close
();
fileReader
.
close
();
bufferedWriter
.
close
();
fileWriter
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
savePath
;
}
/**
* 判断大写和小写
*/
public
static
boolean
lowerAndUpper
(
String
s
,
String
upper
){
if
(
s
.
contains
(
upper
)
||
s
.
contains
(
upper
.
toLowerCase
())){
return
true
;
}
else
{
return
false
;
}
}
/**
* 判断出入的字符串
* @param s
*/
public
static
String
StringType
(
String
s
,
String
lowerCase
,
String
replacement
){
String
startChar
;
String
endChar
;
String
upperCase
=
lowerCase
.
toUpperCase
();
if
(
s
.
contains
(
lowerCase
)){
//小写
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
lowerCase
));
endChar
=
s
.
substring
(
s
.
indexOf
(
lowerCase
)
+
1
);
if
(
startChar
.
contains
(
"\""
)
&&
!
endChar
.
contains
(
"\""
)){
return
s
.
replaceAll
(
lowerCase
,
replacement
);
}
}
else
if
(
s
.
contains
(
upperCase
)){
//大写
startChar
=
s
.
substring
(
0
,
s
.
indexOf
(
upperCase
));
endChar
=
s
.
substring
(
s
.
indexOf
(
upperCase
)
+
1
);
if
(
startChar
.
contains
(
"\""
)
&&
!
endChar
.
contains
(
"\""
)){
return
s
.
replaceAll
(
upperCase
,
replacement
);
}
}
return
s
;
}
/**
* 自增整数,转换为highgo的自增整数
* @param s
*/
public
static
String
integerIncrement
(
String
s
,
String
integerType
){
if
(
lowerAndUpper
(
s
,
"AUTO_INCREMENT"
)){
if
(
integerType
.
equals
(
"int4"
)){
s
=
s
.
replace
(
integerType
,
"serial"
);
}
else
{
s
=
s
.
replace
(
integerType
,
"bigserial"
);
}
s
=
s
.
replace
(
"AUTO_INCREMENT"
,
""
);
s
=
s
.
replace
(
"auto_increment"
,
""
);
}
return
s
;
}
/**
* 数据库连接
* @param
*/
public
static
Connection
databaseConnection
(
DBManage
databaseManagement
){
Connection
connection
=
null
;
try
{
Class
.
forName
(
databaseManagement
.
getDriver
());
String
connectionUrl
=
"jdbc:"
+
databaseManagement
.
getConnectionType
()
+
":"
+
"//"
+
databaseManagement
.
getAddress
()
+
":"
+
databaseManagement
.
getPort
()
+
"/"
+
databaseManagement
.
getDatabaseName
();
connection
=
DriverManager
.
getConnection
(
connectionUrl
,
databaseManagement
.
getUserName
(),
databaseManagement
.
getPassword
());
return
connection
;
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
void
main
(
String
[]
args
)
{
mySqlRegular
(
"C:\\Users\\admin\\Desktop\\2.sql"
,
"else"
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论