提交 b63183aa authored 作者: wyl's avatar wyl

merge

......@@ -152,6 +152,11 @@
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
......
package com.zjty.adaptationmaster;
import com.zjty.adaptationmaster.base.enums.Const;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
......
......@@ -31,6 +31,9 @@ public class Project {
private String sourceDB;//原数据库
private String createTypeDB;//目标数据库
private String createMiddleware;//目标中间件
private String operatingSystem;//操作系统
private String cpu;//cpu
private String projectEntry;//项目入口
private String codeUrl;//当前源码源码路径
......
package com.zjty.adaptationmaster.adaptor.entity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.utils.Assessor;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import com.zjty.adaptationmaster.utils.Inspector;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -24,7 +23,7 @@ public class Report {
private DatabaseType databaseType;//数据库类型
private int fileNum;
private long lineNum;
private List<Dependency> dependencies;
private List<PomDependency> dependencies;
@Transient
private ProjectPom projectPom;
......
package com.zjty.adaptationmaster.adaptor.entity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.utils.Inspector;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List;
/**
* 返回
......
package com.zjty.adaptationmaster.adaptor.entity.db;
public class DBName {
public static String highgoName = "highgo";
}
......@@ -11,5 +11,5 @@ import java.util.List;
@Data
public class DBNameReturn {
List<String> dbName;
Integer status;//连接状态1-连接0-未连接
Integer status;//连接状态1-开启 0-关闭
}
......@@ -22,12 +22,12 @@ public class SQLExecuteTask implements Runnable{
public void run() {
Connection connection = null;
PreparedStatement preparedStatement = null;
//String unRecordSql = "SET LOCAL fsync TO OFF;";
String unRecordSql = "SET LOCAL synchronous_commit TO OFF;";
try {
connection = Regular.databaseConnection(dbManage);
//不记录日志,加快insert速度
//preparedStatement = connection.prepareStatement(unRecordSql);
//preparedStatement.execute();
//将数据库临时设置为异步提交,不等待wal日志完成就返回成功响应
preparedStatement = connection.prepareStatement(unRecordSql);
preparedStatement.execute();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setQueryTimeout(10);
preparedStatement.execute();
......
package com.zjty.adaptationmaster.adaptor.entity.pomEntity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Parent;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -36,7 +36,7 @@ public class PomAnalysis {
//private List<Module> modules;//模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
//private List<Repository> repositories;//发现依赖和扩展的远程仓库列表
//private List<PluginRepository> pluginRepositiries;//发现插件的远程仓库列表,这些插件用于构建和报表
private List<Dependency> dependencies;
private List<PomDependency> dependencies;
//private Repoting repoting;//该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接
//private DependencyManagement dependencyManagement;//继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息
//private DistributionManagement distributionManagement;//项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库
......
......@@ -4,8 +4,6 @@ import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;
@NoArgsConstructor
......@@ -36,7 +34,7 @@ public class ProjectPom {
//private List<Module> modules;//模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
//private List<Repository> repositories;//发现依赖和扩展的远程仓库列表
//private List<PluginRepository> pluginRepositiries;//发现插件的远程仓库列表,这些插件用于构建和报表
private List<Dependency> dependencies;
private List<PomDependency> dependencies;
//private Repoting repoting;//该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接
//private DependencyManagement dependencyManagement;//继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息
//private DistributionManagement distributionManagement;//项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库
......
......@@ -11,7 +11,7 @@ import java.util.List;
@Entity
@NoArgsConstructor
@Data
public class Dependency {
public class PomDependency {
@Id
@GeneratedValue
......@@ -64,6 +64,6 @@ public class Dependency {
// }
//private List<Dependency> parentDependencies;//
//private List<PomDependency> parentDependencies;//
//private int reportId;
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface PomDependencyDao extends JpaRepository<Dependency,Integer> {
public interface PomDependencyDao extends JpaRepository<PomDependency,Integer> {
List<Dependency> findAllByReportIdEquals(Integer id);
List<PomDependency> findAllByReportIdEquals(Integer id);
}
......@@ -3,6 +3,7 @@ package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.db.DBDeleteResponse;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.DBName;
import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord;
import com.zjty.adaptationmaster.adaptor.repository.DBManageDao;
import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
......@@ -78,7 +79,7 @@ public class DBManageServiceImpl implements DBManageService {
@Transactional
public ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse) {
DBManage dbManage = databaseDao.findDBManageByIdAndStatus(dbDeleteResponse.getId(),1);
if(dbDeleteResponse.getDbType().equals("highgo")){
if(dbDeleteResponse.getDbType().equals(DBName.highgoName)){
dbManage.setDatabaseName(highgoDBName);
dbManage.setDriver(highgoDriver);
dbManage.setConnectionType(highgoConnnectionType);
......
......@@ -75,8 +75,8 @@ public class DBMigrateServiceImpl implements DBMigrateService {
String path = "";
//根据传入的生成数据库类型,查找未被删除的配置文件
DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(databaseResponse.getId(),1);
//mysql数据库
if(databaseResponse.getCreateType().equals("highgo") && databaseResponse.getSourceType().equals("mysql")){
//源数据库:mysql数据库 目标数据库:highgo
if(databaseResponse.getCreateType().equals(DBName.highgoName) && databaseResponse.getSourceType().equals("mysql")){
//生成数据库的名称
//连接系统数据库,建立新数据库
databaseManagement.setDatabaseName(highgoDBName);
......@@ -157,9 +157,13 @@ public class DBMigrateServiceImpl implements DBMigrateService {
createTableSql += create;
}
}
try {
preparedStatement1 = connection1.prepareStatement(createTableSql);
preparedStatement1.execute();
//插入
}catch (Exception e){
return ServerResponse.error("创建表出错");
}
//数据插入
if(insertList != null && insertList.size() != 0){
for(String insert:insertList){
int insertIndex = insert.indexOf("\"") + 1;
......@@ -193,8 +197,12 @@ public class DBMigrateServiceImpl implements DBMigrateService {
elseSql += elseChar;
}
}
try {
preparedStatement1 = connection1.prepareStatement(elseSql);
preparedStatement1.execute();
}catch (Exception e){
return ServerResponse.error("执行新建索引和外键的sql语句出错");
}
System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b));
log.info(databaseResponse.getSqlPath() + "执行完成");
} catch (Exception e) {
......@@ -211,7 +219,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
}
}
}else {
return ServerResponse.error("创建数据库时连接数据库失败");
return ServerResponse.error("创建数据库时连接数据库失败");
}
}
//保存迁移记录到数据库
......@@ -250,13 +258,14 @@ public class DBMigrateServiceImpl implements DBMigrateService {
DBNameReturn dbNameReturn = new DBNameReturn();
DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(id, 1);
//highgo查询所有数据库
if(databaseManagement.getDatabaseType().equals("highgo")){
if(databaseManagement.getDatabaseType().equals(DBName.highgoName)){
databaseManagement.setDatabaseName(highgoDBName);
databaseManagement.setDriver(highgoDriver);
databaseManagement.setConnectionType(highgoConnnectionType);
//获取数据库连接
Connection connection = Regular.databaseConnection(databaseManagement);
if (connection != null) {
dbNameReturn.setStatus(1);
dbNameReturn.setStatus(1);//1-库为开启状态
PreparedStatement preparedStatement = null;
try {
String findDB = "select p.datname from pg_database p where p.datistemplate = false;";
......@@ -277,7 +286,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
}
}
}else {
dbNameReturn.setStatus(0);//未连接
dbNameReturn.setStatus(0);//关闭
}
}
dbNameReturn.setDbName(dbNameList);
......
......@@ -5,8 +5,8 @@ import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.ReportEntity;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.repository.PomDependencyDao;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.repository.ReportDao;
import com.zjty.adaptationmaster.adaptor.service.InspectService;
......@@ -108,8 +108,8 @@ public class InspectServiceImpl implements InspectService {
ReportEntity reportEntitySave = reportDao.save(reportEntity);
Project one = projectDao.getOne(project.getId());
List<Dependency> dependencies = report.getDependencies();
for (Dependency dependency : dependencies) {
List<PomDependency> dependencies = report.getDependencies();
for (PomDependency dependency : dependencies) {
dependency.setReportId(reportEntitySave.getId());
}
pomDependencyDao.saveAll(dependencies);
......@@ -125,7 +125,7 @@ public class InspectServiceImpl implements InspectService {
ReportEntity one = reportDao.getOne(id);
Report report = new Report();
List<Dependency> allByReportIdEquals = pomDependencyDao.findAllByReportIdEquals(id);
List<PomDependency> allByReportIdEquals = pomDependencyDao.findAllByReportIdEquals(id);
report.setId(one.getId());
report.setDependencies(allByReportIdEquals);
report.setDatabaseType(one.getDatabaseType());
......
......@@ -2,6 +2,7 @@ package com.zjty.adaptationmaster.base.enums;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Map;
......@@ -40,7 +41,26 @@ public class Const {
public static Map<String,Long> transferCountMap = new ConcurrentHashMap<>();
public static final String MAVENHOME = "/opt/apache-maven-3.5.4";
public static final String CTLPATH = "/home/taiyuan/桌面/AAS-V9.0/bin/appctl";
public static final String CTLPWD = "Qwert123!@#";
//linux环境
//public static final String MAVENHOME = "/opt/apache-maven-3.5.4";
//public static final String CTLPATH = "/home/taiyuan/桌面/AAS-V9.0/bin/appctl";
//windows环境
/* public static String MAVENHOME = "/Program Files/apache-maven-3.5.4-bin/apache-maven-3.5.4";
public static String CTLPATH = "/home/user/AAS-V9.0/bin/appctl.cmd";
public static String CTLPWD = "Qwert123!@#";*/
public static String MAVENHOME ;
public static String CTLPATH;
public static String CTLPWD;
@Value("${mavenHome.path}")
public void setMAVENHOME(String path){
MAVENHOME = path;
}
@Value("${CTLPATH}")
public void setCTLPATH(String path){
CTLPATH = path;
}
@Value("${CTLPWD}")
public void setCTLPWD(String password){
CTLPWD = password;
}
}
package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import java.nio.file.Path;
import java.util.ArrayList;
......@@ -9,8 +9,8 @@ import java.util.List;
public class AnalysisPom {
public static ProjectPom analysis(Path pomPath){
List<Dependency> dependencies = new ArrayList<>();
Dependency dependency = new Dependency();
List<PomDependency> dependencies = new ArrayList<>();
PomDependency dependency = new PomDependency();
dependency.setGroupId("aaa.bbb");
dependency.setArtifactId("ccc.ddd");
dependency.setVersion("1.0.0");
......
......@@ -41,7 +41,7 @@ public class ApusicDeployer {
boolean titleEnd = false;
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
//System.out.println(line);
if(line.contains("---------------")){
titleEnd = true;
continue;
......@@ -74,6 +74,7 @@ public class ApusicDeployer {
}
private void appctl(String command,String webSocketName,String projectName){
try {
System.out.println(command);
Process exec = Runtime.getRuntime().exec(command);
String password = Const.CTLPWD;
OutputStream outputStream = exec.getOutputStream();
......
......@@ -5,7 +5,7 @@ import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import com.zjty.adaptationmaster.base.enums.Const;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -32,9 +32,6 @@ import java.util.*;
* 生成报告VO
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Inspector {
public static void main(String[] args) {
......@@ -256,7 +253,7 @@ public class Inspector {
* 对于具体的配置文件对应的处理方法
* 增加要处理的文件类型需要在这里增加相应的处理方法
*/
ArrayList<Dependency> dependencies1 = new ArrayList<>();
ArrayList<PomDependency> dependencies1 = new ArrayList<>();
for(Map.Entry<String,List<Path>> entry:configFileTypePathsMapping.entrySet()){
//System.out.println(entry.getKey());
......@@ -277,7 +274,7 @@ public class Inspector {
//解析pom文件
ProjectPom analysis = AnalysisPom.analysis(path);
//设置依赖
List<Dependency> dependencies = analysis.getDependencies();
List<PomDependency> dependencies = analysis.getDependencies();
dependencies1.addAll(dependencies);
SAXReader reader = new SAXReader();
......@@ -454,7 +451,7 @@ public class Inspector {
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Warn{
public class Warn{
private String path;
private int line;
private String keyWord;
......
......@@ -7,10 +7,22 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
public class Regular {
private static HashMap<String,String> insertRule = new HashMap<>();
private static String[] insertKeys;
private static String[] insertValues;
private static HashMap<String,String> elseRule = new HashMap<>();
/**
* 将mysql导出的.sql文件转为highgo可以识别的.sql文件
* @param path sql文件地址
......@@ -43,17 +55,12 @@ public class Regular {
String createTableSql = "";
boolean createLock = true;
boolean executeOne = true;
setInsertRuleMap();//insert的替换规则
while ((s = bufferedReader.readLine()) != null){
s = s.replaceAll("`","\"");
s += "\r\n";
if(lowerAndUpper(s,"INSERT") && lowerAndUpper(s,"INTO")){
//将\0与\1替换为true或false
s = s.replace("'\\0'","'false'");
s = s.replace("'\\1'","'true'");
s = s.replaceAll("'0000-00-00 00:00:00'","null");
s = s.replace("\\\\","\\");//转义\
s = s.replace("\\\"","\"");//转义"
s = s.replace("\\'","''");//转义'
s = StringUtils.replaceEach(s, insertKeys, insertValues);
bufferedWriter.write(s);
continue;
}
......@@ -212,6 +219,27 @@ public class Regular {
return savePath;
}
/**
* insert的替换规则
*/
public static void setInsertRuleMap(){
//将\0与\1替换为true或false
insertRule.put("'\\0'","'false'");
insertRule.put("'\\1'","'true'");
insertRule.put("'0000-00-00 00:00:00'","null");
insertRule.put("\\\\","\\");
insertRule.put("\\\"","\"");
insertRule.put("\\'","''");
int i = 0;
insertKeys = new String[insertRule.size()];
insertValues = new String[insertRule.size()];
for(Map.Entry<String,String> stringMap:insertRule.entrySet()){
insertKeys[i] = stringMap.getKey();
insertValues[i] = stringMap.getValue();
i++;
}
}
/**
* 判断大写和小写
*/
......@@ -287,8 +315,7 @@ public class Regular {
return null;
}
public static void main(String[] args) {
mySqlRegular("C:\\Users\\admin\\Desktop\\database\\three.sql","three");
mySqlRegular("C:\\Users\\admin\\Desktop\\database\\test10.sql","bserver");
}
}
......@@ -5,3 +5,9 @@ spring.datasource.url=jdbc:mysql://localhost:3306/adaptation?useSSL=false&server
spring.datasource.username=root
spring.datasource.password=root
#maven环境
mavenHome.path=/Program Files/apache-maven-3.5.4-bin/apache-maven-3.5.4
#金碟环境和密码
CTLPATH=/home/user/AAS-V9.0/bin/appctl.cmd
CTLPWD=Qwert123!@#
......@@ -4,4 +4,8 @@ spring.datasource.url=jdbc:postgresql://localhost:5866/adaptation?useSSL=false&s
spring.datasource.username=sysdba
spring.datasource.password=highgo@123
MAVENHOME=/opt/apache-maven-3.5.4
CTLPATH=/home/taiyuan/桌面/AAS-V9.0/bin/appctl
CTLPWD=Qwert123!@#
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论