提交 910c0a3f authored 作者: wyl's avatar wyl

极简版规则

...@@ -90,6 +90,11 @@ ...@@ -90,6 +90,11 @@
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.6</version> <version>2.6</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.8.1</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId> <artifactId>spring-websocket</artifactId>
......
package com.zjty.adaptationmaster.adaptor.controller; package com.zjty.adaptationmaster.adaptor.controller;
import com.alibaba.fastjson.JSON;
import com.zjty.adaptationmaster.adaptor.entity.AdaptRequest;
import com.zjty.adaptationmaster.adaptor.entity.Project; import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.service.AdaptationService; import com.zjty.adaptationmaster.adaptor.service.AdaptationService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@Controller @RestController
@RequestMapping("/adapt") @RequestMapping("/adapt")
public class AdaptationController { public class AdaptationController {
@GetMapping("/getUUID") @GetMapping("/getUUID")
...@@ -24,27 +24,29 @@ public class AdaptationController { ...@@ -24,27 +24,29 @@ public class AdaptationController {
@Autowired @Autowired
private AdaptationService adaptationService; private AdaptationService adaptationService;
@PostMapping("/adapt") @PostMapping("/adapt")
public ServerResponse adapt(Project project, List<Rule> ruleList,String uuid) throws IOException { public ServerResponse adapt(@RequestBody AdaptRequest adaptRequest) throws IOException {
return adaptationService.adapt(project,ruleList,uuid); return adaptationService.adapt(adaptRequest.getProject(),adaptRequest.getRuleList(),adaptRequest.getUuid());
} }
@PostMapping("/compile") @PostMapping("/compile")
public ServerResponse compile(Project project,String uuid){ public ServerResponse compile(@RequestBody AdaptRequest adaptRequest){
return adaptationService.compile(project,uuid); System.out.print("编译");
System.out.print(JSON.toJSONString(adaptRequest));
return adaptationService.compile(adaptRequest.getProject(),adaptRequest.getUuid());
} }
@PostMapping("/deploy") @PostMapping("/deploy")
public ServerResponse deploy(Project project,String uuid){ public ServerResponse deploy(@RequestBody AdaptRequest adaptRequest){
return adaptationService.deploy(project,uuid); return adaptationService.deploy(adaptRequest.getProject(),adaptRequest.getUuid());
} }
@PostMapping("/startInApusic") @PostMapping("/startInApusic")
public ServerResponse startInApusic(Project project,String uuid){ public ServerResponse startInApusic(@RequestBody AdaptRequest adaptRequest){
return adaptationService.start(project,uuid); return adaptationService.start(adaptRequest.getProject(),adaptRequest.getUuid());
} }
@PostMapping("/stopInApusic") @PostMapping("/stopInApusic")
public ServerResponse stopInApusic(Project project,String uuid){ public ServerResponse stopInApusic(@RequestBody AdaptRequest adaptRequest){
return adaptationService.stop(project,uuid); return adaptationService.stop(adaptRequest.getProject(),adaptRequest.getUuid());
} }
@PostMapping("/unzipProject") @PostMapping("/unzipProject")
public ServerResponse unZipProject(String path,Project project){ public ServerResponse unZipProject(@RequestBody AdaptRequest adaptRequest){
return adaptationService.unZipProject(path,project); return adaptationService.unZipProject(adaptRequest.getPath(),adaptRequest.getProject());
} }
} }
package com.zjty.adaptationmaster.adaptor.controller; package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.db.DBDeleteResponse;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.service.DBManageService; import com.zjty.adaptationmaster.adaptor.service.DBManageService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
...@@ -27,4 +28,9 @@ public class DBManageController { ...@@ -27,4 +28,9 @@ public class DBManageController {
public ServerResponse findDatabaseManagement(){ public ServerResponse findDatabaseManagement(){
return databaseService.findDatabase(); return databaseService.findDatabase();
} }
@PutMapping("/deleteDB")
public ServerResponse deleteDB(@RequestBody DBDeleteResponse dbDeleteResponse){
return databaseService.deleteDB(dbDeleteResponse);
}
} }
package com.zjty.adaptationmaster.adaptor.controller; 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.entity.db.DBRecordPage;
import com.zjty.adaptationmaster.adaptor.service.DBRecordService; import com.zjty.adaptationmaster.adaptor.service.DBRecordService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
...@@ -21,8 +20,5 @@ public class DBRecordController { ...@@ -21,8 +20,5 @@ public class DBRecordController {
return dbRecordService.pageFind(dbRecordPage); return dbRecordService.pageFind(dbRecordPage);
} }
@PutMapping("deleteDB")
public ServerResponse deleteDB(@RequestBody DBDeleteResponse dbDeleteResponse){
return dbRecordService.deleteDB(dbDeleteResponse);
}
} }
...@@ -4,17 +4,15 @@ import com.zjty.adaptationmaster.adaptor.entity.Project; ...@@ -4,17 +4,15 @@ import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.service.InspectService; import com.zjty.adaptationmaster.adaptor.service.InspectService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("/inspect") @RequestMapping("/inspect")
public class InspectController { public class InspectController {
@Autowired @Autowired
private InspectService inspectService; private InspectService inspectService;
@GetMapping("/inspect") @PutMapping("/inspect")
public ServerResponse inspect(Project projectId){ public ServerResponse inspect(@RequestBody Project projectId){
return inspectService.inspect(projectId); return inspectService.inspect(projectId);
} }
} }
...@@ -28,6 +28,7 @@ public class ProjectController { ...@@ -28,6 +28,7 @@ public class ProjectController {
@PutMapping @PutMapping
public ServerResponse saveProject(@RequestBody Project project){ public ServerResponse saveProject(@RequestBody Project project){
System.out.print("添加或修改项目");
System.out.println(JSON.toJSONString(project)); System.out.println(JSON.toJSONString(project));
return projectService.saveProject(project); return projectService.saveProject(project);
} }
......
package com.zjty.adaptationmaster.adaptor.controller;
import com.alibaba.fastjson.JSONObject;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping("/send")
public class Test {
@PutMapping("/test/{uuid}")
public ServerResponse test(@PathVariable String uuid){
JSONObject jo = new JSONObject();
jo.put("message", "这是后台返回的消息!");
try {
WebSocketServer.sendIn(uuid,JSONObject.toJSONString(jo));
} catch (Exception e) {
e.printStackTrace();
}
return ServerResponse.success();
}
}
...@@ -28,6 +28,8 @@ public class WebSocketServer { ...@@ -28,6 +28,8 @@ public class WebSocketServer {
this.session = session; this.session = session;
this.uuid = uuid; this.uuid = uuid;
//session.getOpenSessions(). //session.getOpenSessions().
//System.out.println("第一个" + uuid);
logger.info("uuid:"+uuid);
map.put(uuid,this); map.put(uuid,this);
try { try {
sendMessage("连接成功"); sendMessage("连接成功");
...@@ -66,13 +68,16 @@ public class WebSocketServer { ...@@ -66,13 +68,16 @@ public class WebSocketServer {
} }
public static void sendInfo(String sessionId,String msg,String action,String state,String projectName){ public static void sendInfo(String sessionId,String msg,String action,String state,String projectName){
//System.out.println(LocalDateTime.now()+"\t"+projectName+"\t"+action+"\t"+state+"\t"+msg);
// try {
// //map.get(sessionId).sendMessage(LocalDateTime.now()+"\t"+projectName+"\t"+action+"\t"+state+"\t"+msg);
// } catch (IOException e) {
// e.printStackTrace();
// }
}
try {
//System.out.println(sessionId);
map.get(sessionId).sendMessage(LocalDateTime.now()+"\t"+projectName+"\t"+action+"\t"+state+"\t"+msg);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void sendIn(String sessionId,String message) throws IOException {
map.get(sessionId).sendMessage(message);
}
} }
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-19 11:37
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdaptRequest {
private Project project;
private List<Rule> ruleList;
private String uuid;
private String path;
}
...@@ -28,6 +28,8 @@ public class MiddlewareManagement { ...@@ -28,6 +28,8 @@ public class MiddlewareManagement {
private String ip;//中间件ip private String ip;//中间件ip
private String type;//类型
private String port;//端口号 private String port;//端口号
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
......
package com.zjty.adaptationmaster.adaptor.entity; package com.zjty.adaptationmaster.adaptor.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -18,28 +19,48 @@ import java.util.List; ...@@ -18,28 +19,48 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
public class Project { public class Project {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(unique = true) @Column(unique = true)
private String projectName;//项目名称 private String projectName;//项目名称
private String sourceDB;//原数据库
private String createTypeDB;//目标数据库
private String createMiddleware;//目标中间件
private String codeUrl;//当前源码源码路径 private String codeUrl;//当前源码源码路径
private String des;//描述
private Integer stage;//阶段(0:源代码 1:替换后 2:编译后)
private Integer status = 1;//状态(0:删除 1:未删除) private Integer status = 1;//状态(0:删除 1:未删除)
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Date startTime = new Date();//开始时间 private Date startTime = new Date();//开始时间
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Date updateTime;//更新时间 private Date updateTime;//更新时间
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Rule> rules;//自定义的规则 private List<Rule> rules;//自定义的规则
@ManyToMany @ManyToMany
@JoinTable(name = "project_ruleSet", @JoinTable(name = "project_ruleSet",
joinColumns = @JoinColumn(name = "p_id",referencedColumnName = "id"), joinColumns = @JoinColumn(name = "p_id",referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "r_id", referencedColumnName = "id")) inverseJoinColumns = @JoinColumn(name = "r_id", referencedColumnName = "id"))
private List<RuleSet> ruleSets;//规则集 private List<RuleSet> ruleSets;//规则集
private boolean compileSuccess = false; private boolean compileSuccess = false;
@OneToOne @OneToOne
private Report report; private Report report;
private boolean deploySuccess = false; private boolean deploySuccess = false;
private String deployPath = "编译路径";//不知道路径,等王永磊改
} }
...@@ -26,6 +26,7 @@ public class Report { ...@@ -26,6 +26,7 @@ public class Report {
@ElementCollection @ElementCollection
public List<String> jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具 public List<String> jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具
private String packagePath; private String packagePath;
private int fileNum;
public enum DependenceManagement{ public enum DependenceManagement{
MAVEN,GRADLE,ANT MAVEN,GRADLE,ANT
......
...@@ -30,10 +30,10 @@ public class Rule { ...@@ -30,10 +30,10 @@ public class Rule {
private Integer status = 1;//状态(0:删除 1:未删除) private Integer status = 1;//状态(0:删除 1:未删除)
private MatchType pathMatchType;//文件匹配方式 路径/文件名/后缀 //private MatchType pathMatchType;//文件匹配方式 路径/文件名/后缀
private String path;//文件路径匹配 private String path;//文件路径匹配
private TextMatch textMatching;//文本匹配方式 全文匹配/正则匹配 //private TextMatch textMatching;//文本匹配方式 全文匹配/正则匹配
private DealWay dealWay;//替换,在匹配字之前插入,在匹配字之后插入 //private DealWay dealWay;//替换,在匹配字之前插入,在匹配字之后插入
/** /**
* AREA * AREA
...@@ -42,15 +42,15 @@ public class Rule { ...@@ -42,15 +42,15 @@ public class Rule {
private String target;//文本匹配目标 private String target;//文本匹配目标
private String replacing;//更改方式 全文替换/正则替换 private String replacing;//更改方式 全文替换/正则替换
public enum MatchType{ // public enum MatchType{
PATH,NAME,SUFFIX,GLOB // PATH,NAME,SUFFIX,GLOB
} // }
//
public enum TextMatch{ // public enum TextMatch{
AREA,CONTENT // AREA,CONTENT
} // }
//
public enum DealWay{ // public enum DealWay{
REPLACE,INSERTAFTER,INSERTBEFORE,InsertBetween // REPLACE,INSERTAFTER,INSERTBEFORE,InsertBetween
} // }
} }
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.bytebuddy.asm.Advice;
import java.util.List;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-18 13:48
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RuleSetAndRule {
private List<RuleSet> ruleSets;
private List<Rule> rules;
}
package com.zjty.adaptationmaster.adaptor.entity;
import org.springframework.context.ApplicationContext;
public class SystemVariable {
public static ApplicationContext context;
}
...@@ -13,4 +13,5 @@ public class DatabaseResponse { ...@@ -13,4 +13,5 @@ public class DatabaseResponse {
private String createType;//生成库类型 private String createType;//生成库类型
private String sqlPath;//上传数据库地址 private String sqlPath;//上传数据库地址
private Integer id;//用户ID private Integer id;//用户ID
private String uuid;//uuid
} }
package com.zjty.adaptationmaster.adaptor.entity.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class SQLExecuteTask implements Runnable{
private Connection connection;
private String sql;
public SQLExecuteTask(Connection connection){
this.connection = connection;
}
public void setSql(String sql){
this.sql = sql;
}
@Override
public void run() {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setQueryTimeout(10);
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
...@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying; ...@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import java.util.List;
public interface DBRecordDao extends JpaRepository<DBRecord,Integer>, JpaSpecificationExecutor { public interface DBRecordDao extends JpaRepository<DBRecord,Integer>, JpaSpecificationExecutor {
@Query("update DBRecord d set d.status =:status where d.dbName =:dbName")
@Modifying @Modifying
@Query("update DBRecord d set d.status =:status where d.dbName =:dbName")
void delete(@Param(value = "dbName") String dbName, @Param(value = "status") Integer status); void delete(@Param(value = "dbName") String dbName, @Param(value = "status") Integer status);
List<DBRecord> findDBRecordsByStatus(Integer status);
} }
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface ReportDao extends JpaRepository<Report, Integer>, JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository; package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
import org.springframework.data.domain.Example;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/** /**
* <h4>Description : adaptation-master</h4> * <h4>Description : adaptation-master</h4>
...@@ -11,4 +15,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; ...@@ -11,4 +15,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @Date : 2019-12-09 9:30 * @Date : 2019-12-09 9:30
*/ */
public interface RuleDao extends JpaRepository<Rule, Integer>,JpaSpecificationExecutor { public interface RuleDao extends JpaRepository<Rule, Integer>,JpaSpecificationExecutor {
@Query("select r from Rule r where r.ruleSet = null and r.status = 1")
List<Rule> findRulesInProject();
} }
package com.zjty.adaptationmaster.adaptor.service; package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.db.DBDeleteResponse;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
...@@ -11,4 +12,6 @@ public interface DBManageService { ...@@ -11,4 +12,6 @@ public interface DBManageService {
ServerResponse deleteDatabase(Integer id); ServerResponse deleteDatabase(Integer id);
ServerResponse findDatabase(); ServerResponse findDatabase();
ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse);
} }
...@@ -8,6 +8,5 @@ import com.zjty.adaptationmaster.base.response.ServerResponse; ...@@ -8,6 +8,5 @@ import com.zjty.adaptationmaster.base.response.ServerResponse;
public interface DBRecordService { public interface DBRecordService {
ServerResponse pageFind(DBRecordPage dbRecordPage); ServerResponse pageFind(DBRecordPage dbRecordPage);
ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse);
} }
...@@ -2,21 +2,23 @@ package com.zjty.adaptationmaster.adaptor.service.Impl; ...@@ -2,21 +2,23 @@ package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.Project; import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao; import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.base.enums.Const; import com.zjty.adaptationmaster.base.enums.Const;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.adaptor.service.AdaptationService; import com.zjty.adaptationmaster.adaptor.service.AdaptationService;
import com.zjty.adaptationmaster.utils.ApusicDeployer; import com.zjty.adaptationmaster.utils.*;
import com.zjty.adaptationmaster.utils.FileUtil;
import com.zjty.adaptationmaster.utils.MavenCompiler;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import static java.util.stream.Collectors.toList;
@Service @Service
public class AdaptationServiceImpl implements AdaptationService { public class AdaptationServiceImpl implements AdaptationService {
@Autowired @Autowired
...@@ -24,28 +26,37 @@ public class AdaptationServiceImpl implements AdaptationService { ...@@ -24,28 +26,37 @@ public class AdaptationServiceImpl implements AdaptationService {
@Autowired @Autowired
private ProjectDao projectDao; private ProjectDao projectDao;
@Override @Override
@Transactional
public ServerResponse adapt(Project project,List<Rule> rules,String uuid) throws IOException { public ServerResponse adapt(Project project,List<Rule> rules,String uuid) throws IOException {
adaptor.setRuleList(rules); adaptor.setRuleList(rules);
adaptor.setProject(project); adaptor.setProject(project);
adaptor.setUuid(uuid); adaptor.setUuid(uuid);
adaptor.doAdapt(); return adaptor.doAdapt();
return ServerResponse.success(project);
} }
@Override @Override
@Transactional
public ServerResponse compile(Project project, String uuid) { public ServerResponse compile(Project project, String uuid) {
// Project project = new Project(); // Project project = new Project();
// project.setCompileFilePath("C:\\home\\project\\rsc\\hrmbclient\\pom.xml"); // project.setCompileFilePath("C:\\home\\project\\rsc\\hrmbclient\\pom.xml");
// project.setDependenceManagement(Report.DependenceManagement.MAVEN); // project.setDependenceManagement(Report.DependenceManagement.MAVEN);
//Project project = projectDao.getOne(projectId); //Project project = projectDao.getOne(projectId);
if(project.getReport()==null)return ServerResponse.error("请进行项目体检或完善项目信息"); try {
switch (project.getReport().getDependenceManagement()) { if(project.getReport()==null)return ServerResponse.error("请进行项目体检或完善项目信息");
case MAVEN:
new MavenCompiler(project, Const.MAVENHOME, uuid).compiler();
switch (project.getReport().getDependenceManagement()) {
case MAVEN:
new MavenCompiler(project, Const.MAVENHOME, uuid).compiler();
}
Project one = projectDao.getOne(project.getId());
one.setStage(2);
return ServerResponse.success("编译成功",filter(one));
}catch (Exception e){
return ServerResponse.error("编译失败");
} }
return ServerResponse.success(project);
} }
@Override @Override
...@@ -60,11 +71,16 @@ public class AdaptationServiceImpl implements AdaptationService { ...@@ -60,11 +71,16 @@ public class AdaptationServiceImpl implements AdaptationService {
@Transactional @Transactional
@Override @Override
public ServerResponse unZipProject(String path, Project project) { public ServerResponse unZipProject(String path, Project project) {
project = projectDao.getOne(project.getId()); Project project1 = projectDao.getOne(project.getId());
FileUtil fileUtil = new FileUtil(); //FileUtil fileUtil = new FileUtil();
project.setCodeUrl(Const.UPLOAD_LOCATION+File.separator+project.getProjectName()); //project1.setCodeUrl(Const.UPLOAD_LOCATION+File.separator+project1.getProjectName());
project1.setCodeUrl(Const.UPLOAD_LOCATION+project1.getProjectName());
try { try {
fileUtil.unZip(new File(path),project.getCodeUrl()); FileZip.unzip(new File(path),project1.getCodeUrl());
project1.setStage(project.getStage());
if(project.getStage() == 1){
project1.setReport(null);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -80,4 +96,30 @@ public class AdaptationServiceImpl implements AdaptationService { ...@@ -80,4 +96,30 @@ public class AdaptationServiceImpl implements AdaptationService {
public ServerResponse stop(Project project, String uuid) { public ServerResponse stop(Project project, String uuid) {
return ServerResponse.success(new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).stop(project.getProjectName(),uuid)); return ServerResponse.success(new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).stop(project.getProjectName(),uuid));
} }
private Project filter(Project pro){
//过滤删除的规则集
List<RuleSet> ruleSets = pro.getRuleSets();
if(ruleSets != null && ruleSets.size() > 0){
List<RuleSet> sets = new ArrayList<>();
for (RuleSet set :ruleSets) {
set.ruleSetView();
if(set.getStatus() == 1){
sets.add(set);
}
}
pro.setRuleSets(sets);
}
//过滤删除的自定义规则
List<Rule> rules = pro.getRules();
if(rules != null && rules.size() > 0){
List<Rule> collect = rules.stream().filter(rule -> rule != null && rule.getStatus() != 0).collect(toList());
pro.setRules(collect);
}
return pro;
}
public static void main(String[] args) {
System.out.println(File.separator);
}
} }
...@@ -60,6 +60,7 @@ public class AssemblyServiceImpl implements AssemblyService{ ...@@ -60,6 +60,7 @@ public class AssemblyServiceImpl implements AssemblyService{
.build(); .build();
// Pageable pageable = /*new */PageRequest.of(page-1, 10, Sort.Direction.DESC, "id"); // Pageable pageable = /*new */PageRequest.of(page-1, 10, Sort.Direction.DESC, "id");
List<Assembly> assemblyList = assemblyDao.findAll(spec); List<Assembly> assemblyList = assemblyDao.findAll(spec);
return ServerResponse.success(new ListResponse<>(assemblyDao.count(spec),assemblyList)); // return ServerResponse.success(new ListResponse<>(assemblyDao.count(spec),assemblyList));
return ServerResponse.success(assemblyList);
} }
} }
package com.zjty.adaptationmaster.adaptor.service.Impl; 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.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord;
import com.zjty.adaptationmaster.adaptor.repository.DBManageDao; import com.zjty.adaptationmaster.adaptor.repository.DBManageDao;
import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
import com.zjty.adaptationmaster.adaptor.service.DBManageService; import com.zjty.adaptationmaster.adaptor.service.DBManageService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Regular;
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 org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Service @Service
public class DBManageServiceImpl implements DBManageService { public class DBManageServiceImpl implements DBManageService {
@Autowired @Autowired
private DBManageDao databaseDao; private DBManageDao databaseDao;
@Autowired
private DBRecordDao dbRecordDao;
@Value("${highgo.driver}")
private String highgoDriver;
@Value("${highgo.connectionType}")
private String highgoConnnectionType;
@Value("${highgo.dbName}")
private String highgoDBName;
/** /**
* 新增数据库配置文件 * 新增数据库配置文件
...@@ -49,4 +67,40 @@ public class DBManageServiceImpl implements DBManageService { ...@@ -49,4 +67,40 @@ public class DBManageServiceImpl implements DBManageService {
return ServerResponse.success(databaseDao.findDatabaseManagementByStatus(1)); return ServerResponse.success(databaseDao.findDatabaseManagementByStatus(1));
} }
/**
* 数据库删除
* @param dbDeleteResponse
* @return
*/
@Override
@Transactional
public ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse) {
DBManage dbManage = databaseDao.findDBManageByIdAndStatus(dbDeleteResponse.getId(),1);
if(dbDeleteResponse.getDbType().equals("highgo")){
dbManage.setDatabaseName(highgoDBName);
dbManage.setDriver(highgoDriver);
dbManage.setConnectionType(highgoConnnectionType);
}
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();
}
} }
...@@ -2,6 +2,7 @@ package com.zjty.adaptationmaster.adaptor.service.Impl; ...@@ -2,6 +2,7 @@ package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
import com.zjty.adaptationmaster.adaptor.entity.db.*; import com.zjty.adaptationmaster.adaptor.entity.db.*;
import com.zjty.adaptationmaster.adaptor.repository.DBManageDao; import com.zjty.adaptationmaster.adaptor.repository.DBManageDao;
import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao; import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
...@@ -22,6 +23,9 @@ import java.sql.PreparedStatement; ...@@ -22,6 +23,9 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Service @Service
@Slf4j @Slf4j
...@@ -32,6 +36,9 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -32,6 +36,9 @@ public class DBMigrateServiceImpl implements DBMigrateService {
@Autowired @Autowired
private DBRecordDao dbRecordDao; private DBRecordDao dbRecordDao;
//线程池数量,合适的线程数量能让程序更快
private static final int poolSize = 4;
@Value("${highgo.driver}") @Value("${highgo.driver}")
private String highgoDriver; private String highgoDriver;
@Value("${highgo.connectionType}") @Value("${highgo.connectionType}")
...@@ -45,6 +52,11 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -45,6 +52,11 @@ public class DBMigrateServiceImpl implements DBMigrateService {
@Override @Override
public ServerResponse dbMigrate(DatabaseResponse databaseResponse) { public ServerResponse dbMigrate(DatabaseResponse databaseResponse) {
if(databaseResponse != null && databaseResponse.getDatabaseName() != null){ if(databaseResponse != null && databaseResponse.getDatabaseName() != null){
String uuid = null;
if(databaseResponse.getUuid() != null){
uuid = databaseResponse.getUuid();
}
System.out.println(uuid);
String databaseName = databaseResponse.getDatabaseName(); String databaseName = databaseResponse.getDatabaseName();
//查询新建的数据库是否存在 //查询新建的数据库是否存在
ServerResponse serverResponse = findDBByDBType(databaseResponse.getId()); ServerResponse serverResponse = findDBByDBType(databaseResponse.getId());
...@@ -105,25 +117,62 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -105,25 +117,62 @@ public class DBMigrateServiceImpl implements DBMigrateService {
File file = new File(path); File file = new File(path);
FileReader fileReader = null; FileReader fileReader = null;
BufferedReader bufferedReader = null; BufferedReader bufferedReader = null;
List<String> insertList = new ArrayList<>();
List<String> elseList = new ArrayList<>();
PreparedStatement preparedStatement1 = null; PreparedStatement preparedStatement1 = null;
try { try {
fileReader = new FileReader(file); fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader); bufferedReader = new BufferedReader(fileReader);
String s; String s;
String sql = ""; String sql = "";
ThreadPoolExecutor pool = new ThreadPoolExecutor(poolSize,poolSize,10, TimeUnit.SECONDS,new ArrayBlockingQueue<>(poolSize * 2));
pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
while ((s = bufferedReader.readLine()) != null){ while ((s = bufferedReader.readLine()) != null){
try { if(Regular.lowerAndUpper(s,"INSERT") && Regular.lowerAndUpper(s,"INTO")){
sql += s; insertList.add(s);
if(s.contains(";")){ continue;
preparedStatement1 = connection1.prepareStatement(sql); }else if(Regular.lowerAndUpper(s,"FOREIGN") && Regular.lowerAndUpper(s,"KEY")){
preparedStatement1.execute(); elseList.add(s);
sql = ""; continue;
}else if(Regular.lowerAndUpper(s,"CREATE") && Regular.lowerAndUpper(s,"INDEX")){
elseList.add(s);
continue;
}
sql += s;
if(s.contains(";")){
if(Regular.lowerAndUpper(s,"CREATE") && Regular.lowerAndUpper(s,"TABLE")){
String tableName = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
WebSocketServer.sendIn(uuid,tableName + "表创建");
} }
}catch (SQLException e) { preparedStatement1 = connection1.prepareStatement(sql);
log.info("sql执行出错语句:" + sql); preparedStatement1.execute();
sql = ""; sql = "";
e.printStackTrace(); }
continue; }
if(insertList != null && insertList.size() != 0){
for(String insert:insertList){
String tableName = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
WebSocketServer.sendIn(uuid,tableName + "表中正在插入");
SQLExecuteTask sqlExecuteTask = new SQLExecuteTask(connection1);
sqlExecuteTask.setSql(insert);
pool.submit(sqlExecuteTask);
System.out.println("核心线程数" + pool.getPoolSize() + "\t" + "存活线程数:" + pool.getActiveCount() + "\t" + "等待数量:" + pool.getQueue().size() +"\t" + "任务数量:" + pool.getTaskCount());
}
}
//数据库连接池关闭
pool.shutdown();
try {
pool.awaitTermination(1,TimeUnit.HOURS);
} catch (InterruptedException e) {
e.printStackTrace();
}
//关闭后执行新建索引和外键的sql语句
if(elseList != null && elseList.size() != 0){
for(String elseChar:elseList){
WebSocketServer.sendIn(uuid,"正在创建索引或外键");
SQLExecuteTask sqlExecuteTask = new SQLExecuteTask(connection1);
sqlExecuteTask.setSql(elseChar);
pool.submit(sqlExecuteTask);
} }
} }
System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b)); System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b));
...@@ -134,7 +183,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -134,7 +183,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try { try {
bufferedReader.close(); bufferedReader.close();
fileReader.close(); fileReader.close();
preparedStatement1.close(); //preparedStatement1.close();
connection1.close(); connection1.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -35,10 +35,10 @@ public class DBRecordServiceImpl implements DBRecordService { ...@@ -35,10 +35,10 @@ public class DBRecordServiceImpl implements DBRecordService {
public ServerResponse pageFind(DBRecordPage dbRecordPage) { public ServerResponse pageFind(DBRecordPage dbRecordPage) {
Specification<DBRecord> specifications = Specifications.<DBRecord>and() Specification<DBRecord> specifications = Specifications.<DBRecord>and()
.eq(dbRecordPage.getCreateType() != null,"createType",dbRecordPage.getCreateType()) .eq(dbRecordPage.getCreateType() != null,"createType",dbRecordPage.getCreateType())
.eq(dbRecordPage.getUserName() != null,"userName",dbRecordPage.getUserName()) //.eq(dbRecordPage.getUserName() != null,"userName",dbRecordPage.getUserName())
.eq("status",1) .eq("status",1)
.build(); .build();
Integer page = dbRecordPage.getPage(); /*Integer page = dbRecordPage.getPage();
Integer size = dbRecordPage.getSize(); Integer size = dbRecordPage.getSize();
if(page == null || page <= 0){ if(page == null || page <= 0){
page = 1; page = 1;
...@@ -50,38 +50,7 @@ public class DBRecordServiceImpl implements DBRecordService { ...@@ -50,38 +50,7 @@ public class DBRecordServiceImpl implements DBRecordService {
long count = dbRecordDao.count(specifications); long count = dbRecordDao.count(specifications);
if(count < 0){ if(count < 0){
return ServerResponse.error(); return ServerResponse.error();
} }*/
return ServerResponse.success(new DBRecordReturn(count,dbRecordDao.findAll(specifications,pageable).getContent())); return ServerResponse.success(dbRecordDao.findAll(specifications));
}
/**
* 数据库删除
* @param dbDeleteResponse
* @return
*/
@Override
@Transactional
public ServerResponse deleteDB(DBDeleteResponse dbDeleteResponse) {
DBManage dbManage = dbManageDao.findDBManageByIdAndStatus(dbDeleteResponse.getId(),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();
} }
} }
...@@ -41,12 +41,13 @@ public class DependencyServiceImpl implements DependencyService { ...@@ -41,12 +41,13 @@ public class DependencyServiceImpl implements DependencyService {
//上传的依赖文件和依赖包 //上传的依赖文件和依赖包
if (!dependencyFile.isEmpty()) { if (!dependencyFile.isEmpty()) {
//依赖名称 //依赖名称
String photo = dependencyFile.getName(); String originalFilename = dependencyFile.getOriginalFilename();
dependency.setDependencyUrl(Const.UPLOAD_LOCATION+photo); assert originalFilename != null;
dependency.setDependencyUrl("/uploads/"+originalFilename);
dependency.setStartTime(new Date()); dependency.setStartTime(new Date());
try { try {
InputStream inputStream = dependencyFile.getInputStream(); InputStream inputStream = dependencyFile.getInputStream();
Files.copy(inputStream, Paths.get(Const.UPLOAD_LOCATION, photo)); Files.copy(inputStream, Paths.get(Const.UPLOAD_LOCATION, originalFilename));
inputStream.close(); inputStream.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -67,6 +68,7 @@ public class DependencyServiceImpl implements DependencyService { ...@@ -67,6 +68,7 @@ public class DependencyServiceImpl implements DependencyService {
@Override @Override
public ServerResponse findDependency(Dependency dependency) { public ServerResponse findDependency(Dependency dependency) {
Specification<Dependency> spec = Specifications.<Dependency>and() Specification<Dependency> spec = Specifications.<Dependency>and()
.like(dependency.getName()!=null,"name","%"+dependency.getName()+"%")
.eq(dependency.getType()!=null,"type",dependency.getType()) .eq(dependency.getType()!=null,"type",dependency.getType())
.eq("status",1) .eq("status",1)
.build(); .build();
......
...@@ -32,7 +32,7 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -32,7 +32,7 @@ public class FileUploadServiceImpl implements FileUploadService {
BufferedOutputStream bos = null; BufferedOutputStream bos = null;
FileReturn fileReturn = new FileReturn(); FileReturn fileReturn = new FileReturn();
String sourceName = multipartFile.getOriginalFilename(); String sourceName = multipartFile.getOriginalFilename();
String suffix = sourceName.substring(sourceName.lastIndexOf(".")+1); String suffix = sourceName.substring(sourceName.lastIndexOf("."));
String fileName = UUID.randomUUID().toString() + suffix; String fileName = UUID.randomUUID().toString() + suffix;
//不存在该目录,创建目录 //不存在该目录,创建目录
File file = new File("/sqlFile/uploads"); File file = new File("/sqlFile/uploads");
......
...@@ -3,6 +3,7 @@ package com.zjty.adaptationmaster.adaptor.service.Impl; ...@@ -3,6 +3,7 @@ package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.Project; import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report; import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao; import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.repository.ReportDao;
import com.zjty.adaptationmaster.adaptor.service.InspectService; import com.zjty.adaptationmaster.adaptor.service.InspectService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Inspector; import com.zjty.adaptationmaster.utils.Inspector;
...@@ -18,18 +19,31 @@ import java.util.Map; ...@@ -18,18 +19,31 @@ import java.util.Map;
public class InspectServiceImpl implements InspectService { public class InspectServiceImpl implements InspectService {
@Autowired @Autowired
private ProjectDao projectDao; private ProjectDao projectDao;
@Autowired
private ReportDao reportDao;
@Transactional @Transactional
@Override @Override
public ServerResponse inspect(Project project) { public ServerResponse inspect(Project project) {
//Project project = projectDao.getOne(projectId); if(project.getCodeUrl() != null && !project.getCodeUrl().equals("")){
Map<String, Report.Language> suffixLanguageMapping = new HashMap<>(); //Project project = projectDao.getOne(projectId);
suffixLanguageMapping.put("java",Report.Language.JAVA); Map<String, Report.Language> suffixLanguageMapping = new HashMap<>();
suffixLanguageMapping.put("cpp",Report.Language.CPP); suffixLanguageMapping.put("java",Report.Language.JAVA);
suffixLanguageMapping.put("py",Report.Language.PYTHON); suffixLanguageMapping.put("cpp",Report.Language.CPP);
suffixLanguageMapping.put("jsp",Report.Language.JSP); suffixLanguageMapping.put("py",Report.Language.PYTHON);
//suffixLanguageMapping.put("html",Report.Language.ONLYVIEW); suffixLanguageMapping.put("jsp",Report.Language.JSP);
//suffixLanguageMapping.put("html",Report.Language.ONLYVIEW);
return ServerResponse.success(new Inspector(project,suffixLanguageMapping).inspect()); Report report = new Inspector(project, suffixLanguageMapping).inspect();
if(report.getPackagePath() == null){
report.setPackagePath(project.getCodeUrl());
}
reportDao.save(report);
Project one = projectDao.getOne(project.getId());
one.setReport(report);
return ServerResponse.success(report);
}else{
return ServerResponse.error("未上传源代码");
}
} }
} }
...@@ -4,6 +4,7 @@ import com.github.wenhao.jpa.Specifications; ...@@ -4,6 +4,7 @@ import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.Project; import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet; import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.adaptor.entity.RuleSetAndRule;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao; import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.repository.RuleDao; import com.zjty.adaptationmaster.adaptor.repository.RuleDao;
import com.zjty.adaptationmaster.adaptor.repository.RuleSetDao; import com.zjty.adaptationmaster.adaptor.repository.RuleSetDao;
...@@ -43,6 +44,7 @@ public class RuleServiceImpl implements RuleService{ ...@@ -43,6 +44,7 @@ public class RuleServiceImpl implements RuleService{
@Override @Override
public ServerResponse addRuleSet(RuleSet ruleSet) { public ServerResponse addRuleSet(RuleSet ruleSet) {
List<Rule> ruleList = ruleSet.getRuleList(); List<Rule> ruleList = ruleSet.getRuleList();
if (ruleList != null)
ruleList.forEach(rule -> rule.setRuleSet(ruleSet)); ruleList.forEach(rule -> rule.setRuleSet(ruleSet));
RuleSet save = ruleSetDao.save(ruleSet); RuleSet save = ruleSetDao.save(ruleSet);
return ServerResponse.success(filter(save)); return ServerResponse.success(filter(save));
...@@ -68,7 +70,8 @@ public class RuleServiceImpl implements RuleService{ ...@@ -68,7 +70,8 @@ public class RuleServiceImpl implements RuleService{
.collect(toList()); .collect(toList());
rules.setRuleList(ruleList); rules.setRuleList(ruleList);
} }
return ServerResponse.success(ruleSetList); List<Rule> rules = ruleDao.findRulesInProject();
return ServerResponse.success(new RuleSetAndRule(ruleSetList,rules));
} }
// @Override // @Override
...@@ -97,8 +100,10 @@ public class RuleServiceImpl implements RuleService{ ...@@ -97,8 +100,10 @@ public class RuleServiceImpl implements RuleService{
private RuleSet filter(RuleSet ruleSet){ private RuleSet filter(RuleSet ruleSet){
List<Rule> rules = ruleSet.getRuleList(); List<Rule> rules = ruleSet.getRuleList();
List<Rule> collect = rules.stream().filter(rule -> rule.getStatus() != 0).collect(toList()); if(rules != null){
ruleSet.setRuleList(collect); List<Rule> collect = rules.stream().filter(rule -> rule.getStatus() != 0).collect(toList());
ruleSet.setRuleList(collect);
}
return ruleSet; return ruleSet;
} }
} }
...@@ -40,7 +40,7 @@ public class Const { ...@@ -40,7 +40,7 @@ public class Const {
public static Map<String,Long> transferCountMap = new ConcurrentHashMap<>(); public static Map<String,Long> transferCountMap = new ConcurrentHashMap<>();
public static final String MAVENHOME = "D:\\apache-maven-3.5.4"; public static final String MAVENHOME = "D:\\Program Files\\apache-maven-3.5.4-bin\\apache-maven-3.5.4";
public static final String CTLPATH = "/home/user/Desktop/AAS-V9.0/bin/appctl"; public static final String CTLPATH = "/home/user/AAS-V9.0/bin/appctl.cmd";
public static final String CTLPWD = "Qwert123!@#"; public static final String CTLPWD = "Qwert123!@#";
} }
package com.zjty.adaptationmaster.base.response; package com.zjty.adaptationmaster.base.response;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.zjty.adaptationmaster.utils.HttpClientUtil; import com.zjty.adaptationmaster.utils.HttpClientUtil;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.zjty.adaptationmaster.config;
import com.zjty.adaptationmaster.base.enums.Const;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.io.File;
/**
* <h4>Description : businessservice</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2018/4/19 13:29
*/
@Configuration
public class MyWebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
File file1 =new File(Const.UPLOAD_LOCATION);
//如果文件夹不存在则创建
if (!file1 .exists())
{
file1 .mkdirs();
} else
{
System.out.println("//目录存在");
}
// registry.addResourceHandler("/src/main/resources/**").addResourceLocations("classpath:/resources/uploads/");
registry.addResourceHandler("/uploads/**").addResourceLocations("file:"+ Const.UPLOAD_LOCATION);
super.addResourceHandlers(registry);
}
}
...@@ -3,12 +3,14 @@ package com.zjty.adaptationmaster.utils; ...@@ -3,12 +3,14 @@ package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer; import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
import com.zjty.adaptationmaster.adaptor.entity.Project; import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.base.entity.ProjectStatueFromMiddleware; import com.zjty.adaptationmaster.base.entity.ProjectStatueFromMiddleware;
import com.zjty.adaptationmaster.base.enums.Const;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -18,7 +20,9 @@ public class ApusicDeployer { ...@@ -18,7 +20,9 @@ public class ApusicDeployer {
private String ctlPath; private String ctlPath;
private String ctlPwd; private String ctlPwd;
public void deploy(Project project,String webSocketName){ public void deploy(Project project,String webSocketName){
String command = ctlPath+" -p '"+ctlPwd+"' install "+project.getProjectName()+" "+project.getReport().getPackagePath(); //String command = ctlPath+" -p "+ Const.CTLPWD +" install "+project.getProjectName()+" "+project.getReport().getPackagePath();
String command = ctlPath +" install "+project.getProjectName()+" "+project.getReport().getPackagePath();
System.out.println(command);
appctl(command,webSocketName,project.getProjectName()); appctl(command,webSocketName,project.getProjectName());
} }
public List<ProjectStatueFromMiddleware> list(){ public List<ProjectStatueFromMiddleware> list(){
...@@ -43,22 +47,27 @@ public class ApusicDeployer { ...@@ -43,22 +47,27 @@ public class ApusicDeployer {
return result; return result;
} }
public boolean start(String projectName,String webSocketName){ public boolean start(String projectName,String webSocketName){
String command = ctlPath+" -p '"+ctlPwd+"' start "+projectName; String command = ctlPath+" start "+projectName;
appctl(command,webSocketName,projectName); appctl(command,webSocketName,projectName);
return true; return true;
} }
public boolean stop(String projectName,String webSocketName){ public boolean stop(String projectName,String webSocketName){
String command = ctlPath+" -p '"+ctlPwd+"' stop "+projectName; String command = ctlPath+" stop "+projectName;
appctl(command,webSocketName,projectName); appctl(command,webSocketName,projectName);
return true; return true;
} }
private void appctl(String command,String webSocketName,String projectName){ private void appctl(String command,String webSocketName,String projectName){
try { try {
Process exec = Runtime.getRuntime().exec(command); Process exec = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream())); String password = Const.CTLPWD;
OutputStream outputStream = exec.getOutputStream();
outputStream.write(password.getBytes());
outputStream.flush();
outputStream.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream(),"GBK"));
String line = null; String line = null;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
WebSocketServer.sendInfo(line, webSocketName, "部署", "running", projectName); WebSocketServer.sendInfo(webSocketName, line, "部署", "running", projectName);
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
......
package com.zjty.adaptationmaster.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.io.FileUtils;
import java.io.*;
@Slf4j
public class FileZip {
public static void unzip(File zipFile, String descDir) {
try (ZipArchiveInputStream inputStream = getZipFile(zipFile)) {
File pathFile = new File(descDir);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
ZipArchiveEntry entry = null;
while ((entry = inputStream.getNextZipEntry()) != null) {
if (entry.isDirectory()) {
File directory = new File(descDir, entry.getName());
directory.mkdirs();
} else {
OutputStream os = null;
try {
os = new BufferedOutputStream(new FileOutputStream(new File(descDir, entry.getName())));
//输出文件路径信息
log.info("解压文件的当前路径为:{}", descDir + entry.getName());
IOUtils.copy(inputStream, os);
} finally {
IOUtils.closeQuietly(os);
}
}
}
final File[] files = pathFile.listFiles();
if (files != null && files.length == 1 && files[0].isDirectory()) {
// 说明只有一个文件夹
FileUtils.copyDirectory(files[0], pathFile);
//免得删除错误, 删除的文件必须在/data/demand/目录下。
boolean isValid = files[0].getPath().contains("/data/www/");
if (isValid) {
FileUtils.forceDelete(files[0]);
}
}
log.info("******************解压完毕********************");
} catch (Exception e) {
log.error("[unzip] 解压zip文件出错", e);
}
}
private static ZipArchiveInputStream getZipFile(File zipFile) throws Exception {
return new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(zipFile)));
}
public static void main(String[] args) throws Exception{
String path = "D:\\sqlFile\\uploads\\8599bc6b-e140-493e-8ea6-07eba392adad.zip";
unzip(new File(path), "D:\\sqlFile\\uploads\\test123456789");
}
}
...@@ -63,6 +63,7 @@ public class Inspector { ...@@ -63,6 +63,7 @@ public class Inspector {
this.report = new Report(); this.report = new Report();
} }
int fileNum = 0;
/** /**
* FileVisitResult.CONTINUE 继续遍历 * FileVisitResult.CONTINUE 继续遍历
* FileVisitResult.TERMINATE 中止访问 * FileVisitResult.TERMINATE 中止访问
...@@ -100,6 +101,7 @@ public class Inspector { ...@@ -100,6 +101,7 @@ public class Inspector {
@Override @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
fileNum++;
for(Map.Entry<String,PathMatcher> entry:languageSuffixMatcherMapping.entrySet()){ for(Map.Entry<String,PathMatcher> entry:languageSuffixMatcherMapping.entrySet()){
if(entry.getValue().matches(file)){ if(entry.getValue().matches(file)){
languageMatchMap.get(entry.getKey()).plus(); languageMatchMap.get(entry.getKey()).plus();
...@@ -131,6 +133,7 @@ public class Inspector { ...@@ -131,6 +133,7 @@ public class Inspector {
} }
public Report analysis(){ public Report analysis(){
report.setFileNum(fileNum);
report.setLanguage(Report.Language.ONLYVIEW); report.setLanguage(Report.Language.ONLYVIEW);
for(Map.Entry<String,Counter> entry:languageMatchMap.entrySet()){ for(Map.Entry<String,Counter> entry:languageMatchMap.entrySet()){
if(entry.getValue().getNumber()>0){ if(entry.getValue().getNumber()>0){
...@@ -168,7 +171,7 @@ public class Inspector { ...@@ -168,7 +171,7 @@ public class Inspector {
e.printStackTrace(); e.printStackTrace();
} }
Element elementProject = document.getRootElement(); Element elementProject = document.getRootElement();
String projectMavenName = elementProject.elementText("name"); String projectMavenName = elementProject.elementText("artifactId");
String projectMavenVersion = elementProject.elementText("version"); String projectMavenVersion = elementProject.elementText("version");
report.setPackagePath(path.getParent()+"/target/"+projectMavenName+"-"+projectMavenVersion+".war"); report.setPackagePath(path.getParent()+"/target/"+projectMavenName+"-"+projectMavenVersion+".war");
} }
......
...@@ -23,6 +23,7 @@ public class MavenCompiler { ...@@ -23,6 +23,7 @@ public class MavenCompiler {
} }
public void compiler(){ public void compiler(){
System.out.print("wwwwwww");
InvocationRequest request = new DefaultInvocationRequest(); InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File(project.getReport().getCompileFilePath())); request.setPomFile(new File(project.getReport().getCompileFilePath()));
request.setGoals(Collections.singletonList("package")); request.setGoals(Collections.singletonList("package"));
...@@ -34,7 +35,7 @@ public class MavenCompiler { ...@@ -34,7 +35,7 @@ public class MavenCompiler {
@Override @Override
public void consumeLine(String s) throws IOException { public void consumeLine(String s) throws IOException {
WebSocketServer.sendInfo(webSocketId,s,"编译","running",project.getProjectName()); WebSocketServer.sendInfo(webSocketId,s,"编译","running",project.getProjectName());
//System.out.println(s); System.out.println(s);
} }
}); });
try { try {
......
...@@ -2,7 +2,6 @@ package com.zjty.adaptationmaster.utils; ...@@ -2,7 +2,6 @@ package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer; import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.service.Impl.Adaptor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -30,10 +29,10 @@ public class ReadedFileTask implements Runnable { ...@@ -30,10 +29,10 @@ public class ReadedFileTask implements Runnable {
this.uuid = uuid; this.uuid = uuid;
} }
private Adaptor.WriterBySort bySort; private WriterBySort bySort;
private int index; private int index;
public void setBySort(Adaptor.WriterBySort bySort) { public void setBySort(WriterBySort bySort) {
System.out.println("线程遇到大文件"); System.out.println("线程遇到大文件");
this.bySort = bySort; this.bySort = bySort;
} }
...@@ -78,50 +77,11 @@ public class ReadedFileTask implements Runnable { ...@@ -78,50 +77,11 @@ public class ReadedFileTask implements Runnable {
String content = readedFile.getContent(); String content = readedFile.getContent();
System.out.println("规则数量" + readedFile.getThisMatchedRule().size()); System.out.println("规则数量" + readedFile.getThisMatchedRule().size());
for (Rule entity : readedFile.getThisMatchedRule()) { for (Rule entity : readedFile.getThisMatchedRule()) {
System.out.println("文本匹配方式" + entity.getTextMatching()); //在改动的地方加日志
switch (entity.getTextMatching()) { // int i = content.indexOf(entity.getTarget());
case AREA: // int i1 = content.lastIndexOf("\\r\\n", i);
System.out.println("case"); //
String[] split = entity.getTarget().split("\\|\\|"); content = content.replaceAll(entity.getTarget(),entity.getReplacing());
String begin = split[0];
String matching = split[1];
String end = split[2];
System.out.println(begin + "||" + matching + "||" + end);
int i = content.indexOf(matching);
if (i > -1) {
System.out.println("i" + i);
WebSocketServer.sendInfo(uuid, readedFile.getPath().getFileName() + ":" + matching + " 替换为 " + entity.getReplacing(), "替换", "正在替换", projectName);
int beginIndex = content.lastIndexOf(begin, i);
int endIndex = content.indexOf(end, i + 1);
if (beginIndex > -1 && endIndex > -1) {
content = content.substring(0, beginIndex) + entity.getReplacing() + content.substring(endIndex + end.length());
}
} else {
System.out.println("-i" + i);
}
break;
case CONTENT:
switch (entity.getDealWay()) {
case REPLACE:
content = content.replaceAll(entity.getTarget(), entity.getReplacing());
break;
case INSERTAFTER:
//判断是不是本来就有,如果已有,就不用新增了
//if(content.indexOf(entity.getReplacing(),content.indexOf(entity.getTarget()))==-1) {
int insertPlace = content.indexOf(entity.getTarget()) + entity.getTarget().length();
content = content.substring(0, insertPlace) + entity.getReplacing() + content.substring(insertPlace);
//}
break;
case INSERTBEFORE:
break;
case InsertBetween:
break;
}
break;
}
} }
try { try {
if (bySort != null) { if (bySort != null) {
......
//package com.zjty.adaptationmaster.utils;
//
//import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
//import com.zjty.adaptationmaster.adaptor.entity.Rule;
//import lombok.AllArgsConstructor;
//import lombok.Data;
//import lombok.NoArgsConstructor;
//
//import java.io.*;
//import java.nio.file.Path;
//import java.nio.file.attribute.BasicFileAttributes;
//import java.util.List;
//import java.util.Properties;
//
//
//public class ReadedFileTask implements Runnable {
//
// private String projectName;
// private String uuid;
// private List<ReadedFile> readedFiles;
// //private Writer responseWriter;
// public ReadedFileTask(List<ReadedFile> readedFiles,String projectName,String uuid) {
// //System.out.println("一个线程");
// this.readedFiles = readedFiles;
// for(ReadedFile file:readedFiles){
// System.out.println(file.path);
// }
// this.projectName = projectName;
// this.uuid = uuid;
// }
//
// private WriterBySort bySort;
// private int index;
//
// public void setBySort(WriterBySort bySort) {
// System.out.println("线程遇到大文件");
// this.bySort = bySort;
// }
//
// public void setIndex(int index) {
// this.index = index;
// }
//
// @Override
// public void run() {
// System.out.println("进来线程");
// for(ReadedFile readedFile:readedFiles) {
// if(readedFile.path.toString().endsWith(".properties")){
// Properties properties = new Properties();
// OutputStream stream =null;
// try {
// properties.load(new ByteArrayInputStream(readedFile.content.getBytes()));
// for (Rule entity : readedFile.getThisMatchedRule()) {
//
// //if(properties.getProperty(entity.getTarget())!=null) {
// properties.setProperty(entity.getTarget(), entity.getReplacing());
// //}
// System.out.println("属性修改后"+properties.getProperty(entity.getTarget()));
// }
// readedFile.getPath().toFile().createNewFile();
// stream = new FileOutputStream(readedFile.getPath().toFile());
// System.out.println(properties);
// properties.store(stream,"111");
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }finally {
// try {
// stream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// continue;
// }
// String content = readedFile.getContent();
// System.out.println("规则数量" + readedFile.getThisMatchedRule().size());
// for (Rule entity : readedFile.getThisMatchedRule()) {
// System.out.println("文本匹配方式" + entity.getTextMatching());
// switch (entity.getTextMatching()) {
// case AREA:
// System.out.println("case");
// String[] split = entity.getTarget().split("\\|\\|");
// String begin = split[0];
// String matching = split[1];
// String end = split[2];
// System.out.println(begin + "||" + matching + "||" + end);
//
// int i = content.indexOf(matching);
// if (i > -1) {
// System.out.println("i" + i);
// WebSocketServer.sendInfo(uuid, readedFile.getPath().getFileName() + ":" + matching + " 替换为 " + entity.getReplacing(), "替换", "正在替换", projectName);
// int beginIndex = content.lastIndexOf(begin, i);
// int endIndex = content.indexOf(end, i + 1);
// if (beginIndex > -1 && endIndex > -1) {
// content = content.substring(0, beginIndex) + entity.getReplacing() + content.substring(endIndex + end.length());
// }
// } else {
//
// System.out.println("-i" + i);
// }
// break;
// case CONTENT:
// switch (entity.getDealWay()) {
// case REPLACE:
// content = content.replaceAll(entity.getTarget(), entity.getReplacing());
// break;
// case INSERTAFTER:
// //判断是不是本来就有,如果已有,就不用新增了
// //if(content.indexOf(entity.getReplacing(),content.indexOf(entity.getTarget()))==-1) {
// int insertPlace = content.indexOf(entity.getTarget()) + entity.getTarget().length();
// content = content.substring(0, insertPlace) + entity.getReplacing() + content.substring(insertPlace);
// //}
// break;
// case INSERTBEFORE:
// break;
// case InsertBetween:
// break;
// }
//
// break;
// }
// }
// try {
// if (bySort != null) {
// bySort.insert(index, content);
// } else {
// WebSocketServer.sendInfo(uuid, readedFile.getPath().getFileName() + "", "替换", "正在写出", projectName);
// File file = readedFile.getPath().toFile();
// file.createNewFile();
// OutputStreamWriter contentWriter = new OutputStreamWriter(new FileOutputStream(file));
// contentWriter.write(content);
// contentWriter.close();
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
//
// }
// }
//
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// public static class ReadedFile {
// private String content;
// private BasicFileAttributes attributes;
// private Path path;
// private List<Rule> thisMatchedRule;
// }
//}
package com.zjty.adaptationmaster.utils; package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.SystemVariable;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.RegularReturn;
import org.springframework.core.env.Environment;
import java.io.*; import java.io.*;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
public class Regular { public class Regular {
...@@ -103,6 +98,10 @@ public class Regular { ...@@ -103,6 +98,10 @@ public class Regular {
s = StringType(s,"double","real"); s = StringType(s,"double","real");
//插入值时boolean类型转换 //插入值时boolean类型转换
s = replaceLowerAndUpper(s,"BIT(1)","boolean"); s = replaceLowerAndUpper(s,"BIT(1)","boolean");
//替换longtext
s = replaceLowerAndUpper(s,"longtext","text");
//替换mediumtext
s = replaceLowerAndUpper(s,"mediumtext","text");
//从第一个创建表的可执行命令开始 //从第一个创建表的可执行命令开始
if(lowerAndUpper(s,"DROP") && lowerAndUpper(s,"TABLE") && executeOne){ if(lowerAndUpper(s,"DROP") && lowerAndUpper(s,"TABLE") && executeOne){
isFirstDrop = true; isFirstDrop = true;
...@@ -236,8 +235,8 @@ public class Regular { ...@@ -236,8 +235,8 @@ public class Regular {
* 大小写都替换 * 大小写都替换
*/ */
public static String replaceLowerAndUpper(String s,String upper,String replacement){ public static String replaceLowerAndUpper(String s,String upper,String replacement){
s = s.replaceAll(upper,replacement); s = s.replace(upper,replacement);
s = s.replaceAll(upper.toLowerCase(),replacement); s = s.replace(upper.toLowerCase(),replacement);
return s; return s;
} }
...@@ -290,6 +289,10 @@ public class Regular { ...@@ -290,6 +289,10 @@ public class Regular {
public static void main(String[] args) { public static void main(String[] args) {
mySqlRegular("C:\\Users\\admin\\Desktop\\database\\editor.sql","test5"); //mySqlRegular("D:\\sqlFile\\uploads\\63c6e098-73fd-4999-b289-b3d120a07e87.sql","test11111");
//
File file = new File("D:\\root\\projects\\adaptationMaster\\uploads\\czq测试系统5\\swiper-4.5.0/target/threem-0.0.1-SNAPSHOT.war");
System.out.println(file.length());
System.out.println(file.getName());
} }
} }
package com.zjty.adaptationmaster.utils;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import java.util.TreeMap;
public class WriterBySort {
private int currentIndex = -1;
private Map<Integer,String> map = new TreeMap<>();
private Writer contentWriter;
private int size;
public void setWriter(Writer writer) {
this.contentWriter = writer;
}
public void setSize(int size) {
this.size = size;
if(currentIndex==size){
try {
contentWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void insert(Integer key, String value){
map.put(key,value);
while (map.get(currentIndex+1)!=null){
try {
contentWriter.write(map.remove(currentIndex+1));
} catch (IOException e) {
e.printStackTrace();
}
currentIndex++;
if(currentIndex == size){
try {
contentWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
...@@ -28,8 +28,11 @@ spring.jpa.open-in-view=true ...@@ -28,8 +28,11 @@ spring.jpa.open-in-view=true
spring.jpa.properties.javax.persistence.validation.mode=none spring.jpa.properties.javax.persistence.validation.mode=none
# spring-http-文件上传相关配置 # spring-http-文件上传相关配置
spring.servlet.multipart.max-file-size=100MB spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=100MB spring.servlet.multipart.max-request-size=200MB
#配置时间格式
spring.jacksondate-format = yyyy-MM-dd HH:mm:ss
spring.thymeleaf.cache=false spring.thymeleaf.cache=false
spring.mvc.static-path-pattern=/** spring.mvc.static-path-pattern=/**
......
package com.zjty.adaptationmaster; package com.zjty.adaptationmaster;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.utils.Regular;
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
public class Test4 { public class Test4 {
public static void main(String[] args) { public static void main(String[] args) {
String s = "123)456)789)0"; String s = "\"record_alarm\" bit(1) DEFAULT NULL,";
String[] array = s.split("\\)"); System.out.println(s.replaceAll("bit(1)","boolean"));
for(String si:array){
System.out.println(si);
}
} }
} }
package com.zjty.adaptationmaster; //package com.zjty.adaptationmaster;
//
import com.zjty.adaptationmaster.adaptor.entity.Project; //import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule; //import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.service.Impl.Adaptor; //import com.zjty.adaptationmaster.adaptor.service.Impl.Adaptor;
import org.junit.Test; //import org.junit.Test;
//
import java.nio.file.FileSystems; //import java.nio.file.FileSystems;
import java.nio.file.Path; //import java.nio.file.Path;
import java.nio.file.Paths; //import java.nio.file.Paths;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
public class TestAdapt { //public class TestAdapt {
//
public static void main(String[] args) { // public static void main(String[] args) {
List ruleList = new ArrayList(); // List ruleList = new ArrayList();
Rule rule = new Rule(); // Rule rule = new Rule();
rule.setPathMatchType(Rule.MatchType.NAME); // rule.setPathMatchType(Rule.MatchType.NAME);
rule.setPath("pom.xml"); // rule.setPath("pom.xml");
rule.setTextMatching(Rule.TextMatch.CONTENT); // rule.setTextMatching(Rule.TextMatch.CONTENT);
rule.setDealWay(Rule.DealWay.REPLACE); // rule.setDealWay(Rule.DealWay.REPLACE);
rule.setTarget("<packaging>jar</packaging>"); // rule.setTarget("<packaging>jar</packaging>");
rule.setReplacing("<packaging>war</packaging>"); // rule.setReplacing("<packaging>war</packaging>");
ruleList.add(rule); // ruleList.add(rule);
//
Rule rule11 = new Rule(); // Rule rule11 = new Rule();
rule11.setPathMatchType(Rule.MatchType.NAME); // rule11.setPathMatchType(Rule.MatchType.NAME);
rule11.setPath("pom.xml"); // rule11.setPath("pom.xml");
rule11.setTextMatching(Rule.TextMatch.CONTENT); // rule11.setTextMatching(Rule.TextMatch.CONTENT);
rule11.setDealWay(Rule.DealWay.INSERTAFTER); // rule11.setDealWay(Rule.DealWay.INSERTAFTER);
rule11.setTarget("<dependencies>"); // rule11.setTarget("<dependencies>");
rule11.setReplacing("<dependency>\n" + // rule11.setReplacing("<dependency>\n" +
" <groupId>org.postgresql</groupId>\n" + // " <groupId>org.postgresql</groupId>\n" +
" <artifactId>postgresql</artifactId>\n" + // " <artifactId>postgresql</artifactId>\n" +
" <scope>runtime</scope>\n" + // " <scope>runtime</scope>\n" +
" </dependency>"); // " </dependency>");
ruleList.add(rule11); // ruleList.add(rule11);
//
Rule rule1 = new Rule(); // Rule rule1 = new Rule();
rule1.setPathMatchType(Rule.MatchType.GLOB); // rule1.setPathMatchType(Rule.MatchType.GLOB);
rule1.setPath("**/application**.properties"); // rule1.setPath("**/application**.properties");
rule1.setTextMatching(Rule.TextMatch.CONTENT); // rule1.setTextMatching(Rule.TextMatch.CONTENT);
rule1.setDealWay(Rule.DealWay.REPLACE); // rule1.setDealWay(Rule.DealWay.REPLACE);
rule1.setTarget("spring.datasource.driver-class-name"); // rule1.setTarget("spring.datasource.driver-class-name");
rule1.setReplacing("org.postgresql.Driver"); // rule1.setReplacing("org.postgresql.Driver");
ruleList.add(rule1); // ruleList.add(rule1);
//
Rule rule2 = new Rule(); // Rule rule2 = new Rule();
rule2.setPathMatchType(Rule.MatchType.GLOB); // rule2.setPathMatchType(Rule.MatchType.GLOB);
rule2.setPath("**/application**.properties"); // rule2.setPath("**/application**.properties");
rule2.setTextMatching(Rule.TextMatch.CONTENT); // rule2.setTextMatching(Rule.TextMatch.CONTENT);
rule2.setDealWay(Rule.DealWay.REPLACE); // rule2.setDealWay(Rule.DealWay.REPLACE);
rule2.setTarget("spring.datasource.url"); // rule2.setTarget("spring.datasource.url");
rule2.setReplacing("jdbc:postgresql://localhost:5866/hrm"); // rule2.setReplacing("jdbc:postgresql://localhost:5866/hrm");
ruleList.add(rule2); // ruleList.add(rule2);
Rule rule3 = new Rule(); // Rule rule3 = new Rule();
rule3.setPathMatchType(Rule.MatchType.GLOB); // rule3.setPathMatchType(Rule.MatchType.GLOB);
rule3.setPath("**/application**.properties"); // rule3.setPath("**/application**.properties");
rule3.setTextMatching(Rule.TextMatch.CONTENT); // rule3.setTextMatching(Rule.TextMatch.CONTENT);
rule3.setDealWay(Rule.DealWay.REPLACE); // rule3.setDealWay(Rule.DealWay.REPLACE);
rule3.setTarget("spring.datasource.username"); // rule3.setTarget("spring.datasource.username");
rule3.setReplacing("sysdba"); // rule3.setReplacing("sysdba");
ruleList.add(rule3); // ruleList.add(rule3);
Rule rule4 = new Rule(); // Rule rule4 = new Rule();
rule4.setPathMatchType(Rule.MatchType.GLOB); // rule4.setPathMatchType(Rule.MatchType.GLOB);
rule4.setPath("**/application**.properties"); // rule4.setPath("**/application**.properties");
rule4.setTextMatching(Rule.TextMatch.CONTENT); // rule4.setTextMatching(Rule.TextMatch.CONTENT);
rule4.setDealWay(Rule.DealWay.REPLACE); // rule4.setDealWay(Rule.DealWay.REPLACE);
rule4.setTarget("spring.datasource.password"); // rule4.setTarget("spring.datasource.password");
rule4.setReplacing("highgo@123"); // rule4.setReplacing("highgo@123");
ruleList.add(rule4); // ruleList.add(rule4);
Rule rule5 = new Rule(); // Rule rule5 = new Rule();
rule5.setPathMatchType(Rule.MatchType.GLOB); // rule5.setPathMatchType(Rule.MatchType.GLOB);
rule5.setPath("**/application**.properties"); // rule5.setPath("**/application**.properties");
rule5.setTextMatching(Rule.TextMatch.CONTENT); // rule5.setTextMatching(Rule.TextMatch.CONTENT);
rule5.setDealWay(Rule.DealWay.REPLACE); // rule5.setDealWay(Rule.DealWay.REPLACE);
rule5.setTarget("spring.jpa.database-platform"); // rule5.setTarget("spring.jpa.database-platform");
rule5.setReplacing("org.hibernate.dialect.PostgreSQLDialect"); // rule5.setReplacing("org.hibernate.dialect.PostgreSQLDialect");
ruleList.add(rule5); // ruleList.add(rule5);
//
Adaptor adaptor = new Adaptor(); // Adaptor adaptor = new Adaptor();
adaptor.setRuleList(ruleList); // adaptor.setRuleList(ruleList);
adaptor.setUuid("111"); // adaptor.setUuid("111");
Project project = new Project(); // Project project = new Project();
project.setCodeUrl("C:\\home\\project\\rsc\\hrmbclient"); // project.setCodeUrl("C:\\home\\project\\rsc\\hrmbclient");
project.setProjectName("hrm"); // project.setProjectName("hrm");
adaptor.setProject(project); // adaptor.setProject(project);
adaptor.doAdapt(); // adaptor.doAdapt();
} // }
@Test // @Test
public void test(){ // public void test(){
Path path = Paths.get("D:/aaa.properties"); // Path path = Paths.get("D:/aaa.properties");
System.out.println(path.toString().endsWith(".properties")); // System.out.println(path.toString().endsWith(".properties"));
} // }
} //}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论