AnalyzeController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  1. package edu.nju.controller;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.net.URLDecoder;
  5. import java.util.Arrays;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.UUID;
  10. import javax.servlet.http.HttpServletResponse;
  11. import edu.nju.dao.TaskDao;
  12. import edu.nju.entities.Task;
  13. import edu.nju.entities.ShortToken;
  14. import edu.nju.model.*;
  15. import edu.nju.util.AESUtil;
  16. import edu.nju.util.BlockChainAspect;
  17. import org.json.JSONArray;
  18. import org.json.JSONObject;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Controller;
  23. import org.springframework.util.DigestUtils;
  24. import org.springframework.web.bind.annotation.*;
  25. import edu.nju.service.AnalyzeService;
  26. import edu.nju.service.ReportService;
  27. @Controller
  28. @RequestMapping(value = "/analyze")
  29. @CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true")
  30. public class AnalyzeController {
  31. @Autowired
  32. AnalyzeService aservice;
  33. @Autowired
  34. ReportService rservice;
  35. @Autowired
  36. BlockChainAspect blockChainAspect;
  37. @Autowired
  38. TaskDao taskDao;
  39. Logger log= LoggerFactory.getLogger(AnalyzeController.class);
  40. //根据用例获取所有有效bug
  41. @RequestMapping(value = "/valid")
  42. @ResponseBody
  43. public void getValid(String case_take_id, HttpServletResponse response) {
  44. try {
  45. PrintWriter out = response.getWriter();
  46. JSONObject result = new JSONObject();
  47. List<String> list = aservice.getValid(case_take_id);
  48. result.put("Count", list.size());
  49. result.put("Detail", new JSONArray(list));
  50. out.print(result);
  51. out.flush();
  52. out.close();
  53. } catch (Exception e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57. }
  58. //根据用例获取所有有效bug
  59. @RequestMapping(value = "/validByBugId")
  60. @ResponseBody
  61. public void getValidByBugId(String id, HttpServletResponse response) {
  62. try {
  63. PrintWriter out = response.getWriter();
  64. JSONObject result = new JSONObject();
  65. List<String> list = aservice.getValidByBugId(id);
  66. result.put("Count", list.size());
  67. result.put("Detail", new JSONArray(list));
  68. out.print(result);
  69. out.flush();
  70. out.close();
  71. } catch (Exception e) {
  72. // TODO Auto-generated catch block
  73. e.printStackTrace();
  74. }
  75. }
  76. //根据用例获取所有有效bug
  77. @RequestMapping(value = "/bugData")
  78. @ResponseBody
  79. public List<BugDataVO> getBugDataVO(String case_take_id) {
  80. return aservice.getBugDataVO(case_take_id);
  81. }
  82. //获取所有有点赞记录的bug
  83. @RequestMapping(value = "/thums")
  84. @ResponseBody
  85. public void getThums(String case_take_id, HttpServletResponse response) {
  86. try {
  87. JSONObject result = new JSONObject();
  88. PrintWriter out = response.getWriter();
  89. Map<String, String> map = aservice.getThums(case_take_id);
  90. result.put("Count", map.size());
  91. result.put("Detail", new JSONObject(map));
  92. out.print(result);
  93. out.flush();
  94. out.close();
  95. } catch (Exception e) {
  96. // TODO Auto-generated catch block
  97. e.printStackTrace();
  98. }
  99. }
  100. /**
  101. * 47.99.140.117:9001/Bug/api/analyze/scores
  102. *
  103. * @param case_take_id
  104. * caseId - taskId,示例1632-2927
  105. * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}]
  106. */
  107. @RequestMapping(value = "/scores")
  108. @ResponseBody
  109. public void getScores(String case_take_id, HttpServletResponse response) {
  110. try {
  111. PrintWriter out = response.getWriter();
  112. out.print(aservice.getScores(case_take_id));
  113. out.flush();
  114. out.close();
  115. } catch (Exception e) {
  116. // TODO Auto-generated catch block
  117. e.printStackTrace();
  118. }
  119. }
  120. /**
  121. * 47.99.140.117:9001/Bug/api/analyze/newScores
  122. *
  123. * @param case_take_id
  124. * caseId - taskId,示例1632-2927
  125. * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}]
  126. */
  127. @RequestMapping(value = "/newScores")
  128. @ResponseBody
  129. public void getNewScores(String case_take_id, HttpServletResponse response) {
  130. try {
  131. PrintWriter out = response.getWriter();
  132. out.print(aservice.getNewScores(aservice.getScores(case_take_id)));
  133. out.flush();
  134. out.close();
  135. } catch (Exception e) {
  136. // TODO Auto-generated catch block
  137. e.printStackTrace();
  138. }
  139. }
  140. //获取所有的参与用户,这个方法之前写的,ms有点问题啊
  141. @RequestMapping(value = "/users")
  142. @ResponseBody
  143. public void getUsers(String case_take_id, HttpServletResponse response) {
  144. try {
  145. PrintWriter out = response.getWriter();
  146. out.print(new JSONArray(aservice.getReports(case_take_id)));
  147. out.flush();
  148. out.close();
  149. } catch (Exception e) {
  150. // TODO Auto-generated catch block
  151. e.printStackTrace();
  152. }
  153. }
  154. //真正获取所有的参与用户
  155. @RequestMapping(value = "/workers")
  156. @ResponseBody
  157. public List<Long> getUserss(Long examId) {
  158. return aservice.getUsers(String.valueOf(examId));
  159. }
  160. //获取指定bug的打分等级
  161. @RequestMapping(value = "/grade")
  162. @ResponseBody
  163. public void getGrade(String id, HttpServletResponse response) {
  164. try {
  165. JSONObject result = new JSONObject();
  166. result.put("grade", aservice.getGrade(id));
  167. PrintWriter out = response.getWriter();
  168. out.print(result);
  169. out.flush();
  170. out.close();
  171. } catch (Exception e) {
  172. // TODO Auto-generated catch block
  173. e.printStackTrace();
  174. }
  175. }
  176. //存储单个bug的打分等级
  177. @RequestMapping(value = "/save")
  178. @ResponseBody
  179. public void saveGrade(String id, String grade, HttpServletResponse response) {
  180. try {
  181. JSONObject result = new JSONObject();
  182. if(aservice.saveGrade(id, Integer.parseInt(grade))) {result.put("status", "200");}
  183. else {result.put("status", "500");}
  184. PrintWriter out = response.getWriter();
  185. out.print(result);
  186. out.flush();
  187. out.close();
  188. } catch (Exception e) {
  189. // TODO Auto-generated catch block
  190. e.printStackTrace();
  191. }
  192. }
  193. @RequestMapping(value = "/saveSimiliar")
  194. @ResponseBody
  195. public void saveSimiliarGrade(String id, String grade,String similiarBug, HttpServletResponse response) {
  196. try {
  197. JSONObject result = new JSONObject();
  198. if(aservice.saveSimiliarGrade(id, Integer.parseInt(grade),similiarBug)) {result.put("status", "200");}
  199. else {result.put("status", "500");}
  200. PrintWriter out = response.getWriter();
  201. out.print(result);
  202. out.flush();
  203. out.close();
  204. } catch (Exception e) {
  205. // TODO Auto-generated catch block
  206. e.printStackTrace();
  207. }
  208. }
  209. @RequestMapping(value = "/saveByWorker")
  210. @ResponseBody
  211. public void saveGradeByWorker(String id,String worker_id, String grade, HttpServletResponse response) {
  212. try {
  213. JSONObject result = new JSONObject();
  214. if(aservice.saveGradeByWorker(id, worker_id,Integer.parseInt(grade))) {result.put("status", "200");}
  215. else {result.put("status", "500");}
  216. PrintWriter out = response.getWriter();
  217. out.print(result);
  218. out.flush();
  219. out.close();
  220. } catch (Exception e) {
  221. // TODO Auto-generated catch block
  222. e.printStackTrace();
  223. }
  224. }
  225. //获取页面和种类的分布情况
  226. @RequestMapping(value = "/bugDetail")
  227. @ResponseBody
  228. public void getDetail(String case_take_id, HttpServletResponse response) {
  229. try {
  230. PrintWriter out = response.getWriter();
  231. out.print(aservice.getCaseDetail(case_take_id));
  232. out.flush();
  233. out.close();
  234. } catch (Exception e) {
  235. // TODO Auto-generated catch block
  236. e.printStackTrace();
  237. }
  238. }
  239. //获取所有打分等级
  240. @RequestMapping(value = "/allGrades")
  241. @ResponseBody
  242. public void getAllGrades(String case_take_id, HttpServletResponse response) {
  243. try {
  244. JSONObject result = new JSONObject();
  245. Map<String, Integer> map = aservice.getAllGrades(case_take_id);
  246. result.put("Count", map.size());
  247. result.put("Detail", new JSONObject(map));
  248. PrintWriter out = response.getWriter();
  249. out.print(result);
  250. out.flush();
  251. out.close();
  252. } catch (Exception e) {
  253. // TODO Auto-generated catch block
  254. e.printStackTrace();
  255. }
  256. }
  257. //判断哪些还没有打分,split后面是用例表中不存在的bug
  258. @RequestMapping(value = "/diff")
  259. @ResponseBody
  260. public void getDiff(String case_take_id, HttpServletResponse response) {
  261. try {
  262. PrintWriter out = response.getWriter();
  263. JSONObject result = new JSONObject();
  264. List<String> list = aservice.getDiff(case_take_id);
  265. result.put("Count", list.size());
  266. result.put("Detail", new JSONArray(list));
  267. out.print(result);
  268. out.flush();
  269. out.close();
  270. } catch (Exception e) {
  271. // TODO Auto-generated catch block
  272. e.printStackTrace();
  273. }
  274. }
  275. //获取路径信息
  276. @RequestMapping(value = "/path")
  277. @ResponseBody
  278. public void getUserPath(String case_take_id, String report_id, HttpServletResponse response) {
  279. try {
  280. PrintWriter out = response.getWriter();
  281. JSONObject result = new JSONObject();
  282. result.put("all", filter(aservice.getBugDetail(case_take_id)));
  283. result.put("self", filter(rservice.getUserPath(report_id, case_take_id)));
  284. out.print(result);
  285. out.flush();
  286. out.close();
  287. } catch (Exception e) {
  288. // TODO Auto-generated catch block
  289. e.printStackTrace();
  290. }
  291. }
  292. private Map<String, Integer> filter(Map<String, Integer> maps) {
  293. Map<String, Integer> result = new HashMap<String, Integer>();
  294. for(Map.Entry<String, Integer> entry : maps.entrySet()) {
  295. String[] pages = entry.getKey().split("-");
  296. if(pages.length > 0) {
  297. String key = pages[pages.length - 1];
  298. result.put(key, result.getOrDefault(key, 0) + entry.getValue());
  299. }
  300. }
  301. return result;
  302. }
  303. @RequestMapping(value = "/afterSimilarBug")
  304. @ResponseBody
  305. public void getAfterSimilarBug(String bug_id, HttpServletResponse response){
  306. try {
  307. PrintWriter out = response.getWriter();
  308. JSONObject result = new JSONObject();
  309. result.put("bugList",aservice.getAfterSimilarBug(bug_id));
  310. out.print(result);
  311. out.flush();
  312. out.close();
  313. } catch (Exception e) {
  314. e.printStackTrace();
  315. }
  316. }
  317. @RequestMapping(value = "/analyseExam")
  318. @ResponseBody
  319. public void analyseExam(String caseId, String taskId, HttpServletResponse response){
  320. try {
  321. PrintWriter out = response.getWriter();
  322. AnalyseVO analyseVO=aservice.getReviewAnalyseVO(caseId, taskId);
  323. out.print(new JSONObject(analyseVO));
  324. out.flush();
  325. out.close();
  326. } catch (Exception e) {
  327. e.printStackTrace();
  328. }
  329. }
  330. /**
  331. * todo 引进 guvva 来做缓存
  332. * @param caseId
  333. * @param taskId
  334. * @param workId
  335. * @param response
  336. */
  337. @RequestMapping(value = "/analysePeople")
  338. @ResponseBody
  339. public void analysePeople(String caseId, String taskId, String workId , HttpServletResponse response){
  340. try {
  341. response.setCharacterEncoding("utf-8");
  342. response.setContentType("text/html;charset=utf-8");
  343. PrintWriter out = response.getWriter();
  344. AnalysePeopleVO analyseVO=aservice.getReviewAnalysePeopleVO(caseId, taskId,workId);
  345. out.print(new JSONObject(analyseVO));
  346. out.flush();
  347. out.close();
  348. } catch (Exception e) {
  349. e.printStackTrace();
  350. }
  351. }
  352. @RequestMapping(value = "/analyse/getTaskToken")
  353. @ResponseBody
  354. public String getAnalyseTaskToken(String caseId,String taskId,HttpServletResponse response ){
  355. return AESUtil.encrypt("taskId="+taskId+"&caseId="+caseId);
  356. }
  357. @RequestMapping(value = "/analyse/task")
  358. public void analyseTask(String token, HttpServletResponse response ){
  359. String realUrl = AESUtil.decrypt(token);
  360. String [] decoder = url2decode(realUrl);
  361. analyseExam2(decoder[1],decoder[0],response);
  362. // return "redirect:/analyze/analyseExam2?"+realUrl;
  363. }
  364. /**
  365. * todo 引进 guvva 来做缓存
  366. * @param workId
  367. * @param response
  368. */
  369. @RequestMapping(value = "/analyse/people")
  370. public void analyseSinglePeople(String token, String workId , HttpServletResponse response){
  371. String realUrl = AESUtil.decrypt(token);
  372. String [] decoder = url2decode(realUrl);
  373. analysePeople(decoder[1],decoder[0],workId,response);
  374. // return "redirect:/analyze/analysePeople?"+realUrl+"&workId="+workId;
  375. }
  376. @RequestMapping(value = "/historicalData")
  377. @ResponseBody
  378. public HistoricalDataVO getHistoricalData(Long workerId,int caseTypeId){
  379. return aservice.getHistoricalData(workerId, caseTypeId);
  380. }
  381. @RequestMapping(value = "/uploadTestReportToBlockChain")
  382. @ResponseBody
  383. public void uploadTestReport(String bug_id,HttpServletResponse response){
  384. try {
  385. PrintWriter out = response.getWriter();
  386. JSONObject result = new JSONObject();
  387. if (blockChainAspect.uploadTestReportInfoToBlockChain(bug_id)) {
  388. result.put("status","200");
  389. }else{
  390. result.put("status","500");
  391. }
  392. out.print(result);
  393. out.flush();
  394. out.close();
  395. }catch (IOException e){
  396. e.printStackTrace();
  397. }
  398. }
  399. @RequestMapping(value = "/analyseExam2", method = RequestMethod.GET)
  400. @ResponseBody
  401. public void analyseExam2(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  402. try {
  403. response.setCharacterEncoding("utf-8");
  404. response.setContentType("text/html;charset=utf-8");
  405. PrintWriter out = response.getWriter();
  406. AnalyseVO2 analyseVO=aservice.getReviewAnalyseVO2(caseId, taskId);
  407. out.print(new JSONObject(analyseVO));
  408. out.flush();
  409. out.close();
  410. } catch (Exception e) {
  411. e.printStackTrace();
  412. }
  413. }
  414. @RequestMapping(value = "/analysePageCover", method = RequestMethod.GET)
  415. @ResponseBody
  416. public void analysePageCover(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  417. try {
  418. response.setCharacterEncoding("utf-8");
  419. response.setContentType("text/html;charset=utf-8");
  420. PrintWriter out = response.getWriter();
  421. Map<String,Integer>map=aservice.getPageCover(taskId, caseId);
  422. out.print(new JSONObject(map));
  423. out.flush();
  424. out.close();
  425. } catch (Exception e) {
  426. e.printStackTrace();
  427. }
  428. }
  429. @RequestMapping(value = "/analyseBugInfo", method = RequestMethod.GET)
  430. @ResponseBody
  431. public void analyseBugInfo(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  432. try {
  433. response.setCharacterEncoding("utf-8");
  434. response.setContentType("text/html;charset=utf-8");
  435. PrintWriter out = response.getWriter();
  436. int[][]bugInfo=aservice.getBugInfo(taskId, caseId);
  437. JSONArray res = new JSONArray();
  438. for(int i =0;i<bugInfo.length;i++){
  439. for(int j =0;j<bugInfo[0].length;j++){
  440. if(bugInfo[i][j]!=0){
  441. JSONArray temp = new JSONArray();
  442. temp.put(BugSeverity.getValue(i));
  443. temp.put(BugRecurrent.getValue(j));
  444. temp.put(bugInfo[i][j]);
  445. temp.put(bugInfo[i][j]+"个");
  446. temp.put("报告数量 ");
  447. res.put(temp);
  448. }
  449. }
  450. }
  451. out.print(res);
  452. out.flush();
  453. out.close();
  454. } catch (Exception e) {
  455. e.printStackTrace();
  456. }
  457. }
  458. @RequestMapping(value = "/analyse/BugInfo", method = RequestMethod.GET)
  459. public void analyseBugInfoByToken(@RequestParam("token") String token, HttpServletResponse response){
  460. try {
  461. String realUrl = AESUtil.decrypt(token);
  462. String [] decoder = url2decode(realUrl);
  463. analyseBugInfo(decoder[1],decoder[0],response);
  464. } catch (Exception e) {
  465. e.printStackTrace();
  466. }
  467. }
  468. @RequestMapping(value = "/analyseBugSubmitInfo", method = RequestMethod.GET)
  469. public void analyseBugSubmitInfo(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId,@RequestParam("piece") int piece, HttpServletResponse response){
  470. try {
  471. response.setCharacterEncoding("utf-8");
  472. response.setContentType("text/html;charset=utf-8");
  473. PrintWriter out = response.getWriter();
  474. Map<String,Integer>map=aservice.getBugSubmitInfo(taskId,caseId,piece);
  475. JSONObject res = new JSONObject();
  476. JSONArray label = new JSONArray(map.keySet());
  477. JSONArray data = new JSONArray(map.values());
  478. res.put("label",label);
  479. res.put("data",data);
  480. out.print(res);
  481. out.flush();
  482. out.close();
  483. } catch (Exception e) {
  484. e.printStackTrace();
  485. }
  486. }
  487. @RequestMapping(value = "/analyse/BugSubmitInfo", method = RequestMethod.GET)
  488. @ResponseBody
  489. public void analyseBugSubmitInfoByToken(@RequestParam("token") String token ,@RequestParam("piece") int piece, HttpServletResponse response){
  490. try {
  491. String realUrl = AESUtil.decrypt(token);
  492. String [] decoder = url2decode(realUrl);
  493. analyseBugSubmitInfo(decoder[1],decoder[0],piece,response);
  494. } catch (Exception e) {
  495. e.printStackTrace();
  496. }
  497. }
  498. /**
  499. * 根据token获取众测任务具体信息
  500. * @param token
  501. * @param response
  502. */
  503. @RequestMapping(value = "/tokenToDetail")
  504. @ResponseBody
  505. public void tokenToDetailUrl(String token ,HttpServletResponse response){
  506. try {
  507. JSONObject result = new JSONObject();
  508. ShortToken shortToken=aservice.tokenToDetail(token);
  509. if(shortToken==null){
  510. result.put("result","fail");
  511. result.put("cause","身份验证失败,请前往慕测官网www.mooctest.net重新进入答题页面");
  512. }else {
  513. //有效
  514. if(shortToken.isDisabled()){
  515. shortToken.setDisabled(false);
  516. aservice.saveShortToken(shortToken);
  517. result.put("result", "success");
  518. result.put("examId",shortToken.getExamId());
  519. result.put("caseId",shortToken.getCaseId());
  520. result.put("userId",shortToken.getUserId());
  521. result.put("beginTime",shortToken.getBeginTime());
  522. result.put("endTime",shortToken.getEndTime());
  523. }
  524. //无效
  525. else{
  526. result.put("result","fail");
  527. result.put("cause","身份验证失败,请前往慕测官网www.mooctest.net重新进入答题页面");
  528. }
  529. }
  530. PrintWriter out = response.getWriter();
  531. out.print(result);
  532. out.flush();
  533. out.close();
  534. } catch (Exception e) {
  535. e.printStackTrace();
  536. }
  537. }
  538. /**
  539. * 根据众测信息获取对应token
  540. * @param examId
  541. * @param caseId
  542. * @param userId
  543. * @param beginTime
  544. * @param endTime
  545. * @return
  546. */
  547. @RequestMapping(value = "/detailToToken")
  548. @ResponseBody
  549. public String detailToToken(String examId,String caseId,String userId,String beginTime,String endTime){
  550. JSONObject result = new JSONObject();
  551. try {
  552. ShortToken shortToken=aservice.findTokenByDetail(examId,caseId,userId);
  553. if(shortToken==null){
  554. // String token=AESUtil.encrypt(examId+"/"+caseId+"/"+userId);
  555. String token= DigestUtils.md5DigestAsHex((UUID.randomUUID().toString()).getBytes());
  556. ShortToken newShortToken=new ShortToken(token,beginTime,endTime,caseId,examId,userId,true);
  557. aservice.saveShortToken(newShortToken);
  558. result.put("result","success");
  559. result.put("token",token);
  560. }else{
  561. String token= DigestUtils.md5DigestAsHex((UUID.randomUUID().toString()).getBytes());
  562. shortToken.setToken(token);
  563. shortToken.setBeginTime(beginTime);
  564. shortToken.setEndTime(endTime);
  565. shortToken.setDisabled(true);
  566. aservice.saveShortToken(shortToken);
  567. result.put("result","success");
  568. result.put("token",shortToken.getToken());
  569. }
  570. return result.toString();
  571. } catch (Exception e) {
  572. e.printStackTrace();
  573. }
  574. result.put("result","fail");
  575. return result.toString();
  576. }
  577. @RequestMapping(value = "/progress", method = RequestMethod.GET)
  578. @ResponseBody
  579. public Double crowdTestProgress(String token){
  580. String realUrl = AESUtil.decrypt(token);
  581. String [] decoder = url2decode(realUrl);
  582. String taskId=decoder[0];
  583. String caseId=decoder[1];
  584. Task task=taskDao.findById(taskId);
  585. if(task.getEnd_time()>System.currentTimeMillis()){
  586. return aservice.crowdTestProgressFromDB(caseId,taskId);
  587. }else{
  588. return aservice.crowdTestProgress(caseId,taskId);
  589. }
  590. }
  591. private String [] url2decode(String str){
  592. log.info("#AnalyseController url2decode(): "+str);
  593. String [] res = new String[2];
  594. String [] temp = str.split("&");
  595. if(temp[0].startsWith("taskId=")){
  596. res[0] = temp[0].substring(7);
  597. }
  598. if(temp[1].startsWith("caseId=")){
  599. res[1] = temp[1].substring(7);
  600. }
  601. return res;
  602. }
  603. }