public FilterMapWithScatter selectApplicationMapWithScatterData(FilteredMapServiceOption option) {
        StopWatch watch = new StopWatch();
        watch.start();

        final List<List<SpanBo>> filterList = selectFilteredSpan(option.getTransactionIdList(), option.getFilter(), option.getColumnGetCount());
        Range scanRange = option.getRange();
        TimeWindow timeWindow = new TimeWindow(scanRange);

        FilteredMapBuilder filteredMapBuilder = new FilteredMapBuilder(applicationFactory, registry, timeWindow);
        filteredMapBuilder.serverMapDataFilter(serverMapDataFilter);
        filteredMapBuilder.addTransactions(filterList);
        FilteredMap filteredMap = filteredMapBuilder.build();

        ApplicationMap map = createMap(option, filteredMap);

        Map<Application, ScatterData> applicationScatterData = filteredMap
                .getApplicationScatterData(
                        scanRange.getFrom(), scanRange.getTo(),
                        option.getXGroupUnit(), option.getYGroupUnit()
                );

        watch.stop();
        logger.debug("Select filtered application map elapsed. {}ms", watch.getTotalTimeMillis());

        return new FilterMapWithScatter(map, applicationScatterData);
    }
@author netspider
@author emeroad
@author minwoo.jung
web/src/main/java/com/navercorp/pinpoint/web/applicationmap/service/FilteredMapServiceImpl.java