Ver Fonte

python node

yyy2015 há 7 anos atrás
pai
commit
829096e02f

+ 51 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/acyncTask/PythonNodeCallBack.java

@@ -0,0 +1,51 @@
+package cn.iselab.mooctest.site.common.acyncTask;
+
+import cn.iselab.mooctest.site.service.AsyncScheduleService;
+import cn.iselab.mooctest.site.service.TargetGraphService;
+import cn.iselab.mooctest.site.util.data.JSONUtil;
+import cn.iselab.mooctest.site.web.data.forMongo.TargetGraphDTO;
+import java.util.ArrayList;
+import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * python node callback
+ *
+ * @author yyy
+ * @create 2018-03-22 16:46
+ */
+@Component
+@Slf4j
+public class PythonNodeCallBack implements AsyncTaskCallBack {
+
+  @Autowired
+  TargetGraphService targetGraphService;
+
+  @Autowired
+  AsyncScheduleService asyncScheduleService;
+
+  @Override
+  public void onSuccess(Map<String, String> context, String result) {
+    System.out.println("result is: --------------"+result+"---------------");
+    if(!result.isEmpty()){
+      TargetGraphDTO targetGraphDTO = JSONUtil.json2Obj(result,TargetGraphDTO.class);
+      Long targetId = Long.parseLong(context.get("targetId"));
+      targetGraphDTO.setTargetId(targetId);
+      targetGraphService.saveTargetGraph(targetGraphDTO);
+      try {
+        targetGraphService.saveTargetGraphJson(result,targetId);
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  @Override
+  public void onError(Map<String, String> context, String result) {
+      log.error("---------------------python generate node error-----------------------");
+  }
+
+
+}

+ 2 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/enums/AsyncJobTool.java

@@ -6,7 +6,8 @@ import lombok.Getter;
  * Created by tangshanshan on 2018/2/26.
  */
 public enum AsyncJobTool {
-    MOCKTOOL("mockTool",(short)1),PDF("pdf",(short)2),MUTATION("mutation",(short)3),MCNODE("mcNode",(short)4);
+    MOCKTOOL("mockTool",(short)1),PDF("pdf",(short)2),MUTATION("mutation",(short)3),MCNODE("mcNode",(short)4),
+    PYTHON_NODE("python-node",(short)5);
 
     @Getter
     private String name;

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/TargetGraphService.java

@@ -18,4 +18,6 @@ public interface TargetGraphService {
     TargetGraphDTO updateTargetGraph(TargetGraphDTO dto);
 
     void saveTargetGraphJson(TargetGraphDTO dto)throws Exception;
+
+    void saveTargetGraphJson(String targetGraphStr,Long id);
 }

+ 13 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/TargetGraphServiceImpl.java

@@ -77,6 +77,19 @@ public class TargetGraphServiceImpl implements TargetGraphService{
     }
 
     @Override
+    public void saveTargetGraphJson(String targetGraphStr,Long id){
+        try{
+            FileWriter fw1 = new FileWriter(DownloadConstants.SAVE_PATH + "node/" + id + "_sc.json");
+            PrintWriter out1 = new PrintWriter(fw1);
+            out1.write(targetGraphStr);
+            out1.close();
+            fw1.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    @Override
     public void saveTargetGraphJson(TargetGraphDTO dto)throws Exception{
         JSONObject objectSC=new JSONObject();
         objectSC.put("categories","mutation");

+ 13 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/asyncProgress/PythonNodeProgressLogic.java

@@ -0,0 +1,13 @@
+package cn.iselab.mooctest.site.web.logic.asyncProgress;
+
+/**
+ * python node progress logic
+ *
+ * @author yyy
+ * @create 2018-03-26 16:25
+ */
+public interface PythonNodeProgressLogic {
+
+  void triggerTargetAnalysis(Long targetId, String downloadUrl);
+
+}

+ 52 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/asyncProgress/impl/PythonNodeProgressLogicImpl.java

@@ -0,0 +1,52 @@
+package cn.iselab.mooctest.site.web.logic.asyncProgress.impl;
+
+import cn.iselab.mooctest.site.common.acyncTask.PythonNodeCallBack;
+import cn.iselab.mooctest.site.common.enums.AsyncJobTool;
+import cn.iselab.mooctest.site.service.AsyncScheduleService;
+import cn.iselab.mooctest.site.service.AsyncTaskService;
+import cn.iselab.mooctest.site.web.data.forMongo.AsyncTaskDTO;
+import cn.iselab.mooctest.site.web.logic.asyncProgress.PythonNodeProgressLogic;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author yyy
+ * @create 2018-03-26 16:28
+ */
+@Service
+public class PythonNodeProgressLogicImpl implements PythonNodeProgressLogic{
+
+  @Autowired
+  AsyncTaskService asyncTaskService;
+  @Autowired
+  AsyncScheduleService asyncScheduleService;
+
+  @Override
+  public void triggerTargetAnalysis(Long targetId, String downloadUrl) {
+    AsyncTaskDTO asyncTaskDTO = asyncTaskService.getAsyncTask(AsyncJobTool.PYTHON_NODE,targetId);
+    if(asyncTaskDTO == null){
+      List<Map<String,String>> params = new ArrayList<>();
+      List<Map<String,String>> contexts = new ArrayList<>();
+
+      Map<String,String> param = new HashMap<>();
+      param.put("downloadURL",downloadUrl);
+      param.put("extraArgs",generatePythonNodeTargetExtraArgs(downloadUrl));
+      params.add(param);
+
+      Map<String,String> context = new HashMap<>();
+      context.put("targetId",targetId.toString());
+      contexts.add(context);
+
+      asyncScheduleService.start(AsyncJobTool.PYTHON_NODE,params,contexts,PythonNodeCallBack.class);
+    }
+  }
+
+  private String generatePythonNodeTargetExtraArgs(String downloadUrl){
+    String zipName = downloadUrl.split("/")[downloadUrl.split("/").length - 1];
+    return "-f "+ zipName;
+  }
+}

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/TargetLogicImpl.java

@@ -27,6 +27,7 @@ import cn.iselab.mooctest.site.web.logic.BaseLogic;
 import cn.iselab.mooctest.site.web.logic.TargetLogic;
 import cn.iselab.mooctest.site.web.logic.asyncProgress.McNodeProgressLogic;
 import cn.iselab.mooctest.site.web.logic.asyncProgress.MutationProgressLogic;
+import cn.iselab.mooctest.site.web.logic.asyncProgress.PythonNodeProgressLogic;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.UnauthorizedException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +90,9 @@ public class TargetLogicImpl extends BaseLogic implements TargetLogic {
     @Autowired
     McNodeProgressLogic mcNodeProgressLogic;
 
+    @Autowired
+    PythonNodeProgressLogic pythonNodeProgressLogic;
+
     @Override
     public List<TargetVO> getManagerTargets(long managerId) throws Exception {
 
@@ -195,6 +199,8 @@ public class TargetLogicImpl extends BaseLogic implements TargetLogic {
         if(devTarget.getLanguage().equals(DevLanguageConstants.JAVA)){
             mutationProgressLogic.trigegrTargetAnalysis(app.getId(),app.getUrl());
             mcNodeProgressLogic.trigegrTargetAnalysis(app.getId(),app.getUrl());
+        }else if(devTarget.getLanguage().equals(DevLanguageConstants.PYTHON)){
+            pythonNodeProgressLogic.triggerTargetAnalysis(app.getId(),app.getUrl());
         }
         return app.getId();
     }