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