public static void main()

in src/main/java/org/apache/tomee/website/Downloads.java [43:101]


    public static void main(final String[] args) {
        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "512");
        Stream.of(
                Stream.of("org/apache/openejb/openejb", "org/apache/tomee/tomee-project")
                        .flatMap(Downloads::toVersions)
                        .map(v -> v.extensions("zip"))
                        .map(v -> v.classifiers("source-release")),
                versionStream("apache-tomee")
                        .map(v -> v.version.startsWith("1.") ?
                                v.classifiers("plus", "plume", "webprofile", "jaxrs") : v.classifiers("plus", "plume", "webprofile"))
                        .map(v -> v.extensions("tar.gz", "zip")),
                versionStream("openejb-standalone")
                        .map(v -> v.extensions("tar.gz", "zip")),
                versionStream("tomee-webapp")
                        .map(v -> v.extensions("war")),
                versionStream("tomee-plus-webapp")
                        .map(v -> v.extensions("war")),
                versionStream("tomee-plume-webapp")
                        .map(v -> v.extensions("war")))
                .flatMap(s -> s)
                .flatMap(Downloads::toDownloadable)
                .parallel()
                .map(Downloads::fillDownloadable)
                .filter(Objects::nonNull /* skipped */)
                .sorted((o1, o2) -> {
                    final int nameComp = o1.name.compareTo(o2.name);
                    if (nameComp != 0) {
                        return nameComp;
                    }

                    final int versionComp = o2.version.compareTo(o1.version);
                    if (versionComp != 0) {
                        if (o2.version.startsWith(o1.version) && o2.version.contains("-M")) { // milestone
                            return -1;
                        }
                        if (o1.version.startsWith(o2.version) && o1.version.contains("-M")) { // milestone
                            return 1;
                        }
                        return versionComp;
                    }

                    final long dateComp = LocalDateTime.parse(o2.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC).toEpochMilli()
                            - LocalDateTime.parse(o1.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC).toEpochMilli();
                    if (dateComp != 0) {
                        return (int) dateComp;
                    }

                    return o1.url.compareTo(o2.url);
                })
                .collect(toList())
                .forEach(d ->
                        System.out.println("" +
                                "|" + d.name + (d.classifier.isEmpty() ? "" : (" " + d.classifier)) +
                                "|" + d.version +
                                "|" + d.date +
                                "|" + d.size + " MB " +
                                "|" + d.format +
                                "| " + d.url + "[icon:download[] " + d.format + "] " + d.sha1 + "[icon:download[] sha1] " + d.md5 + "[icon:download[] md5] " + d.asc + "[icon:download[] asc]"));
    }