Sfoglia il codice sorgente

补全日志入库代码

Miaomz 4 anni fa
parent
commit
a4e39306c1

+ 45 - 3
src/main/java/com/seecoder/dataanalysis/logic/parser/convertor/LogConvertor.java

@@ -1,10 +1,12 @@
 package com.seecoder.dataanalysis.logic.parser.convertor;
 
+import com.seecoder.dataanalysis.data.entity.devcloud.BugInfo;
+import com.seecoder.dataanalysis.data.entity.devcloud.CommitInfo;
+import com.seecoder.dataanalysis.data.entity.devcloud.TestInfo;
+import com.seecoder.dataanalysis.data.entity.devcloud.TreeNodeInfo;
 import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
 import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
-import com.seecoder.dataanalysis.vo.AnswerDTO;
-import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
-import com.seecoder.dataanalysis.vo.EvalExamRecordDTO;
+import com.seecoder.dataanalysis.vo.*;
 import org.springframework.beans.BeanUtils;
 
 import java.util.HashMap;
@@ -51,4 +53,44 @@ public class LogConvertor {
         }
         return info;
     }
+
+    public static BugInfo convertToBugInfoEntity(BugInfoDTO bugInfoDTO) {
+        if (bugInfoDTO == null) {
+            return null;
+        }
+
+        BugInfo info = new BugInfo();
+        BeanUtils.copyProperties(bugInfoDTO, info);
+        return info;
+    }
+
+    public static CommitInfo convertToCommitInfoEntity(CommitInfoDTO commitInfoDTO) {
+        if (commitInfoDTO == null) {
+            return null;
+        }
+
+        CommitInfo info = new CommitInfo();
+        BeanUtils.copyProperties(commitInfoDTO, info);
+        return info;
+    }
+
+    public static TestInfo convertToTestInfoEntity(TestInfoDTO testInfoDTO) {
+        if (testInfoDTO == null) {
+            return null;
+        }
+
+        TestInfo info = new TestInfo();
+        BeanUtils.copyProperties(testInfoDTO, info);
+        return info;
+    }
+
+    public static TreeNodeInfo convertToTreeNodeInfoEntity(TreeNodeInfoDTO treeNodeInfoDTO) {
+        if (treeNodeInfoDTO == null) {
+            return null;
+        }
+
+        TreeNodeInfo info = new TreeNodeInfo();
+        BeanUtils.copyProperties(treeNodeInfoDTO, info);
+        return info;
+    }
 }

+ 105 - 4
src/main/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImpl.java

@@ -1,8 +1,10 @@
 package com.seecoder.dataanalysis.logic.parser.impl;
 
 import com.alibaba.fastjson.JSONException;
+import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudInfoDao;
 import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
 import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
+import com.seecoder.dataanalysis.data.entity.devcloud.*;
 import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
 import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
 import com.seecoder.dataanalysis.logic.parser.LogParsingService;
@@ -14,8 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author miaomuzhi
@@ -30,18 +31,21 @@ public class LogParsingServiceImpl implements LogParsingService {
     private Map<Integer, String> opTypesTable;
 
     private EvalExamRecordDao evalExamRecordDao;
-
     private EvalExamInfoDao evalExamInfoDao;
+    private DevcloudInfoDao devcloudInfoDao;
 
     @Autowired
     public void setEvalExamRecordDao(EvalExamRecordDao evalExamRecordDao) {
         this.evalExamRecordDao = evalExamRecordDao;
     }
-
     @Autowired
     public void setEvalExamInfoDao(EvalExamInfoDao evalExamInfoDao) {
         this.evalExamInfoDao = evalExamInfoDao;
     }
+    @Autowired
+    public void setDevcloudInfoDao(DevcloudInfoDao devcloudInfoDao) {
+        this.devcloudInfoDao = devcloudInfoDao;
+    }
 
 
     @Override
@@ -106,9 +110,106 @@ public class LogParsingServiceImpl implements LogParsingService {
         if (className.equals(EvalExamInfoDTO.class.getName())) {
             EvalExamInfo info = LogConvertor.convertToEvalExamInfoEntity((EvalExamInfoDTO) data);
             evalExamInfoDao.save(info);
+
         } else if (className.equals(EvalExamRecordDTO.class.getName())) {
             EvalExamRecord record = LogConvertor.convertToEvalExamRecordEntity((EvalExamRecordDTO) data);
             evalExamRecordDao.save(record);
+
+        } else if (className.equals(BugInfoDTO.class.getName())) {
+            BugInfoDTO bugInfoDTO = (BugInfoDTO) data;
+            BugInfo info = LogConvertor.convertToBugInfoEntity(bugInfoDTO);
+
+            Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(bugInfoDTO.getProjectId());
+            if (devcloudInfo.isPresent()) {
+                devcloudInfo.get().getBugList().add(info);
+                devcloudInfoDao.save(devcloudInfo.get());
+            }
+
+        } 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());
+            }
+
+        } 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());
+            }
+
+        } 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());
+            }
+
+        } else if (className.equals(PipelineDeletionDTO.class.getName())) {
+            PipelineDeletionDTO deletionDTO = (PipelineDeletionDTO) data;
+            Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(deletionDTO.getProjectId());
+            //TODO 暂不处理删除部署
+
+        } else if (className.equals(PipelineDeployDTO.class.getName())) {
+            PipelineDeployDTO deployDTO = (PipelineDeployDTO) data;
+
+            boolean foundPipeline = false;
+            for (DevcloudInfo devcloudInfo: devcloudInfoDao.findAll()) {
+                for (PipelineInfo info: devcloudInfo.getPipelineList()) {
+                    if (info.getPipelineId().equals(deployDTO.getPipelineId())) {
+                        info.setUserId(deployDTO.getUserId());  // 更新用户id
+                        int successInc = (deployDTO.getSuccess() ? 1 : 0);
+                        info.setSuccess(info.getSuccess() + successInc);
+                        info.setTotal(info.getTotal() + 1);
+                        foundPipeline = true;
+                        break;
+                    }
+                }
+
+                if (foundPipeline) {
+                    devcloudInfoDao.save(devcloudInfo);
+                    break;
+                }
+            }
+
+        } else if (className.equals(TreeNodeInfoDTO.class.getName())) {
+            TreeNodeInfoDTO nodeInfoDTO = (TreeNodeInfoDTO) data;
+            TreeNodeInfo info = LogConvertor.convertToTreeNodeInfoEntity(nodeInfoDTO);
+
+            Optional<DevcloudInfo> devcloudInfo = devcloudInfoDao.findById(nodeInfoDTO.getProjectId());
+            if (devcloudInfo.isPresent()) {
+                devcloudInfo.get().getTreeNodeList().add(info);
+                devcloudInfoDao.save(devcloudInfo.get());
+            }
+
+        }  else if (className.equals(TreeNodeDeletionDTO.class.getName())) {
+            TreeNodeDeletionDTO deletionDTO = (TreeNodeDeletionDTO) data;
+
+            for (DevcloudInfo devcloudInfo: devcloudInfoDao.findAll()) {
+                boolean updated = false;
+                List<TreeNodeInfo> deleteList = new ArrayList<>();
+                for (TreeNodeInfo info: devcloudInfo.getTreeNodeList()) {
+                    if (deletionDTO.getNodeIds().contains(info.getNodeId())) {
+                        deleteList.add(info);
+                        updated = true;
+                    }
+                }
+
+                if (updated) {
+                    devcloudInfo.getTreeNodeList().removeAll(deleteList);
+                    devcloudInfoDao.save(devcloudInfo);
+                }
+            }
         }
     }
 }