/**
   * テスト結果分析情報取得メソッド
   *
   * @param planId 教育プラン
   * @return  TestResultAnalysisInfo
   * @throws EducationManagementException
   */
  public TestResultAnalysisInfo getTestResultAnalysisInfo(String planId)
      throws EducationManagementException {

    // パラメータMAP
    HashMap<String, Integer> paramMap = new HashMap<String, Integer>();
    // 回答者数
    int totalCount = 0;
    paramMap.put("totalCount", totalCount);
    // 問題数
    int questionCounts = 0;
    paramMap.put("questionCounts", questionCounts);
    // 最小の初回点数
    int minFirstScore = 0;
    paramMap.put("minFirstScore", minFirstScore);
    // 最大の回数
    int maxGradingNum = 0;
    paramMap.put("maxGradingNum", maxGradingNum);

    // テスト結果分析画面の情報
    TestResultAnalysisInfo analysisInfo = new TestResultAnalysisInfo();

    // 解説・正解Table、問題別初回不正解者数TableとChart用
    QuestionsAndFirstPassCountsList qestionList = new QuestionsAndFirstPassCountsList();

    // 初回得点分布Mapの取得
    HashMap<Integer, Integer> firstScoreForPersons =
        getFirstScoreForPersonCountsList(analysisInfo, paramMap, planId);

    // 合格試験回数分布Mapの取得
    HashMap<Integer, Integer> gradingNumForPersons =
        getGradingNumForPersonCountsList(paramMap, planId);

    // 問題情報と初回不正解者数
    editQuestionsAndFirstPassCountsList(paramMap, planId, qestionList);
    analysisInfo.setQuestionsAndFirstPassCountsListObject(qestionList);

    // 初回得点分布Table
    FirstScoreForTableList firstScoreTableList = new FirstScoreForTableList();
    // 初回得点分布Chart
    FirstScoreForChartList firstScoreChartList = new FirstScoreForChartList();
    // 初回得点分布TableとChartのデータ編集
    editFirstScore(paramMap, firstScoreForPersons, firstScoreTableList, firstScoreChartList);

    analysisInfo.setFirstScoreForTableListObject(firstScoreTableList);
    analysisInfo.setFirstScoreForChartListObject(firstScoreChartList);

    // 合格試験回数分布Table
    GradingNumForTableList gradingNumTableList = new GradingNumForTableList();
    // 合格試験回数分布Chart
    GradingNumForChartList gradingNumChartList = new GradingNumForChartList();
    // 合格試験回数分布TableとChartのデータ編集
    editGradingNum(paramMap, gradingNumForPersons, gradingNumTableList, gradingNumChartList);

    analysisInfo.setGradingNumForTableListObject(gradingNumTableList);
    analysisInfo.setGradingNumForChartListObject(gradingNumChartList);

    // 基本情報の編集
    editBaseInfo(paramMap, planId, analysisInfo);

    return analysisInfo;
  }