提交 6aaeccf7 authored 作者: czq's avatar czq

Merge branch 'master' of 192.168.1.249:ty_wyl/adaptation-master1 into czq

...@@ -2,7 +2,6 @@ package com.zjty.adaptationmaster; ...@@ -2,7 +2,6 @@ package com.zjty.adaptationmaster;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication @SpringBootApplication
public class AdaptationMasterApplication { public class AdaptationMasterApplication {
......
...@@ -19,8 +19,8 @@ public class DBMigrateController { ...@@ -19,8 +19,8 @@ public class DBMigrateController {
} }
@PutMapping("/find") @PutMapping("/find")
public ServerResponse find(@RequestBody String dbType){ public ServerResponse find(@RequestBody Integer id){
return dbMigrateService.findDBByDBType(dbType); return dbMigrateService.findDBByDBType(id);
} }
} }
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.service.FileUploadService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/file")
public class FileUploadController {
@Autowired
private FileUploadService fileUploadService;
//文件上传
@PutMapping("/upload")
public ServerResponse fileUpload(HttpServletRequest httpServletRequest){
return fileUploadService.fileUpload(httpServletRequest);
}
}
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class FileReturn {
private String name;//上传文件名称
private String path;//上传文件地址
}
package com.zjty.adaptationmaster.adaptor.entity;
import org.springframework.context.ApplicationContext;
public class SystemVariable {
public static ApplicationContext context;
}
...@@ -10,4 +10,5 @@ import lombok.NoArgsConstructor; ...@@ -10,4 +10,5 @@ import lombok.NoArgsConstructor;
public class DBDeleteResponse { public class DBDeleteResponse {
private String dbName;//数据库名称 private String dbName;//数据库名称
private String dbType;//数据库类型 private String dbType;//数据库类型
private Integer id;
} }
...@@ -4,10 +4,7 @@ import lombok.AllArgsConstructor; ...@@ -4,10 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity; import javax.persistence.*;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
...@@ -17,13 +14,17 @@ public class DBManage { ...@@ -17,13 +14,17 @@ public class DBManage {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
private String databaseName;//数据库名字 private String configName;//配置名称
private String userName;//用户名 private String userName;//用户名
private String password;//密码 private String password;//密码
private String databaseType;//数据库类型 private String databaseType;//数据库类型
private String driver;//数据库驱动
private String address;//连接地址 private String address;//连接地址
private String port;//数据库端口号 private String port;//数据库端口号
@Transient
private String databaseName;//可连接数据库名字
@Transient
private String connectionType;//数据库连接时的sql private String connectionType;//数据库连接时的sql
@Transient
private String driver;//数据库驱动
private Integer status;//逻辑删除 0-删除 1-未删除 private Integer status;//逻辑删除 0-删除 1-未删除
} }
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 DBNameReturn {
List<String> dbName;
Integer status;//连接状态1-连接0-未连接
}
...@@ -12,5 +12,5 @@ public class DatabaseResponse { ...@@ -12,5 +12,5 @@ public class DatabaseResponse {
private String sourceType;//原库类型 private String sourceType;//原库类型
private String createType;//生成库类型 private String createType;//生成库类型
private String sqlPath;//上传数据库地址 private String sqlPath;//上传数据库地址
private String userName;//用户名 private Integer id;//用户ID
} }
...@@ -10,7 +10,7 @@ import java.util.List; ...@@ -10,7 +10,7 @@ import java.util.List;
public interface DBManageDao extends JpaRepository<DBManage,Integer> { public interface DBManageDao extends JpaRepository<DBManage,Integer> {
DBManage findDatabaseManagementByDatabaseTypeAndStatus(String databaseType, Integer status); DBManage findDBManageByIdAndStatus(Integer id,Integer status);
List<DBManage> findDatabaseManagementByStatus(Integer status); List<DBManage> findDatabaseManagementByStatus(Integer status);
......
...@@ -8,6 +8,6 @@ public interface DBMigrateService { ...@@ -8,6 +8,6 @@ public interface DBMigrateService {
ServerResponse dbMigrate(DatabaseResponse databaseResponse); ServerResponse dbMigrate(DatabaseResponse databaseResponse);
ServerResponse findDBByDBType(String dbType); ServerResponse findDBByDBType(Integer id);
} }
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import javax.servlet.http.HttpServletRequest;
public interface FileUploadService {
ServerResponse fileUpload(HttpServletRequest request);
}
package com.zjty.adaptationmaster.adaptor.service.Impl; package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.DBNameReturn;
import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord; import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord;
import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse; import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse;
import com.zjty.adaptationmaster.adaptor.repository.DBManageDao; import com.zjty.adaptationmaster.adaptor.repository.DBManageDao;
...@@ -10,8 +9,10 @@ import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao; ...@@ -10,8 +9,10 @@ import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
import com.zjty.adaptationmaster.adaptor.service.DBMigrateService; import com.zjty.adaptationmaster.adaptor.service.DBMigrateService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Regular; import com.zjty.adaptationmaster.utils.Regular;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.BufferedReader; import java.io.BufferedReader;
...@@ -26,6 +27,7 @@ import java.util.Date; ...@@ -26,6 +27,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
@Slf4j
public class DBMigrateServiceImpl implements DBMigrateService { public class DBMigrateServiceImpl implements DBMigrateService {
@Autowired @Autowired
...@@ -33,6 +35,13 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -33,6 +35,13 @@ public class DBMigrateServiceImpl implements DBMigrateService {
@Autowired @Autowired
private DBRecordDao dbRecordDao; private DBRecordDao dbRecordDao;
@Value("${highgo.driver}")
private String highgoDriver;
@Value("${highgo.connectionType}")
private String highgoConnnectionType;
@Value("${highgo.dbName}")
private String highgoDBName;
/** /**
* 创建新数据库和数据库中的表 * 创建新数据库和数据库中的表
*/ */
...@@ -41,7 +50,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -41,7 +50,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
if(databaseResponse != null && databaseResponse.getDatabaseName() != null){ if(databaseResponse != null && databaseResponse.getDatabaseName() != null){
String databaseName = databaseResponse.getDatabaseName(); String databaseName = databaseResponse.getDatabaseName();
//查询新建的数据库是否存在 //查询新建的数据库是否存在
ServerResponse serverResponse = findDBByDBType(databaseResponse.getCreateType()); ServerResponse serverResponse = findDBByDBType(databaseResponse.getId());
Object obj = serverResponse.getData(); Object obj = serverResponse.getData();
List<String> dbNameList = new ArrayList<>(); List<String> dbNameList = new ArrayList<>();
if(obj instanceof ArrayList<?>){ if(obj instanceof ArrayList<?>){
...@@ -50,16 +59,20 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -50,16 +59,20 @@ public class DBMigrateServiceImpl implements DBMigrateService {
} }
} }
if(dbNameList.contains(databaseName)){ if(dbNameList.contains(databaseName)){
return ServerResponse.error("该数据库已存在,请重新填写"); log.info("该数据库已存在,请重新填写数据库名称");
return ServerResponse.error("该数据库已存在,请重新填写数据库名称");
} }
//转换后的.sql文件地址 //转换后的.sql文件地址
String path = ""; String path = "";
//根据传入的生成数据库类型,查找未被删除的配置文件
DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(databaseResponse.getId(),1);
//mysql数据库 //mysql数据库
if(databaseResponse.getCreateType().equals("highgo") && databaseResponse.getSourceType().equals("mysql")){ if(databaseResponse.getCreateType().equals("highgo") && databaseResponse.getSourceType().equals("mysql")){
//生成数据库的名称 //生成数据库的名称
//连接系统数据库,建立新数据库 //连接系统数据库,建立新数据库
//根据传入的生成数据库类型,查找未被删除的配置文件 databaseManagement.setDatabaseName(highgoDBName);
DBManage databaseManagement = dbManageDao.findDatabaseManagementByDatabaseTypeAndStatus(databaseResponse.getCreateType(),1); databaseManagement.setDriver(highgoDriver);
databaseManagement.setConnectionType(highgoConnnectionType);
Connection connection = Regular.databaseConnection(databaseManagement); Connection connection = Regular.databaseConnection(databaseManagement);
if(connection != null){ if(connection != null){
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
...@@ -69,6 +82,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -69,6 +82,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
preparedStatement.execute(); preparedStatement.execute();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
log.info("创建数据库:" + databaseName + "出错");
return ServerResponse.error("创建数据库:" + databaseName + "出错"); return ServerResponse.error("创建数据库:" + databaseName + "出错");
}finally { }finally {
try { try {
...@@ -98,24 +112,18 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -98,24 +112,18 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try { try {
sql += s; sql += s;
if(s.contains(";")){ if(s.contains(";")){
/*if(Regular.lowerAndUpper(sql,"CREATE") && Regular.lowerAndUpper(sql,"TABLE")){
String endChar = sql.substring(sql.lastIndexOf("\"") + 1);
if(endChar.contains(",")){
String start = sql.substring(0,sql.lastIndexOf(","));
String end = sql.substring(sql.lastIndexOf(",") + 1);
sql = start + end;
}
}*/
preparedStatement1 = connection1.prepareStatement(sql); preparedStatement1 = connection1.prepareStatement(sql);
preparedStatement1.execute(); preparedStatement1.execute();
sql = ""; sql = "";
} }
}catch (SQLException e) { }catch (SQLException e) {
log.info("sql执行出错语句:" + sql);
sql = ""; sql = "";
e.printStackTrace(); e.printStackTrace();
continue; continue;
} }
} }
log.info(databaseResponse.getSqlPath() + "执行完成");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
...@@ -129,6 +137,8 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -129,6 +137,8 @@ public class DBMigrateServiceImpl implements DBMigrateService {
} }
} }
} }
}else {
return ServerResponse.error("创建数据库时连接数据库失败");
} }
} }
//保存迁移记录到数据库 //保存迁移记录到数据库
...@@ -142,8 +152,8 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -142,8 +152,8 @@ public class DBMigrateServiceImpl implements DBMigrateService {
if(databaseResponse.getDatabaseName() != null){ if(databaseResponse.getDatabaseName() != null){
dbRecord.setDbName(databaseResponse.getDatabaseName()); dbRecord.setDbName(databaseResponse.getDatabaseName());
} }
if(databaseResponse.getUserName() != null){ if(databaseManagement.getUserName() != null){
dbRecord.setUserName(databaseResponse.getUserName()); dbRecord.setUserName(databaseManagement.getUserName());
} }
if(databaseResponse.getSqlPath() != null){ if(databaseResponse.getSqlPath() != null){
dbRecord.setSqlPath(databaseResponse.getSqlPath()); dbRecord.setSqlPath(databaseResponse.getSqlPath());
...@@ -158,17 +168,22 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -158,17 +168,22 @@ public class DBMigrateServiceImpl implements DBMigrateService {
/** /**
* 根据传入的数据库类型查询所有的数据库 * 根据传入的数据库类型查询所有的数据库
* @param dbType * @param id
* @return * @return
*/ */
@Override @Override
public ServerResponse findDBByDBType(String dbType) { public ServerResponse findDBByDBType(Integer id) {
List<String> dbNameList = new ArrayList<>(); List<String> dbNameList = new ArrayList<>();
DBNameReturn dbNameReturn = new DBNameReturn();
DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(id, 1);
//highgo查询所有数据库 //highgo查询所有数据库
if(dbType.equals("highgo")){ if(databaseManagement.getDatabaseType().equals("highgo")){
DBManage databaseManagement = dbManageDao.findDatabaseManagementByDatabaseTypeAndStatus(dbType, 1); databaseManagement.setDatabaseName(highgoDBName);
databaseManagement.setDriver(highgoDriver);
databaseManagement.setConnectionType(highgoConnnectionType);
Connection connection = Regular.databaseConnection(databaseManagement); Connection connection = Regular.databaseConnection(databaseManagement);
if (connection != null) { if (connection != null) {
dbNameReturn.setStatus(1);
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try { try {
String findDB = "select p.datname from pg_database p where p.datistemplate = false;"; String findDB = "select p.datname from pg_database p where p.datistemplate = false;";
...@@ -188,8 +203,11 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -188,8 +203,11 @@ public class DBMigrateServiceImpl implements DBMigrateService {
e.printStackTrace(); e.printStackTrace();
} }
} }
}else {
dbNameReturn.setStatus(0);//未连接
} }
} }
return ServerResponse.success(dbNameList); dbNameReturn.setDbName(dbNameList);
return ServerResponse.success(dbNameReturn);
} }
} }
...@@ -62,7 +62,7 @@ public class DBRecordServiceImpl implements DBRecordService { ...@@ -62,7 +62,7 @@ public class DBRecordServiceImpl implements DBRecordService {
@Override @Override
@Transactional @Transactional
public ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse) { public ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse) {
DBManage dbManage = dbManageDao.findDatabaseManagementByDatabaseTypeAndStatus(dbDeleteResponse.getDbType(),1); DBManage dbManage = dbManageDao.findDBManageByIdAndStatus(dbDeleteResponse.getId(),1);
Connection connection = Regular.databaseConnection(dbManage); Connection connection = Regular.databaseConnection(dbManage);
if (connection != null) { if (connection != null) {
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
......
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.FileReturn;
import com.zjty.adaptationmaster.adaptor.service.FileUploadService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Service
public class FileUploadServiceImpl implements FileUploadService {
/**
* 前台文件上传
* @param request
* @return
*/
@Override
public ServerResponse fileUpload(HttpServletRequest request) {
List<MultipartFile> multipartFiles = ((MultipartHttpServletRequest)request).getFiles("file");
List<FileReturn> fileReturns = new ArrayList<>();
for(MultipartFile multipartFile:multipartFiles){
InputStream is = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
FileReturn fileReturn = new FileReturn();
String sourceName = multipartFile.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + ".sql";
//不存在该目录,创建目录
File file = new File("/sqlFile/uploads");
if(!file.exists()){
file.mkdirs();
}
String savePath = file.getAbsolutePath() + "/" + fileName;
fileReturn.setName(sourceName);
fileReturn.setPath(savePath);
fileReturns.add(fileReturn);
File createFile = new File(savePath);
try {
is = multipartFile.getInputStream();
bis = new BufferedInputStream(is);
fos = new FileOutputStream(createFile);
bos = new BufferedOutputStream(fos);
int len = -1;
byte[] b = new byte[1024];
while ((len = bis.read(b)) != -1){
bos.write(b,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bis.close();
is.close();
bos.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return ServerResponse.success(fileReturns);
}
}
...@@ -20,7 +20,7 @@ logging.file.path=./log/master.log ...@@ -20,7 +20,7 @@ logging.file.path=./log/master.log
# 指jpa对表生成的策略 # 指jpa对表生成的策略
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
# 是否显示sql语句 # 是否显示sql语句
spring.jpa.show-sql=true spring.jpa.show-sql=false
# 格式化sql # 格式化sql
spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.format_sql=true
spring.jpa.open-in-view=true spring.jpa.open-in-view=true
...@@ -34,3 +34,8 @@ spring.servlet.multipart.max-request-size=100MB ...@@ -34,3 +34,8 @@ spring.servlet.multipart.max-request-size=100MB
spring.thymeleaf.cache=false spring.thymeleaf.cache=false
spring.mvc.static-path-pattern=/** spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/uploads/ spring.resources.static-locations=classpath:/uploads/
#highgo
highgo.driver=org.postgresql.Driver
highgo.connectionType=postgresql
highgo.dbName=template1
\ No newline at end of file
...@@ -2,16 +2,13 @@ package com.zjty.adaptationmaster; ...@@ -2,16 +2,13 @@ package com.zjty.adaptationmaster;
public class Test4 { public class Test4 {
public static void main(String[] args) { public static void main(String[] args) {
String a = "CREATE TABLE \"routine_human_list\" (\n" + String a = "sdaf = df ccc = 18 adfasdf = utf8";
" \"routine_routine_id\" varchar(255) NOT NULL,\n" + int begin= a.indexOf("ccc");
" \"human_list\" varchar(255) DEFAULT NULL,\n" + for(int i = begin;i < a.length();i++){
")"; String m = a.charAt(i) + "";
String endChar = a.substring(a.lastIndexOf("\"") + 1); if(m.matches("\\d")){
if(endChar.contains(",")){ System.out.println(m);
String start = a.substring(0,a.lastIndexOf(",")); }
String end = a.substring(a.lastIndexOf(",") + 1);
a = start + end;
System.out.println(a);
} }
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论