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

合并分支 'wyl' 到 'master'

Wyl 查看合并请求 ty_wyl/adaptation-master1!26
...@@ -126,6 +126,21 @@ ...@@ -126,6 +126,21 @@
<artifactId>snakeyaml</artifactId> <artifactId>snakeyaml</artifactId>
<version>1.25</version> <version>1.25</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.zjty.adaptationmaster.adaptor.controller; package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.Project;
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.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.UUID;
@Controller @Controller
@RequestMapping("/adapt") @RequestMapping("/adapt")
public class AdaptationController { public class AdaptationController {
@GetMapping("/getUUID")
public ServerResponse getUUID(){
return ServerResponse.success(UUID.randomUUID().toString());
}
@Autowired @Autowired
private AdaptationService adaptationService; private AdaptationService adaptationService;
@GetMapping("/adapt") @PostMapping("/adapt")
public ServerResponse adapt(HttpServletResponse response) throws IOException { public ServerResponse adapt(Project project, List<Rule> ruleList,String uuid) throws IOException {
System.out.println("请求"); return adaptationService.adapt(project,ruleList,uuid);
return adaptationService.adapt(response); }
@PostMapping("/compile")
public ServerResponse compile(Project project,String uuid){
return adaptationService.compile(project,uuid);
}
@PostMapping("/deploy")
public ServerResponse deploy(Project project,String uuid){
return adaptationService.deploy(project,uuid);
}
@PostMapping("/startInApusic")
public ServerResponse startInApusic(Project project,String uuid){
return adaptationService.start(project,uuid);
}
@PostMapping("/stopInApusic")
public ServerResponse stopInApusic(Project project,String uuid){
return adaptationService.stop(project,uuid);
}
@PostMapping("/unzipProject")
public ServerResponse unZipProject(String path,Project project){
return adaptationService.unZipProject(path,project);
} }
} }
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.MavenCompiler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@RequestMapping("/compile")
public class CompileController {
@GetMapping("/getUUID")
public ServerResponse getUUID(){
return ServerResponse.success(UUID.randomUUID().toString());
}
@GetMapping("/compile")
public ServerResponse compile(String UUID){
// MavenCompiler mavenCompiler = new MavenCompiler("C:\\home\\project\\rsc\\hrmbclient\\pom.xml","D:\\apache-maven-3.5.4",UUID);
// mavenCompiler.compiler();
return ServerResponse.success();
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.service.DeployService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/deploy")
public class DeployController {
@Autowired
private DeployService deployService;
@GetMapping("/compileProject")
public ServerResponse compile(int projectId,String uuid){
return deployService.compile(projectId,uuid);
}
@GetMapping("/deployProject")
public ServerResponse deploy(int projectId,String uuid){
return deployService.deploy(projectId,uuid);
}
}
package com.zjty.adaptationmaster.adaptor.controller; package com.zjty.adaptationmaster.adaptor.controller;
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.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping @RequestMapping("/inspect")
public class InspectController { public class InspectController {
@Autowired @Autowired
private InspectService inspectService; private InspectService inspectService;
public ServerResponse inspect(int projectId){ @GetMapping("/inspect")
public ServerResponse inspect(Project projectId){
return inspectService.inspect(projectId); return inspectService.inspect(projectId);
} }
} }
...@@ -12,7 +12,7 @@ import java.time.LocalDateTime; ...@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ServerEndpoint("/webServer/{projectId}") @ServerEndpoint("/webServer/{uuid}")
@Component @Component
public class WebSocketServer { public class WebSocketServer {
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
...@@ -24,7 +24,7 @@ public class WebSocketServer { ...@@ -24,7 +24,7 @@ public class WebSocketServer {
private String uuid; private String uuid;
@OnOpen @OnOpen
public void onOpen(Session session,@PathParam("projectId")String uuid){ public void onOpen(Session session,@PathParam("uuid")String uuid){
this.session = session; this.session = session;
this.uuid = uuid; this.uuid = uuid;
//session.getOpenSessions(). //session.getOpenSessions().
......
...@@ -4,7 +4,7 @@ import lombok.AllArgsConstructor; ...@@ -4,7 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity; import javax.persistence.*;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.List; import java.util.List;
...@@ -14,12 +14,16 @@ import java.util.List; ...@@ -14,12 +14,16 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class Report { public class Report {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private Language language;//语言 private Language language;//语言
private String framework;//架构 private String framework;//架构
private Separate isSeparate;//前后端是否分离 private Separate isSeparate;//前后端是否分离
private DatabaseType databaseType;//数据库类型 private DatabaseType databaseType;//数据库类型
private String compileFilePath;//项目编译文件,如果是maven项目,用maven编译,那么就是pom.xml private String compileFilePath;//项目编译文件,如果是maven项目,用maven编译,那么就是pom.xml
public DependenceManagement dependenceManagement;//版本管理方式 public DependenceManagement dependenceManagement;//版本管理方式
@ElementCollection
public List<String> jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具 public List<String> jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具
private String packagePath; private String packagePath;
......
package com.zjty.adaptationmaster.adaptor.service; package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List;
public interface AdaptationService { public interface AdaptationService {
ServerResponse adapt(HttpServletResponse response) throws IOException; ServerResponse adapt(Project response, List<Rule> ruleList,String uuid) throws IOException;
ServerResponse compile(Project project, String uuid);
ServerResponse deploy(Project project, String uuid);
ServerResponse unZipProject(String path,Project project);
ServerResponse start(Project project, String uuid);
ServerResponse stop(Project project, String uuid);
} }
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.base.response.ServerResponse;
public interface DeployService {
ServerResponse compile(int projectId, String uuid);
ServerResponse deploy(int projectId, String uuid);
}
package com.zjty.adaptationmaster.adaptor.service.Impl; package com.zjty.adaptationmaster.adaptor.service.Impl;
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.repository.ProjectDao;
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.FileUtil;
import com.zjty.adaptationmaster.utils.MavenCompiler;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
public class AdaptationServiceImpl implements AdaptationService { public class AdaptationServiceImpl implements AdaptationService {
@Autowired @Autowired
private Adaptor adaptor; private Adaptor adaptor;
@Autowired
private ProjectDao projectDao;
@Override
public ServerResponse adapt(Project project,List<Rule> rules,String uuid) throws IOException {
adaptor.setRuleList(rules);
adaptor.setProject(project);
adaptor.setUuid(uuid);
adaptor.doAdapt();
return ServerResponse.success(project);
}
@Override @Override
public ServerResponse adapt(HttpServletResponse response) throws IOException { public ServerResponse compile(Project project, String uuid) {
// Project project = new Project();
Rule rule = new Rule(); // project.setCompileFilePath("C:\\home\\project\\rsc\\hrmbclient\\pom.xml");
rule.setPathMatchType(Rule.MatchType.NAME); // project.setDependenceManagement(Report.DependenceManagement.MAVEN);
rule.setPath("pom.xml"); //Project project = projectDao.getOne(projectId);
rule.setTextMatching(Rule.TextMatch.AREA); if(project.getReport()==null)return ServerResponse.error("请进行项目体检或完善项目信息");
rule.setTarget("<groupId>||mysql||</groupId>"); switch (project.getReport().getDependenceManagement()) {
rule.setReplacing("<groupId>org.postgresql</groupId>"); case MAVEN:
List<Rule> objects = new ArrayList<>(); new MavenCompiler(project, Const.MAVENHOME, uuid).compiler();
objects.add(rule);
}
//Adaptor adaptor = new Adaptor(adaptationDetailLogEntityDao, originalFileDao); return ServerResponse.success(project);
adaptor.setWriter(response.getWriter()); }
adaptor.setRuleList(objects);
adaptor.setProjectPath("C:\\home\\project\\rsc\\hrmbclient"); @Override
adaptor.doAdapt(); public ServerResponse deploy(Project project, String uuid) {
return ServerResponse.success(); // Project project = new Project();
// project.setPackagePath("/home/user/Desktop/hrmanager-0.0.1-SNAPSHOT.war");
//Project project = projectDao.getOne(projectId);
new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).deploy(project,uuid);
return ServerResponse.success(project);
}
@Transactional
@Override
public ServerResponse unZipProject(String path, Project project) {
project = projectDao.getOne(project.getId());
FileUtil fileUtil = new FileUtil();
project.setCodeUrl(Const.UPLOAD_LOCATION+File.separator+project.getProjectName());
try {
fileUtil.unzip(path,project.getCodeUrl());
} catch (Exception e) {
e.printStackTrace();
}
return ServerResponse.success(project);
}
@Override
public ServerResponse start(Project project, String uuid) {
return ServerResponse.success(new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).start(project.getProjectName(),uuid));
}
@Override
public ServerResponse stop(Project project, String uuid) {
return ServerResponse.success(new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).stop(project.getProjectName(),uuid));
} }
} }
package com.zjty.adaptationmaster.adaptor.service.Impl; package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.utils.ReadedFileTask; import com.zjty.adaptationmaster.utils.ReadedFileTask;
import com.zjty.adaptationmaster.adaptor.entity.OriginalFile; import com.zjty.adaptationmaster.adaptor.entity.OriginalFile;
import com.zjty.adaptationmaster.adaptor.entity.Rule; import com.zjty.adaptationmaster.adaptor.entity.Rule;
...@@ -25,28 +27,33 @@ public class Adaptor { ...@@ -25,28 +27,33 @@ public class Adaptor {
@Autowired @Autowired
private OriginalFileDao originalFileDao; private OriginalFileDao originalFileDao;
private String uuid;
//@Value("${base.path}") //@Value("${base.path}")
private String basePath = Const.CONSOLE; private String basePath = Const.CONSOLE;
//线程池数量,合适的线程数量能让程序更快 //线程池数量,合适的线程数量能让程序更快
private static final int poolSize = 20; private static final int poolSize = 20;
//为避免内存溢出,对于超大文件,切分成部分分别读入处理,最后拼接写出 //为避免内存溢出,对于超大文件,切分成部分分别读入处理,最后拼接写出
private static final long LIMIT = 200*1024*1024; private static final long LIMIT = 200*1024*1024;
//将适配进度写出,用于页面实时展示
PrintWriter responseWriter;
List<Rule> ruleList; List<Rule> ruleList;
String projectPath; Project project;
//String projectPath;
//private List<Rule> adaptorEntities = new ArrayList<>(); //private List<Rule> adaptorEntities = new ArrayList<>();
public void setProjectPath(String projectPath) { //public void setProjectPath(String projectPath) {
this.projectPath = projectPath; // this.projectPath = projectPath;
//}
public void setProject(Project project) {
this.project = project;
} }
public void setRuleList(List<Rule> ruleList) { public void setRuleList(List<Rule> ruleList) {
this.ruleList = ruleList; this.ruleList = ruleList;
} }
public void setWriter(PrintWriter writer) { public void setUuid(String uuid) {
this.responseWriter = writer; this.uuid = uuid;
} }
public void doAdapt(){ public void doAdapt(){
...@@ -64,7 +71,7 @@ public class Adaptor { ...@@ -64,7 +71,7 @@ public class Adaptor {
//List<AdaptationDetailsLogEntity> detailsLogEntities = new ArrayList<>(); //List<AdaptationDetailsLogEntity> detailsLogEntities = new ArrayList<>();
ReadedFileRepository repository = new ReadedFileRepository(); ReadedFileRepository repository = new ReadedFileRepository();
try { try {
Files.walkFileTree(Paths.get(projectPath),new SimpleFileVisitor<Path>() { Files.walkFileTree(Paths.get(project.getCodeUrl()),new SimpleFileVisitor<Path>() {
@Override @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
...@@ -92,7 +99,8 @@ public class Adaptor { ...@@ -92,7 +99,8 @@ public class Adaptor {
originalFiles.add(originalFile); originalFiles.add(originalFile);
Files.move(file, originalPath); Files.move(file, originalPath);
//splitedFile.setDeal(true); //splitedFile.setDeal(true);
System.out.println("过滤得到符合规则的文件" + file); WebSocketServer.sendInfo(uuid,"过滤得到符合规则的文件" + file,"替换","过滤文件",project.getProjectName());
//System.out.println();
if (attrs.size() > LIMIT) { if (attrs.size() > LIMIT) {
System.out.println("找到大文件" + file); System.out.println("找到大文件" + file);
ReadedLinesRepository linesRepository = new ReadedLinesRepository(); ReadedLinesRepository linesRepository = new ReadedLinesRepository();
...@@ -106,7 +114,7 @@ public class Adaptor { ...@@ -106,7 +114,7 @@ public class Adaptor {
if (linesRepository.put(s)) { if (linesRepository.put(s)) {
List<ReadedFileTask.ReadedFile> readedFiles = new ArrayList<>(); List<ReadedFileTask.ReadedFile> readedFiles = new ArrayList<>();
readedFiles.add(new ReadedFileTask.ReadedFile(linesRepository.getReadedFiles(), attrs, file,thisFileMatched)); readedFiles.add(new ReadedFileTask.ReadedFile(linesRepository.getReadedFiles(), attrs, file,thisFileMatched));
ReadedFileTask apacheTask = new ReadedFileTask(readedFiles); ReadedFileTask apacheTask = new ReadedFileTask(readedFiles,project.getProjectName(),uuid);
apacheTask.setBySort(bySort); apacheTask.setBySort(bySort);
apacheTask.setIndex(i); apacheTask.setIndex(i);
pool.submit(apacheTask); pool.submit(apacheTask);
...@@ -115,7 +123,7 @@ public class Adaptor { ...@@ -115,7 +123,7 @@ public class Adaptor {
} }
List<ReadedFileTask.ReadedFile> readedFiles = new ArrayList<>(); List<ReadedFileTask.ReadedFile> readedFiles = new ArrayList<>();
readedFiles.add(new ReadedFileTask.ReadedFile(linesRepository.getReadedFiles(), attrs, file,thisFileMatched)); readedFiles.add(new ReadedFileTask.ReadedFile(linesRepository.getReadedFiles(), attrs, file,thisFileMatched));
ReadedFileTask apacheTask = new ReadedFileTask(readedFiles); ReadedFileTask apacheTask = new ReadedFileTask(readedFiles,project.getProjectName(),uuid);
apacheTask.setBySort(bySort); apacheTask.setBySort(bySort);
apacheTask.setIndex(i); apacheTask.setIndex(i);
pool.submit(apacheTask); pool.submit(apacheTask);
...@@ -125,7 +133,7 @@ public class Adaptor { ...@@ -125,7 +133,7 @@ public class Adaptor {
String s = new String(Files.readAllBytes(originalPath)); String s = new String(Files.readAllBytes(originalPath));
ReadedFileTask.ReadedFile readedFile = new ReadedFileTask.ReadedFile(s, attrs, file,thisFileMatched); ReadedFileTask.ReadedFile readedFile = new ReadedFileTask.ReadedFile(s, attrs, file,thisFileMatched);
if (repository.put(readedFile)) { if (repository.put(readedFile)) {
ReadedFileTask apacheTask = new ReadedFileTask(repository.getReadedFiles()); ReadedFileTask apacheTask = new ReadedFileTask(repository.getReadedFiles(),project.getProjectName(),uuid);
pool.submit(apacheTask); pool.submit(apacheTask);
} }
} }
...@@ -135,7 +143,7 @@ public class Adaptor { ...@@ -135,7 +143,7 @@ public class Adaptor {
return FileVisitResult.CONTINUE; return FileVisitResult.CONTINUE;
} }
}); });
ReadedFileTask apacheTask = new ReadedFileTask(repository.getReadedFiles()); ReadedFileTask apacheTask = new ReadedFileTask(repository.getReadedFiles(),project.getProjectName(),uuid);
pool.submit(apacheTask); pool.submit(apacheTask);
pool.shutdown(); pool.shutdown();
try { try {
......
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.service.DeployService;
import com.zjty.adaptationmaster.base.enums.Const;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.ApusicDeployer;
import com.zjty.adaptationmaster.utils.MavenCompiler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DeployServiceImpl implements DeployService {
@Autowired
private ProjectDao projectDao;
@Override
public ServerResponse compile(int projectId, String uuid) {
// Project project = new Project();
// project.setCompileFilePath("C:\\home\\project\\rsc\\hrmbclient\\pom.xml");
// project.setDependenceManagement(Report.DependenceManagement.MAVEN);
Project project = projectDao.getOne(projectId);
if(project.getReport()==null)return ServerResponse.error("请进行项目体检或完善项目信息");
switch (project.getReport().getDependenceManagement()) {
case MAVEN:
new MavenCompiler(project, Const.MAVENHOME, uuid).compiler();
}
return ServerResponse.success(project);
}
@Override
public ServerResponse deploy(int projectId, String uuid) {
// Project project = new Project();
// project.setPackagePath("/home/user/Desktop/hrmanager-0.0.1-SNAPSHOT.war");
Project project = projectDao.getOne(projectId);
new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).deploy(project,uuid);
return ServerResponse.success(project);
}
}
...@@ -32,7 +32,8 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -32,7 +32,8 @@ 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 fileName = UUID.randomUUID().toString() + ".sql"; String suffix = sourceName.substring(sourceName.lastIndexOf(".")+1);
String fileName = UUID.randomUUID().toString() + suffix;
//不存在该目录,创建目录 //不存在该目录,创建目录
File file = new File("/sqlFile/uploads"); File file = new File("/sqlFile/uploads");
if(!file.exists()){ if(!file.exists()){
......
...@@ -19,8 +19,8 @@ public class InspectServiceImpl implements InspectService { ...@@ -19,8 +19,8 @@ public class InspectServiceImpl implements InspectService {
@Transactional @Transactional
@Override @Override
public ServerResponse inspect(int projectId) { public ServerResponse inspect(Project project) {
Project project = projectDao.getOne(projectId); //Project project = projectDao.getOne(projectId);
return ServerResponse.success(new Inspector(project,new HashMap<>(),new HashMap<>(),new ArrayList<>()).inspect()); return ServerResponse.success(new Inspector(project,new HashMap<>(),new HashMap<>()/*,new ArrayList<>()*/).inspect());
} }
} }
package com.zjty.adaptationmaster.adaptor.service; package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
public interface InspectService { public interface InspectService {
ServerResponse inspect(int projectId); ServerResponse inspect(Project projectId);
} }
...@@ -38,6 +38,8 @@ public class Const { ...@@ -38,6 +38,8 @@ public class Const {
"[{'name' : '设备1号', 'id' : 'K001002'},{'name' : '设备2号', 'id' : 'K003004'}]"; "[{'name' : '设备1号', 'id' : 'K001002'},{'name' : '设备2号', 'id' : 'K003004'}]";
} }
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:\\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/Desktop/AAS-V9.0/bin/appctl";
public static final String CTLPWD = "Qwert123!@#"; public static final String CTLPWD = "Qwert123!@#";
......
...@@ -19,16 +19,7 @@ public class ApusicDeployer { ...@@ -19,16 +19,7 @@ public class ApusicDeployer {
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 '"+ctlPwd+"' install "+project.getProjectName()+" "+project.getReport().getPackagePath();
try { appctl(command,webSocketName,project.getProjectName());
Process exec = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
WebSocketServer.sendInfo(line, webSocketName,"部署","running",project.getProjectName());
}
} catch (IOException e) {
e.printStackTrace();
}
} }
public List<ProjectStatueFromMiddleware> list(){ public List<ProjectStatueFromMiddleware> list(){
List<ProjectStatueFromMiddleware> result = new ArrayList<>(); List<ProjectStatueFromMiddleware> result = new ArrayList<>();
...@@ -51,4 +42,27 @@ public class ApusicDeployer { ...@@ -51,4 +42,27 @@ public class ApusicDeployer {
} }
return result; return result;
} }
public boolean start(String projectName,String webSocketName){
String command = ctlPath+" -p '"+ctlPwd+"' start "+projectName;
appctl(command,webSocketName,projectName);
return true;
}
public boolean stop(String projectName,String webSocketName){
String command = ctlPath+" -p '"+ctlPwd+"' stop "+projectName;
appctl(command,webSocketName,projectName);
return true;
}
private void appctl(String command,String webSocketName,String projectName){
try {
Process exec = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
WebSocketServer.sendInfo(line, webSocketName, "部署", "running", projectName);
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }
...@@ -2,14 +2,18 @@ package com.zjty.adaptationmaster.utils; ...@@ -2,14 +2,18 @@ package com.zjty.adaptationmaster.utils;
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 org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.file.*; import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.regex.Matcher;
import java.util.List;
import java.util.Map;
/** /**
* 项目体检,根据既定特征值, * 项目体检,根据既定特征值,
...@@ -25,7 +29,8 @@ public class Inspector { ...@@ -25,7 +29,8 @@ public class Inspector {
Map<String,Report.Language> suffixLanguageMapping = new HashMap<>(); Map<String,Report.Language> suffixLanguageMapping = new HashMap<>();
Map<String, Report.Separate> suffixSeparateMapping = new HashMap<>(); Map<String, Report.Separate> suffixSeparateMapping = new HashMap<>();
List<String> configFileSuffixList = new ArrayList<>(); List<String> configFileSuffixList = new ArrayList<>();
Inspector inspector = new Inspector(project,suffixLanguageMapping,suffixSeparateMapping,configFileSuffixList); Inspector inspector = new Inspector(project,suffixLanguageMapping,suffixSeparateMapping/*,configFileSuffixList*/);
inspector.inspect();
} }
private Project project; private Project project;
...@@ -37,7 +42,7 @@ public class Inspector { ...@@ -37,7 +42,7 @@ public class Inspector {
private Map<String,List<Path>> configFileTypePathsMapping; private Map<String,List<Path>> configFileTypePathsMapping;
public Inspector(Project project,Map<String,Report.Language> suffixLanguageMapping,Map<String, Report.Separate> suffixSeparateMapping,List<String> configFileSuffixList){ public Inspector(Project project,Map<String,Report.Language> suffixLanguageMapping,Map<String, Report.Separate> suffixSeparateMapping/*,List<String> configFileSuffixList*/){
this.project = project; this.project = project;
this.suffixLanguageMapping = suffixLanguageMapping; this.suffixLanguageMapping = suffixLanguageMapping;
this.suffixSeparateMapping = suffixSeparateMapping; this.suffixSeparateMapping = suffixSeparateMapping;
...@@ -50,9 +55,10 @@ public class Inspector { ...@@ -50,9 +55,10 @@ public class Inspector {
separateMatchMap.put(s,new Counter()); separateMatchMap.put(s,new Counter());
} }
this.configFileTypePathsMapping = new HashMap<>(); this.configFileTypePathsMapping = new HashMap<>();
for(String s:configFileSuffixList){ // for(String s:configFileSuffixList){
configFileTypePathsMapping.put(s,new ArrayList<>()); // configFileTypePathsMapping.put(s,new ArrayList<>());
} // }
configFileTypePathsMapping.put("xml",new ArrayList<>());
this.report = new Report(); this.report = new Report();
} }
...@@ -144,7 +150,65 @@ public class Inspector { ...@@ -144,7 +150,65 @@ public class Inspector {
} }
} }
for(Map.Entry<String,List<Path>> entry:configFileTypePathsMapping.entrySet()){ for(Map.Entry<String,List<Path>> entry:configFileTypePathsMapping.entrySet()){
switch (entry.getKey()){
case ".xml":
for(Path path:entry.getValue()){
if(path.getFileName().equals("pom.xml")){
report.setDependenceManagement(Report.DependenceManagement.MAVEN);
report.setCompileFilePath(path.toString());
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(path.toFile());
} catch (DocumentException e) {
e.printStackTrace();
}
//Node dependences = document.selectSingleNode("dependencies");
//report.setPackagePath();
}
//PathMatcher matcher = FileSystems.getDefault().getPathMatcher("");
if(path.getFileName().toString().equals("application.properties")){
Properties properties = new Properties();
try {
properties.load(new FileInputStream(path.toFile()));
} catch (IOException e) {
e.printStackTrace();
}
String datasourceDriver = properties.getProperty("spring.datasource.driver-class-name");
String active = properties.getProperty("spring.profiles.active");
System.out.println(path.getParent());
File file = new File(path.getParent().toString()+"/application-"+active+".properties");
if(file.exists()){
Properties properties1 = new Properties();
try {
properties1.load(new FileInputStream(file));
String driver = properties1.getProperty("spring.datasource.driver-class-name");
if(driver!=null)datasourceDriver = driver;
} catch (IOException e) {
e.printStackTrace();
}
}else {
System.out.println("没有找到active配置文件");
}
if(datasourceDriver!=null){
if(datasourceDriver.contains(Report.DatabaseType.MYSQL.name().toLowerCase())){
report.setDatabaseType(Report.DatabaseType.MYSQL);
} else if(datasourceDriver.contains(Report.DatabaseType.POSTGRE.name().toLowerCase())){
report.setDatabaseType(Report.DatabaseType.POSTGRE);
} else if(datasourceDriver.contains(Report.DatabaseType.ORACLE.name().toLowerCase())){
report.setDatabaseType(Report.DatabaseType.ORACLE);
} else if(datasourceDriver.contains(Report.DatabaseType.SQLSERVER.name().toLowerCase())){
report.setDatabaseType(Report.DatabaseType.SQLSERVER);
}
}
}
}
}
} }
// for(Path path:propertiesConfigPaths){ // for(Path path:propertiesConfigPaths){
// try { // try {
......
...@@ -61,10 +61,14 @@ public class MavenCompiler { ...@@ -61,10 +61,14 @@ public class MavenCompiler {
// } // }
public static void main(String[] args) { public static void main(String[] args) {
InvocationRequest request = new DefaultInvocationRequest(); InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File("D:\\SingleHRManger1.0(scannerAndFriger)")); //request.setPomFile(new File("D:\\SingleHRManger1.0(scannerAndFriger)"));
request.setGoals(Collections.singletonList("compile")); request.setPomFile(new File("C:\\home\\project\\rsc\\hrmbclient\\pom.xml"));
/**
* Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
*/
request.setGoals(Collections.singletonList("package"));
Invoker invoker = new DefaultInvoker(); Invoker invoker = new DefaultInvoker();
//invoker.setMavenHome(new File(mavenHome)); invoker.setMavenHome(new File(Const.MAVENHOME));
invoker.setOutputHandler(new InvocationOutputHandler() { invoker.setOutputHandler(new InvocationOutputHandler() {
@Override @Override
...@@ -74,5 +78,10 @@ public class MavenCompiler { ...@@ -74,5 +78,10 @@ public class MavenCompiler {
//System.out.println(s); //System.out.println(s);
} }
}); });
try {
invoker.execute(request);
} catch (MavenInvocationException e) {
e.printStackTrace();
}
} }
} }
package com.zjty.adaptationmaster.utils; package com.zjty.adaptationmaster.utils;
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 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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import java.io.*; import java.io.*;
import java.nio.file.Path; import java.nio.file.Path;
...@@ -16,11 +15,14 @@ import java.util.List; ...@@ -16,11 +15,14 @@ import java.util.List;
public class ReadedFileTask implements Runnable { public class ReadedFileTask implements Runnable {
private String projectName;
private String uuid;
private List<ReadedFile> readedFiles; private List<ReadedFile> readedFiles;
//private Writer responseWriter; //private Writer responseWriter;
public ReadedFileTask(List<ReadedFile> readedFiles/*,Writer responseWriter*/) { public ReadedFileTask(List<ReadedFile> readedFiles,String projectName,String uuid) {
this.readedFiles = readedFiles; this.readedFiles = readedFiles;
//this.responseWriter = responseWriter; this.projectName = projectName;
this.uuid = uuid;
} }
private Adaptor.WriterBySort bySort; private Adaptor.WriterBySort bySort;
...@@ -34,7 +36,6 @@ public class ReadedFileTask implements Runnable { ...@@ -34,7 +36,6 @@ public class ReadedFileTask implements Runnable {
this.index = index; this.index = index;
} }
@Override @Override
public void run() { public void run() {
for(ReadedFile readedFile:readedFiles){ for(ReadedFile readedFile:readedFiles){
...@@ -52,6 +53,7 @@ public class ReadedFileTask implements Runnable { ...@@ -52,6 +53,7 @@ public class ReadedFileTask implements Runnable {
int i = content.indexOf(matching); int i = content.indexOf(matching);
if(i>-1){ if(i>-1){
WebSocketServer.sendInfo(uuid,readedFile.getPath().getFileName()+":"+matching+" 替换为 "+entity.getReplacing(),"替换","正在替换",projectName);
int beginIndex = content.lastIndexOf(begin, i); int beginIndex = content.lastIndexOf(begin, i);
int endIndex = content.indexOf(end, i + 1); int endIndex = content.indexOf(end, i + 1);
if(beginIndex>-1&&endIndex>-1){ if(beginIndex>-1&&endIndex>-1){
...@@ -71,6 +73,7 @@ public class ReadedFileTask implements Runnable { ...@@ -71,6 +73,7 @@ public class ReadedFileTask implements Runnable {
bySort.insert(index,content); bySort.insert(index,content);
} else { } else {
System.out.println("writerFile"); System.out.println("writerFile");
WebSocketServer.sendInfo(uuid,readedFile.getPath().getFileName()+"","替换","正在写出",projectName);
File file = readedFile.getPath().toFile(); File file = readedFile.getPath().toFile();
file.createNewFile(); file.createNewFile();
OutputStreamWriter contentWriter = new OutputStreamWriter(new FileOutputStream(file)); OutputStreamWriter contentWriter = new OutputStreamWriter(new FileOutputStream(file));
......
...@@ -671,7 +671,6 @@ public class Test1 { ...@@ -671,7 +671,6 @@ public class Test1 {
} }
if(haveJave){ if(haveJave){
dirPath.add(file.getAbsolutePath()); dirPath.add(file.getAbsolutePath());
} }
} }
......
package com.zjty.adaptationmaster;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
public class TestProperties {
public static void main(String[] args) {
// Properties properties = new Properties();
// String bb = properties.getProperty("bb");
// System.out.println(bb==null);
// System.out.println(properties.getProperty("aa"));
String command = "C:\\Users\\wyl\\Desktop\\national\\AAS-V9.0\\bin\\appctl.cmd -p Qwer123!@# start hrm";
Process exec = null;
try {
exec = Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
String line = null;
try {
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}catch (IOException e){
e.printStackTrace();
}
BufferedReader reader1 = new BufferedReader(new InputStreamReader(exec.getErrorStream()));
String line1 = null;
try {
while ((line1 = reader1.readLine()) != null) {
System.out.println(line1);
}
}catch (IOException e){
e.printStackTrace();
}
System.out.println(exec.exitValue());
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论