private TransactionInfoViewModel getTransaction0(String traceId,
                                                     long focusTimestamp,
                                                     String agentId,
                                                     long spanId,
                                                     boolean useStatisticsAgentState,
                                                     TimeHistogramFormat format) {
        logger.debug("GET /trace params {traceId={}, focusTimestamp={}, agentId={}, spanId={}, format={}}",
                traceId, focusTimestamp, agentId, spanId, format);
        final TransactionId transactionId = TransactionIdUtils.parseTransactionId(traceId);
        final ColumnGetCount columnGetCount = ColumnGetCount.of(callstackSelectSpansLimit);

        final Predicate<SpanBo> spanMatchFilter = SpanFilters.spanFilter(spanId, agentId, focusTimestamp);
        // select spans
        final SpanResult spanResult = this.spanService.selectSpan(transactionId, spanMatchFilter, columnGetCount);
        final CallTreeIterator callTreeIterator = spanResult.callTree();
        final RecordSet recordSet = this.transactionInfoService.createRecordSet(callTreeIterator, spanMatchFilter);

        TimeWindow timeWindow = newTimeWindow(recordSet);
        Range scanRange = timeWindow.getWindowRange();

        // application map
        final FilteredMapServiceOption option = new FilteredMapServiceOption.Builder(transactionId, scanRange, columnGetCount)
                .setUseStatisticsAgentState(useStatisticsAgentState)
                .build();

        final ApplicationMap map = filteredMapService.selectApplicationMap(option);

        return newTransactionInfo(spanId, transactionId, spanResult, map, recordSet, timeWindow, format);
    }
info lookup for a selected transaction

@param traceId traceId
@param focusTimestamp focusTimestamp
@return TransactionInfoViewModel
web/src/main/java/com/navercorp/pinpoint/web/controller/TransactionController.java