Quellcode durchsuchen

添加日志解析报错类型;补全入库代码

Miaomz vor 4 Jahren
Ursprung
Commit
aefeb294b8

+ 9 - 0
src/main/java/com/seecoder/dataanalysis/logic/parser/ParsingException.java

@@ -10,11 +10,20 @@ public class ParsingException extends Exception{
      * 0: 元日志格式错误
      * 1:日志格式错误
      * 2:不支持的日志操作码
+     * 3: 缺少projectId主键,无法存储
+     * 4: opType和数据内容不匹配
      */
     private int errorCode;
+    private String rawJson;
 
     public ParsingException(String message, int errorCode) {
         super(message);
         this.errorCode = errorCode;
     }
+
+    public ParsingException(String message, int errorCode, String rawJson) {
+        super(message);
+        this.errorCode = errorCode;
+        this.rawJson = rawJson;
+    }
 }

+ 32 - 25
src/main/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImpl.java

@@ -54,13 +54,17 @@ public class LogParsingServiceImpl implements LogParsingService {
             return JsonUtil.toObject(log, SimpleLog.class);
         } catch (JSONException e) {
             e.printStackTrace();
-            throw new ParsingException(e.toString(), 0);
+            throw new ParsingException(e.toString(), 0, log);
         }
     }
 
     @Override
     @SuppressWarnings("unchecked")
     public <T> T parseLogData(SimpleLog simpleLog, boolean save) throws ParsingException{
+        if (simpleLog == null) {
+            return null;
+        }
+
         try {
             String className = parseOpType(simpleLog.getOpType());
             Class clazz = Class.forName(className);
@@ -72,10 +76,10 @@ public class LogParsingServiceImpl implements LogParsingService {
             return (T) data;
         } catch (ClassNotFoundException|ClassCastException e){
             e.printStackTrace();
-            return null;
+            throw new ParsingException(e.toString(), 4, simpleLog.getData());
         }  catch (JSONException e) {
             e.printStackTrace();
-            throw new ParsingException(e.toString(), 1);
+            throw new ParsingException(e.toString(), 1, simpleLog.getData());
         }
     }
 
@@ -120,40 +124,37 @@ public class LogParsingServiceImpl implements LogParsingService {
             BugInfo info = LogConvertor.convertToBugInfoEntity(bugInfoDTO);
 
             Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(bugInfoDTO.getProjectId());
-            if (devcloudInfo.isPresent()) {
-                devcloudInfo.get().getBugList().add(info);
-                devcloudInfoDao.save(devcloudInfo.get());
-            }
+            DevcloudInfo devcloudInfoEntity = devcloudInfo.orElseGet(() -> createDevCloudInfo(bugInfoDTO.getProjectId()));
+            devcloudInfoEntity.getBugList().add(info);
+            devcloudInfoDao.save(devcloudInfoEntity);
 
         } else if (className.equals(CommitInfoDTO.class.getName())) {
             CommitInfoDTO commitInfoDTO = (CommitInfoDTO) data;
             CommitInfo info = LogConvertor.convertToCommitInfoEntity(commitInfoDTO);
 
             Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(commitInfoDTO.getProjectId());
-            if (devcloudInfo.isPresent()) {
-                devcloudInfo.get().getCommitList().add(info);
-                devcloudInfoDao.save(devcloudInfo.get());
-            }
+            DevcloudInfo devcloudInfoEntity = devcloudInfo.orElseGet(() -> createDevCloudInfo(commitInfoDTO.getProjectId()));
+            devcloudInfoEntity.getCommitList().add(info);
+            devcloudInfoDao.save(devcloudInfoEntity);
 
         } else if (className.equals(TestInfoDTO.class.getName())) {
             TestInfoDTO testInfoDTO = (TestInfoDTO) data;
             TestInfo info = LogConvertor.convertToTestInfoEntity(testInfoDTO);
 
             Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(testInfoDTO.getProjectId());
-            if (devcloudInfo.isPresent()) {
-                devcloudInfo.get().getTestList().add(info);
-                devcloudInfoDao.save(devcloudInfo.get());
-            }
+            DevcloudInfo devcloudInfoEntity = devcloudInfo.orElseGet(() -> createDevCloudInfo(testInfoDTO.getProjectId()));
+            devcloudInfoEntity.getTestList().add(info);
+            devcloudInfoDao.save(devcloudInfoEntity);
 
         } else if (className.equals(PipelineCreationDTO.class.getName())) {
             PipelineCreationDTO creationDTO = (PipelineCreationDTO) data;
             Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(creationDTO.getProjectId());
-            if (devcloudInfo.isPresent()) {
-                PipelineInfo pipelineInfo = new PipelineInfo();
-                pipelineInfo.setPipelineId(creationDTO.getPipelineId());
-                devcloudInfo.get().getPipelineList().add(pipelineInfo);
-                devcloudInfoDao.save(devcloudInfo.get());
-            }
+            DevcloudInfo devcloudInfoEntity = devcloudInfo.orElseGet(() -> createDevCloudInfo(creationDTO.getProjectId()));
+
+            PipelineInfo pipelineInfo = new PipelineInfo();
+            pipelineInfo.setPipelineId(creationDTO.getPipelineId());
+            devcloudInfoEntity.getPipelineList().add(pipelineInfo);
+            devcloudInfoDao.save(devcloudInfoEntity);
 
         } else if (className.equals(PipelineDeletionDTO.class.getName())) {
             PipelineDeletionDTO deletionDTO = (PipelineDeletionDTO) data;
@@ -187,10 +188,9 @@ public class LogParsingServiceImpl implements LogParsingService {
             TreeNodeInfo info = LogConvertor.convertToTreeNodeInfoEntity(nodeInfoDTO);
 
             Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(nodeInfoDTO.getProjectId());
-            if (devcloudInfo.isPresent()) {
-                devcloudInfo.get().getTreeNodeList().add(info);
-                devcloudInfoDao.save(devcloudInfo.get());
-            }
+            DevcloudInfo devcloudInfoEntity = devcloudInfo.orElseGet(() -> createDevCloudInfo(nodeInfoDTO.getProjectId()));
+            devcloudInfoEntity.getTreeNodeList().add(info);
+            devcloudInfoDao.save(devcloudInfoEntity);
 
         }  else if (className.equals(TreeNodeDeletionDTO.class.getName())) {
             TreeNodeDeletionDTO deletionDTO = (TreeNodeDeletionDTO) data;
@@ -212,4 +212,11 @@ public class LogParsingServiceImpl implements LogParsingService {
             }
         }
     }
+
+    private DevcloudInfo createDevCloudInfo(Integer projectId) {
+        DevcloudInfo devcloudInfo = new DevcloudInfo(projectId, new ArrayList<>(), new ArrayList<>(),
+                new ArrayList<>(), new ArrayList<>(), new ArrayList<>());
+        this.devcloudInfoDao.save(devcloudInfo);
+        return devcloudInfo;
+    }
 }