示例#1
0
  /**
   * 得到试卷所有小题,将同一大题的小题存到同一个list中,并且以大题Id为键名,将list存到map中
   *
   * @param examId 试卷编号
   */
  private Map<Integer, List<Question>> getQuestionsOfExam(int examId, Map<String, Image> images) {
    List<LStrMap<Object>> list = nwd.getQuestionsOfExam(examId);
    if (list.size() > 0) {
      Map<Integer, List<Question>> resultMap = new LinkedHashMap<Integer, List<Question>>();
      for (Iterator<LStrMap<Object>> iterator = list.iterator(); iterator.hasNext(); ) {
        LStrMap<Object> tempMap = iterator.next();
        // 组合小题信息到小题对象
        Question question = new Question();
        images.putAll(question.setContents(tempMap.get("ques_content").toString()));
        question.setDifficulty(Double.parseDouble(tempMap.get("difficulty").toString()));
        question.setIndexNo(tempMap.get("m_topic").toString());
        Object keyword = tempMap.get("keyword");
        images.putAll(question.setParses(keyword == null ? "" : keyword.toString()));
        question.setQuestionId(Integer.parseInt(tempMap.get("ques_id").toString()));
        question.setQuestionType(Integer.parseInt(tempMap.get("ques_type").toString()));
        question.setScore(Double.parseDouble(tempMap.get("score").toString()));
        question.setShareFlag(Integer.parseInt(tempMap.get("share_flag").toString()));
        Object quesRefer = tempMap.get("ques_refer");
        String answer = quesRefer == null ? "" : quesRefer.toString();
        if (question.getQuestionType() == 2) // 多选题要去除@@
        answer.replace("@@", "");
        else if (question.getQuestionType() == 4) // 填空题要去除选项号之前的##
        answer.replaceAll("##", "");
        Object referIds = tempMap.get("remark");
        if (referIds == null) question.setReferIds("");
        else question.setReferIds(referIds.toString());

        images.putAll(question.setAnswers(answer));

        int typeId = Integer.parseInt(tempMap.get("type_id").toString());
        if (resultMap.containsKey(typeId)) {
          resultMap.get(typeId).add(question);
        } else {
          ArrayList<Question> tempList = new ArrayList<Question>();
          tempList.add(question);
          resultMap.put(typeId, tempList);
        }
      }

      fixArtAndQuestions(resultMap); // 封装材料和材料下小题
      return resultMap;
    }
    return null;
  }