private void renderRequirementsHistoriesSection()

in maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java [199:245]


    private void renderRequirementsHistoriesSection() {
        if (requirementsHistories.isEmpty()) {
            return;
        }

        startSection(getI18nString("systemrequirements.history"));
        paragraph(getI18nString("systemrequirements.history.intro"));

        startTable();
        tableHeader(new String[] {
            getI18nString("systemrequirements.history.version"),
            getI18nString("systemrequirements.history.maven"),
            getI18nString("systemrequirements.history.jdk")
        });

        // group by same requirements
        final List<List<RequirementsHistory>> requirementsVersions = new ArrayList<>();
        requirementsHistories.forEach(requirementsHistory -> {
            List<RequirementsHistory> current =
                    requirementsVersions.isEmpty() ? null : requirementsVersions.get(requirementsVersions.size() - 1);
            if (current != null && current.get(0).hasSameRequirements(requirementsHistory)) {
                current.add(requirementsHistory);
            } else {
                current = new ArrayList<>();
                current.add(requirementsHistory);
                requirementsVersions.add(current);
            }
        });

        // render by common requirements
        requirementsVersions.forEach(requirementsHistories -> {
            sink.tableRow();
            RequirementsHistory current = requirementsHistories.get(0);
            if (requirementsHistories.size() == 1) {
                tableCell(current.getVersion());
            } else {
                RequirementsHistory from = requirementsHistories.get(requirementsHistories.size() - 1);
                tableCell("from " + from.getVersion() + " to " + current.getVersion());
            }
            tableCell(current.getMaven());
            tableCell(current.getJdk());
            sink.tableRow_();
        });
        endTable();

        endSection();
    }