/** {@inheritDoc} */
  @SuppressWarnings("deprecation")
  @Override
  protected void doJudgeElement(final JavelinLogElement element) {
    // 識別子が"Event"でない場合は、処理しない。
    String type = element.getBaseInfo().get(JavelinLogColumnNum.ID);
    boolean isEvent = MSG_EVENT.equals(type);

    if (isEvent == false) {
      return;
    }

    String eventName = element.getBaseInfo().get(JavelinLogColumnNum.EVENT_NAME);

    // イベント名が "IntervalError" の場合、検出を行う。
    if (EventConstants.NAME_INTERVALERROR.equals(eventName) == false) {
      return;
    }

    Map<String, String> eventInfoMap =
        JavelinLogUtil.parseDetailInfo(element, JavelinParser.TAG_TYPE_EVENTINFO);
    String actual = eventInfoMap.get(EventConstants.PARAM_INTERVALERROR_ACTUAL_INTERVAL);

    // 実際にかかった時間が閾値以下の場合は、処理を終了する。
    long actualTime = Long.MAX_VALUE;
    try {
      actualTime = Long.parseLong(actual);
    } catch (NumberFormatException ex) {
      LOGGER.warn(ex);
    }
    if (actualTime > this.threshold) {
      return;
    }

    classMethodMatching(element, eventInfoMap, actualTime);
  }
  /**
   * 各メソッドの呼び出し回数をカウントする。 閾値を超えたものがある場合には記録する。
   *
   * @param javelinLogElement ログデータ。
   * @param callCountMap 呼び出し回数を記録するマップ。
   * @param overThresholdMethodMap 呼び出された回数が閾値を超えたメソッドを記録するマップ。
   */
  private void doJudgeSingleElement(
      final JavelinLogElement javelinLogElement,
      final Map<String, Integer> callCountMap,
      final Map<String, JavelinLogElement> overThresholdMethodMap) {
    List<String> baseInfo = javelinLogElement.getBaseInfo();

    // Callログのみを対象とする。
    String id = baseInfo.get(JavelinLogColumnNum.ID);
    if (JavelinConstants.MSG_CALL.equals(id) == false) {
      return;
    }

    // Mapのキーを作成する。
    String className = baseInfo.get(JavelinLogColumnNum.CALL_CALLEE_CLASS);
    String methodName = baseInfo.get(JavelinLogColumnNum.CALL_CALLEE_METHOD);
    String threadId = baseInfo.get(JavelinLogColumnNum.CALL_THREADID);

    // SQL実行は除外する
    if (isSqlExec(className) == true) {
      return;
    }

    String key = className + "#" + methodName + "#" + threadId;

    // カウントに1を加える。
    // まだ一度も実行されていない場合には新たにオブジェクトを作り、値を1にする。
    Integer count = callCountMap.get(key);
    if (count == null) {
      count = Integer.valueOf(1);
    } else {
      count = Integer.valueOf(count.intValue() + 1);
    }
    callCountMap.put(key, count);

    // もしカウントが閾値に達するのであれば、overThresholdMethodMap_に記録する。
    if (count.intValue() == this.threshold) {
      overThresholdMethodMap.put(key, javelinLogElement);
    }
  }