/**
     * time에 해당하는 TPS테이블의 90%지점의 데이터만 APM_TPS_SUMMARY테이블에 입력한다.<br>
     * <br>
     *
     * @param before5min
     * @author KIMHYERI
     * @since 2015. 10. 7.
     */
    public void summarizeResTime(FrameOneDataset dsAgent, String now) {

      SqlManager sqlManager = SqlManagerFactory.getSqlManager();
      Parameters inParam = ParametersFactory.createParameters(HtmlParameters.class);
      if (dsAgent != null) {
        for (int j = 0; j < dsAgent.getRowCount(); j++) {
          dsAgent.setActiveRow(j);
          inParam.put("AGENT_ID", dsAgent.getColumnAsString(j, "AGENT_ID"));
          // APM_RES_TIMEPS 테이블의 REQ_DTM MAX 값을 조회
          String currentLastInserted =
              (String) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getResTimepsMaxUdt");

          // 조회한 값이 없거나, 현재시간과의 차이가 5분이상이라면 Summary
          if (currentLastInserted == null
              || DateUtil.getDiffMinCount(currentLastInserted, now) >= 5) {

            Date before5min = DateUtil.getOperationTime(now, -5);
            inParam.setVariable("REQ_DTM", now);
            inParam.setVariable("BEFORE", before5min);

            FrameOneDataset dataset =
                sqlManager.queryForFrameOneDataset(
                    inParam, "fiveMinuteSummary.getResSummaryFromRes");
            if (dataset != null) {
              if (dataset.getRowCount() == 0) {
                inParam.setVariable("RES_TIME", 0);
              } else {
                inParam.setVariable("RES_TIME", dataset.get("RES_TIME"));
              }
              sqlManager.insert(inParam, "fiveMinuteSummary.insertResTimepsSummary");
            }
          }
        }
      }
    }
    /**
     * time에 해당하는 RESOURCE테이블의 90%지점의 데이터만 APM_RESOURCE_SUMMARY테이블에 입력한다.<br>
     * 단, GC_OCCR_CNT의 경우 최근 데이터 1개를 입력한다. <br>
     *
     * @param before5min
     * @author KIMHYERI
     * @since 2015. 10. 7.
     */
    public void summarizeResource(FrameOneDataset dsAgent, String now) {
      SqlManager sqlManager = SqlManagerFactory.getSqlManager();
      Parameters inParam = ParametersFactory.createParameters(HtmlParameters.class);
      if (dsAgent != null) {
        for (int j = 0; j < dsAgent.getRowCount(); j++) {
          dsAgent.setActiveRow(j);
          inParam.put("AGENT_ID", dsAgent.getColumnAsString(j, "AGENT_ID"));
          // APM_RESOURCE 테이블의 RESOURCE_CHK_DTM MAX 값을 조회
          String currentLastInserted =
              (String) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getResourceMaxUdt");

          // 조회한 값이 없거나, 현재시간과의 차이가 5분이상이라면 Summary
          if (currentLastInserted == null
              || DateUtil.getDiffMinCount(currentLastInserted, now) >= 5) {

            Date before5min = DateUtil.getOperationTime(now, -5);
            inParam.setVariable("RESOURCE_CHK_DTM", now);
            inParam.setVariable("BEFORE", before5min);

            // 메모리사이즈 조회
            Object selectedValue =
                (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getCurrMemorySize");
            if (selectedValue == null) {
              inParam.put("CURR_MEMORY_SIZE", 0);
            } else {
              inParam.put("CURR_MEMORY_SIZE", selectedValue);
            }

            // 메모리사용률 조회
            selectedValue =
                (Object)
                    sqlManager.queryForObject(inParam, "fiveMinuteSummary.getMemoryUsageRatio");
            if (selectedValue == null) {
              inParam.put("MEMORY_USAGE_RATIO", 0);
            } else {
              inParam.put("MEMORY_USAGE_RATIO", selectedValue);
            }

            // CPU사용률 조회
            selectedValue =
                (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getCpuUsageRatio");
            if (selectedValue == null) {
              inParam.put("CPU_USAGE_RATIO", 0);
            } else {
              inParam.put("CPU_USAGE_RATIO", selectedValue);
            }

            // 디스크 I/O사용률
            selectedValue =
                (Object)
                    sqlManager.queryForObject(inParam, "fiveMinuteSummary.getDiskIoUsageRatio");
            if (selectedValue == null) {
              inParam.put("DISK_IO_USAGE_RATIO", 0);
            } else {
              inParam.put("DISK_IO_USAGE_RATIO", selectedValue);
            }

            // 세션 카운트
            selectedValue =
                (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getSessionCnt");
            if (selectedValue == null) {
              inParam.put("SESSION_CNT", 0);
            } else {
              inParam.put("SESSION_CNT", selectedValue);
            }

            // GC 발생 건수
            selectedValue =
                (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getGcOccrCnt");
            if (selectedValue == null) {
              inParam.put("GC_OCCR_CNT", 0);
            } else {
              inParam.put("GC_OCCR_CNT", selectedValue);
            }

            // GC 소요 시간 차이
            selectedValue =
                (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getGcElapsedGap");
            if (selectedValue == null) {
              inParam.put("GC_ELAPSED_GAP", 0);
            } else {
              inParam.put("GC_ELAPSED_GAP", selectedValue);
            }
            // APM_RESOURCE_SUMMARY 테이블에 값을 insert한다.
            sqlManager.insert(inParam, "fiveMinuteSummary.insertResourceSummary");
          }
        }
      }
    }