提交 4030a7fa authored 作者: 马晨俊's avatar 马晨俊

mcj:更新搜索依赖功能

上级 d099740b
package com.zjty.adaptationmaster.adaptor;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mcj
* @date 2020-01-15 13:18
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VueBrowserslist {
List<String> production = new ArrayList<>();
List<String> development = new ArrayList<>();
}
......@@ -22,8 +22,10 @@ public class Report {
private DatabaseType databaseType;//数据库类型
private int fileNum;
private long lineNum;
//取名,后端依赖
private List<PomDependency> dependencies;
//取名。前端依赖
private List<PomDependency> dependencies1;
@Transient
private ProjectPom projectPom;
......
package com.zjty.adaptationmaster.adaptor.entity;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.zjty.adaptationmaster.adaptor.VueBrowserslist;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Mcj
* @date 2020-01-15 11:18
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VueDep {
String name;
String version;
@JsonSetter("private")
String vuePrivate;
Map<String,String> dependencies = new HashMap<>();
Map<String,String> scripts = new HashMap<>();
Map<String,String> eslintConfig = new HashMap<>();
VueBrowserslist browserslist;
}
......@@ -21,6 +21,12 @@ public class PomDependency {
private String version;
private Integer reportId;
/**
* 1:前端依赖
* 2:后端依赖
*/
// TODO: 2020-01-15 取名
private Integer q;
/*依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展
名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。
如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整
......
......@@ -97,9 +97,11 @@ public class InspectServiceImpl implements InspectService {
reportEntity.setIsSeparate(report.getIsSeparate());
reportEntity.setLanguage(report.getLanguage());
reportEntity.setLineNum(report.getLineNum());
reportEntity.setCreateTime(new Date().getTime());
reportEntity.setCreateTime(System.currentTimeMillis());
reportEntity.setPackagePath(report.getPackagePath());
List<Inspector.Warn> warnList = report.getWarnList();
String s1 = JSON.toJSONString(warnList);
reportEntity.setWarnList(s1);
......@@ -110,13 +112,20 @@ public class InspectServiceImpl implements InspectService {
reportEntity.setPackagePath(project.getCodeUrl());
}
//入库
ReportEntity reportEntitySave = reportDao.save(reportEntity);
Project one = projectDao.getOne(project.getId());
List<PomDependency> dependencies = report.getDependencies();
for (PomDependency dependency : dependencies) {
dependency.setReportId(reportEntitySave.getId());
}
//TODO
List<PomDependency> dependencies1 = report.getDependencies1();
for (PomDependency dependency : dependencies1) {
dependency.setReportId(reportEntitySave.getId());
}
pomDependencyDao.saveAll(dependencies);
pomDependencyDao.saveAll(dependencies1);
one.setReport(reportEntitySave);
return ServerResponse.success(reportEntitySave);
}else{
......@@ -128,10 +137,22 @@ public class InspectServiceImpl implements InspectService {
public ServerResponse getReportById(Integer id) {
ReportEntity one = reportDao.getOne(id);
Report report = new Report();
// TODO: 2020-01-15 取名
ArrayList<PomDependency> pomDependencies = new ArrayList<>();
ArrayList<PomDependency> pomDependencies1 = new ArrayList<>();
List<PomDependency> allByReportIdEquals = pomDependencyDao.findAllByReportIdEquals(id);
for (PomDependency allByReportIdEqual : allByReportIdEquals) {
if(allByReportIdEqual.getQ()==1){
pomDependencies.add(allByReportIdEqual);
}else{
pomDependencies1.add(allByReportIdEqual);
}
}
report.setId(one.getId());
report.setDependencies(allByReportIdEquals);
report.setDependencies(pomDependencies1);
report.setDependencies1(pomDependencies);
report.setDatabaseType(one.getDatabaseType());
report.setLanguage(one.getLanguage());
report.setPackagePath(one.getPackagePath());
......
......@@ -13,10 +13,12 @@ public class AnalysisPom {
PomDependency dependency = new PomDependency();
dependency.setGroupId("aaa.bbb");
dependency.setArtifactId("ccc.ddd");
dependency.setQ(2);
dependency.setVersion("1.0.0");
dependencies.add(dependency);
ProjectPom projectPom = new ProjectPom();
projectPom.setDependencies(dependencies);
return projectPom;
}
}
package com.zjty.adaptationmaster.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zjty.adaptationmaster.adaptor.entity.VueDep;
import org.apache.poi.ss.formula.functions.T;
import java.io.*;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
......@@ -12,10 +13,12 @@ import java.util.zip.ZipFile;
public class FileUtil {
static int BUFFER_SIZE = 1024;
/**
* zip解压
* @param srcFile zip源文件
* @param destDirPath 解压后的目标文件夹
*
* @param srcFile zip源文件
* @param destDirPath 解压后的目标文件夹
* @throws RuntimeException 解压失败会抛出运行时异常
*/
public static void unZip(File srcFile, String destDirPath) throws RuntimeException {
......@@ -41,7 +44,7 @@ public class FileUtil {
// 如果是文件,就先创建一个文件,然后用io流把内容copy过去
File targetFile = new File(destDirPath + "/" + entry.getName());
// 保证这个文件的父文件夹必须要存在
if(!targetFile.getParentFile().exists()){
if (!targetFile.getParentFile().exists()) {
targetFile.getParentFile().mkdirs();
}
targetFile.createNewFile();
......@@ -59,11 +62,11 @@ public class FileUtil {
}
}
long end = System.currentTimeMillis();
System.out.println("解压完成,耗时:" + (end - start) +" ms");
System.out.println("解压完成,耗时:" + (end - start) + " ms");
} catch (Exception e) {
throw new RuntimeException("unzip error from ZipUtils", e);
} finally {
if(zipFile != null){
if (zipFile != null) {
try {
zipFile.close();
} catch (IOException e) {
......@@ -72,24 +75,25 @@ public class FileUtil {
}
}
}
private static void recursiveFiles(String path){
private static void recursiveFiles(String path) {
// 创建 File对象
File file = new File(path);
// 取 文件/文件夹
File files[] = file.listFiles();
// 对象为空 直接返回
if(files == null){
if (files == null) {
return;
}
// 存在文件 遍历 判断
for (File f : files) {
// 判断是否为 文件夹
if(f.isDirectory()){
if (f.isDirectory()) {
// 为 文件夹继续遍历
recursiveFiles(f.getAbsolutePath());
// 判断是否为 文件
} else if(f.isFile()){
if("pom.xml".equals(f.getName())){
} else if (f.isFile()) {
if ("pom.xml".equals(f.getName())) {
System.out.println("解析pom");
}
System.out.println(f.getName());
......@@ -99,14 +103,26 @@ public class FileUtil {
}
}
}
public static void main(String[] args) {
String filePath = "C:\\Users\\wyl\\Desktop\\alllib.zip";
String path = "C:\\Users\\wyl\\Desktop\\unZip";
static VueDep parseJsonFile(String path) {
try {
unZip(new File(filePath),path);
File file = new File(path);
VueDep vueDep;
vueDep = new ObjectMapper().readValue(file,VueDep.class);
return vueDep;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws IOException {
File file = new File("/Users/mcj/Downloads/package.json");
VueDep vueDep = new ObjectMapper().readValue(file, VueDep.class);
System.out.println(vueDep);
}
}
......@@ -4,6 +4,7 @@ import com.zjty.adaptationmaster.adaptor.controller.WebSocketServer;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.VueDep;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.PomDependency;
import com.zjty.adaptationmaster.base.enums.Const;
......@@ -288,8 +289,12 @@ public class Inspector {
* 对于具体的配置文件对应的处理方法
* 增加要处理的文件类型需要在这里增加相应的处理方法
*/
//后端依赖
ArrayList<PomDependency> dependencies1 = new ArrayList<>();
//前端依赖
ArrayList<PomDependency> dependencies2 = new ArrayList<>();
for(Map.Entry<String,List<Path>> entry:configFileTypePathsMapping.entrySet()){
//System.out.println(entry.getKey());
switch (entry.getKey()){
......@@ -409,8 +414,27 @@ public class Inspector {
});
}
break;
case "json":
for(Path path:entry.getValue()) {
if(path.getFileName().equals("package.json")){
VueDep json = FileUtil.parseJsonFile(path.toString());
Map<String, String> dependencies = json.getDependencies();
for (String s : dependencies.keySet()) {
PomDependency pomDependency = new PomDependency();
pomDependency.setQ(1);
pomDependency.setArtifactId(s);
pomDependency.setVersion(dependencies.get(s));
pomDependency.setReportId(report.getId());
dependencies2.add(pomDependency);
}
}
}
break;
}
}
// for(Path path:propertiesConfigPaths){
// try {
// for(String s:Files.readAllLines(path)){
......@@ -462,6 +486,7 @@ public class Inspector {
e.printStackTrace();
}
report.setDependencies(dependencies1);
report.setDependencies1(dependencies2);
report.setWarnList(warnList);
return report;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论