public List<ApplicationStatPoint> getApplicationApdexScoreList(TimeWindow window) {
        int size = window.getWindowRangeCount();
        double[] min = DoubleArray.newArray(size, DEFAULT_MIN_APDEX_SCORE);
        List<String> minAgentId = fillList(size, DEFAULT_AGENT_ID);
        double[] max = DoubleArray.newArray(size, DEFAULT_MAX_APDEX_SCORE);
        List<String> maxAgentId = fillList(size, DEFAULT_AGENT_ID);

        List<Histogram> sumHistogram = TimeWindows.createInitialPoints(window, this::histogram);

        for (AgentHistogram agentHistogram : agentHistogramList.getAgentHistogramList()) {
            for (TimeHistogram timeHistogram : agentHistogram.getTimeHistogram()) {
                if (timeHistogram.getTotalCount() != 0) {
                    final int index = window.getWindowIndex(timeHistogram.getTimeStamp());
                    if (index < 0 || index >= size) {
                        continue;
                    }
                    double apdex = ApdexScore.calculateApdexScore(timeHistogram);
                    String agentId = agentHistogram.getId();

                    updateMin(index, apdex, agentId, min, minAgentId);
                    updateMax(index, apdex, agentId, max, maxAgentId);
                    sumHistogram.get(index).add(timeHistogram);
                }
            }
        }

        return createApplicationStatPoints(window, Doubles.asList(min), minAgentId, Doubles.asList(max), maxAgentId, sumHistogram);
    }
most of the features have been delegated to AgentHistogramList upon refactoring
TODO: functionality reduced to creating views - need to be renamed or removed

@author emeroad
web/src/main/java/com/navercorp/pinpoint/web/applicationmap/histogram/AgentTimeHistogram.java