|
@@ -2,9 +2,11 @@ package cn.iselab.mooctest.site.web.logic.asyncProgress.impl;
|
|
|
|
|
|
import cn.iselab.mooctest.site.common.acyncTask.OnlineJudgeAndCulScoreCallBack;
|
|
|
import cn.iselab.mooctest.site.common.acyncTask.OnlineJudgeCallBack;
|
|
|
+import cn.iselab.mooctest.site.common.acyncTask.OnlineJudgeExecuteCallBack;
|
|
|
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.OnlineJudgeResultsVO;
|
|
|
import cn.iselab.mooctest.site.web.data.OnlineJudgeVO;
|
|
|
import cn.iselab.mooctest.site.web.logic.asyncProgress.OnlineJudgeProcessLogic;
|
|
|
import com.google.common.collect.Lists;
|
|
@@ -33,90 +35,111 @@ public class OnlineJudgeProcessLogicImpl implements OnlineJudgeProcessLogic {
|
|
|
AsyncScheduleService asyncScheduleService;
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ public void triggerRunOnlineJudge(OnlineJudgeVO onlineJudgeVO, List<String> downloadUrl) {
|
|
|
+
|
|
|
+ List<Map<String, String>> params = prepareParams(onlineJudgeVO,downloadUrl);
|
|
|
+ List<Map<String,String>> contexts = prepareContexts(onlineJudgeVO);
|
|
|
+ asyncScheduleService.start(AsyncJobTool.ONLINEJUDGE, params, contexts, OnlineJudgeCallBack.class);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
- public void triggerRunOnlineJudge(OnlineJudgeVO onlineJudgeVO,List<String> downloadUrl) {
|
|
|
- List<Map<String,String>> params = Lists.newArrayList();
|
|
|
- List<Map<String,String>> contexts = Lists.newArrayList();
|
|
|
+ public void triggerExecuteOnlineJudge(OnlineJudgeVO onlineJudgeVO, List<String> downloadUrl) {
|
|
|
+ List<Map<String, String>> params = prepareParams(onlineJudgeVO,downloadUrl);
|
|
|
+ List<Map<String,String>> contexts = prepareContexts(onlineJudgeVO);
|
|
|
+ asyncScheduleService.start(AsyncJobTool.ONLINEJUDGE, params, contexts, OnlineJudgeExecuteCallBack.class);
|
|
|
|
|
|
- Map<String,String> param = Maps.newHashMap();
|
|
|
- param.put("downloadURL",jointDownloadUrl(downloadUrl));
|
|
|
- param.put("extraArgs",generateOnlineJudgeExtraArgs(downloadUrl, onlineJudgeVO.getLang()));
|
|
|
+ }
|
|
|
|
|
|
- params.add(param);
|
|
|
+ private List<Map<String,String>> prepareParams(OnlineJudgeVO onlineJudgeVO,List<String> downloadUrl) {
|
|
|
+ List<Map<String, String>> params = Lists.newArrayList();
|
|
|
|
|
|
- Map<String,String> context = Maps.newHashMap();
|
|
|
- context.put("submissionId",onlineJudgeVO.getSubmissionId());
|
|
|
|
|
|
- contexts.add(context);
|
|
|
+ Map<String, String> param = Maps.newHashMap();
|
|
|
+ param.put("downloadURL", jointDownloadUrl(downloadUrl));
|
|
|
+ param.put("extraArgs", generateOnlineJudgeExtraArgs(downloadUrl, onlineJudgeVO.getLang(),onlineJudgeVO.getMode().toString()));
|
|
|
+
|
|
|
+ params.add(param);
|
|
|
|
|
|
- asyncScheduleService.start(AsyncJobTool.ONLINEJUDGE,params,contexts,OnlineJudgeCallBack.class);
|
|
|
+ return params;
|
|
|
}
|
|
|
|
|
|
+ private List<Map<String,String>> prepareContexts(OnlineJudgeVO onlineJudgeVO) {
|
|
|
+ List<Map<String, String>> contexts = Lists.newArrayList();
|
|
|
+ Map<String, String> context = Maps.newHashMap();
|
|
|
+ context.put("submissionId", onlineJudgeVO.getSubmissionId());
|
|
|
+ contexts.add(context);
|
|
|
+ return contexts;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void triggerSubmitOnlineJudge(OnlineJudgeVO onlineJudgeVO, List<String> downloadUrl) {
|
|
|
- List<Map<String,String>> params = Lists.newArrayList();
|
|
|
+ List<Map<String, String>> params = Lists.newArrayList();
|
|
|
|
|
|
- Map<String,String> param = Maps.newHashMap();
|
|
|
- param.put("downloadURL",jointDownloadUrl(downloadUrl));
|
|
|
- param.put("extraArgs",generateOnlineJudgeExtraArgs(downloadUrl,onlineJudgeVO.getLang()));
|
|
|
+ Map<String, String> param = Maps.newHashMap();
|
|
|
+ param.put("downloadURL", jointDownloadUrl(downloadUrl));
|
|
|
+ param.put("extraArgs", generateOnlineJudgeExtraArgs(downloadUrl, onlineJudgeVO.getLang(),onlineJudgeVO.getMode().toString()));
|
|
|
|
|
|
params.add(param);
|
|
|
|
|
|
|
|
|
- List<Map<String,String>> contexts = Lists.newArrayList();
|
|
|
+ List<Map<String, String>> contexts = Lists.newArrayList();
|
|
|
|
|
|
- Map<String,String> context = Maps.newHashMap();
|
|
|
+ Map<String, String> context = Maps.newHashMap();
|
|
|
|
|
|
- context.put("submissionId",onlineJudgeVO.getSubmissionId());
|
|
|
- context.put("userId",String.valueOf(onlineJudgeVO.getUserId()));
|
|
|
- context.put("examId",String.valueOf(onlineJudgeVO.getExamId()));
|
|
|
- context.put("caseId",String.valueOf(onlineJudgeVO.getCaseId()));
|
|
|
+ context.put("submissionId", onlineJudgeVO.getSubmissionId());
|
|
|
+ context.put("userId", String.valueOf(onlineJudgeVO.getUserId()));
|
|
|
+ context.put("examId", String.valueOf(onlineJudgeVO.getExamId()));
|
|
|
+ context.put("caseId", String.valueOf(onlineJudgeVO.getCaseId()));
|
|
|
contexts.add(context);
|
|
|
|
|
|
- asyncScheduleService.start(AsyncJobTool.ONLINEJUDGE,params,contexts,OnlineJudgeAndCulScoreCallBack.class);
|
|
|
+ asyncScheduleService.start(AsyncJobTool.ONLINEJUDGE, params, contexts, OnlineJudgeAndCulScoreCallBack.class);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 拼接下载链接
|
|
|
+ *
|
|
|
* @param downloadUrls 下载链接map
|
|
|
* @return 以逗号分割的下载链接字符串
|
|
|
*/
|
|
|
- private String jointDownloadUrl(List<String> downloadUrls){
|
|
|
+ private String jointDownloadUrl(List<String> downloadUrls) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- for(String x:downloadUrls){
|
|
|
+ for (String x : downloadUrls) {
|
|
|
sb.append(x).append(";");
|
|
|
}
|
|
|
|
|
|
String downloadUrl = sb.toString();
|
|
|
- return downloadUrl.substring(0,downloadUrl.length()-1);
|
|
|
+ return downloadUrl.substring(0, downloadUrl.length() - 1);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生成extraArgs的方法,onlinejudge参数为需要从oss上下载的文件名
|
|
|
+ *
|
|
|
* @param downloadUrls 下载链接map
|
|
|
* @return 参数字符串
|
|
|
*/
|
|
|
- private String generateOnlineJudgeExtraArgs(List<String> downloadUrls,String lang){
|
|
|
+ private String generateOnlineJudgeExtraArgs(List<String> downloadUrls, String lang, String mode) {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
- if(downloadUrls.size()<1){
|
|
|
+ if (downloadUrls.size() < 1) {
|
|
|
log.error("downloadUrls的长度小于1,参数错误");
|
|
|
throw new IllegalArgumentException();
|
|
|
}
|
|
|
String codeUrlInOss = downloadUrls.get(0);
|
|
|
//code_submissionId_timestamp.txt
|
|
|
- String codeFileName = codeUrlInOss.split("/")[codeUrlInOss.split("/").length-1];
|
|
|
+ String codeFileName = codeUrlInOss.split("/")[codeUrlInOss.split("/").length - 1];
|
|
|
sb.append("-c ").append(codeFileName);
|
|
|
|
|
|
- if(downloadUrls.size()==2){
|
|
|
+
|
|
|
+ if (downloadUrls.size() == 2) {
|
|
|
String dataUrlInOss = downloadUrls.get(1);
|
|
|
- String dataFileName = dataUrlInOss.split("/")[dataUrlInOss.split("/").length-1];
|
|
|
+ String dataFileName = dataUrlInOss.split("/")[dataUrlInOss.split("/").length - 1];
|
|
|
sb.append(" -d ").append(dataFileName);
|
|
|
}
|
|
|
|
|
|
sb.append(" -l ").append(lang);
|
|
|
+ sb.append(" -m ").append(mode);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
}
|