private NodeHistogramSummary getUserNodeHistogramSummary(ResponseTimeHistogramServiceOption option) {
        Application application = option.getApplication();
        Range range = option.getRange();
        TimeWindow timeWindow = option.getTimeWindow();
        List<Application> destinationApplications = option.getToApplications();

        final ServerGroupListFactory serverGroupListFactory = createServerGroupListFactory(option.isUseStatisticsAgentState());
        if (destinationApplications.isEmpty()) {
            return createEmptyNodeHistogramSummary(serverGroupListFactory, application, range);
        }
        LinkDataMapProcessor sourceApplicationFilter = new SourceApplicationFilter(application);
        LinkSelector linkSelector = linkSelectorFactory.createLinkSelector(LinkSelectorType.UNIDIRECTIONAL, LinkDataMapProcessor.NO_OP, sourceApplicationFilter);
        LinkDataDuplexMap linkDataDuplexMap = linkSelector.select(destinationApplications, timeWindow, 0, 1);

        ServerGroupList serverGroupList = serverGroupListFactory.createUserNodeInstanceList();

        NodeList nodeList = NodeListFactory.createNodeList(linkDataDuplexMap);
        LinkList linkList = LinkListFactory.createLinkList(nodeList, linkDataDuplexMap, range);

        final NodeHistogramFactory nodeHistogramFactory = createNodeHistogramFactory();
        NodeHistogram nodeHistogram = nodeHistogramFactory.createUserNodeHistogram(application, range, linkList);
        return new NodeHistogramSummary(application, serverGroupList, nodeHistogram);
    }
@author HyunGil Jeong
@author jaehong.kim
web/src/main/java/com/navercorp/pinpoint/web/applicationmap/service/ResponseTimeHistogramServiceImpl.java