Improve download visibility
Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/13efde88 Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/13efde88 Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/13efde88 Branch: refs/heads/master Commit: 13efde886213b2843d3fe528e90a802d6ba726ea Parents: 1477534 Author: Andy Gumbrecht <agumbre...@tomitribe.com> Authored: Mon Oct 9 21:34:49 2017 -0700 Committer: Andy Gumbrecht <agumbre...@tomitribe.com> Committed: Mon Oct 9 21:34:49 2017 -0700 ---------------------------------------------------------------------- .../org/apache/tomee/website/Downloads.java | 106 +++++-- src/main/jbake/content/download-archive.adoc | 314 +++++++++++++++++++ src/main/jbake/content/download-ng.adoc | 295 ++--------------- 3 files changed, 428 insertions(+), 287 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/13efde88/src/main/java/org/apache/tomee/website/Downloads.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/tomee/website/Downloads.java b/src/main/java/org/apache/tomee/website/Downloads.java index cbb6e73..cb63681 100755 --- a/src/main/java/org/apache/tomee/website/Downloads.java +++ b/src/main/java/org/apache/tomee/website/Downloads.java @@ -14,12 +14,16 @@ import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; +import java.sql.Date; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Collection; +import java.util.List; import java.util.Objects; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Stream; import static java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME; @@ -41,8 +45,13 @@ public class Downloads { } public static void main(final String[] args) { + System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "512"); - Stream.of( + + AtomicReference<String> version1 = new AtomicReference<>(); + AtomicReference<String> version7 = new AtomicReference<>(); + + final List<Download> downloads = Stream.of( Stream.of("org/apache/openejb/openejb", "org/apache/tomee/tomee-project") .flatMap(Downloads::toVersions) .map(v -> v.extensions("zip")) @@ -65,22 +74,30 @@ public class Downloads { .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); + 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; + versionComp = -1; + } else if (o1.version.startsWith(o2.version) && o1.version.contains("-M")) { // milestone + versionComp = 1; } + + checkMaxVersion(version1, version7, o1, versionComp); + return versionComp; } + final int nameComp = o1.name.compareTo(o2.name); + + if (nameComp != 0) { + + checkMaxVersion(version1, version7, o1, nameComp); + + return nameComp; + } + 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) { @@ -89,15 +106,60 @@ public class Downloads { 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]")); + .collect(toList()); + + String versionCurrent = version7.get(); + + //Current + for (final Download d : downloads) { + if (d.version.startsWith(version7.get()) || d.version.startsWith(version1.get())) { + + if (!versionCurrent.equals(d.version)) { + versionCurrent = d.version; + System.out.println("||||||"); + } + + printRow(d); + } + } + + System.out.println(); + versionCurrent = version7.get(); + + //Archive + for (final Download d : downloads) { + if (!d.version.startsWith(version7.get()) && !d.version.startsWith(version1.get())) { + + if (!versionCurrent.equals(d.version)) { + versionCurrent = d.version; + System.out.println("||||||"); + } + + printRow(d); + } + } + + + } + + private static void printRow(Download d) { + System.out.println("" + + "|" + d.name.replace("Apache ", "") + (d.classifier.isEmpty() ? "" : (" " + d.classifier)) + + "|" + d.version + + "|" + new SimpleDateFormat("d MMM yyyy").format(Date.from(LocalDateTime.parse(d.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC))) + + "|" + d.size + " MB " + + "|" + d.format.toUpperCase() + + "| " + d.url + "[icon:download[] " + d.format.toUpperCase() + "] " + d.sha1 + "[icon:download[] SHA1] " + d.md5 + "[icon:download[] MD5]"); + } + + private static void checkMaxVersion(AtomicReference<String> version1, AtomicReference<String> version7, Download o1, int versionComp) { + if (versionComp > 0) { + if (o1.version.startsWith("1.")) { + version1.set(o1.version); + } else if (o1.version.startsWith("7.")) { + version7.set(o1.version); + } + } } private static Download fillDownloadable(final Download download) { @@ -114,7 +176,8 @@ public class Downloads { } download.setDate(connection.getHeaderField("Last-Modified").replaceAll(" +", " ")); - download.setSize(toMega(ofNullable(connection.getHeaderField("Content-Length")).map(Long::parseLong).orElse(0L), ofNullable(connection.getHeaderField("Accept-Ranges")).orElse("bytes"))); + download.setSize(toMega(ofNullable(connection.getHeaderField("Content-Length")).map(Long::parseLong).orElse(0L), ofNullable(connection.getHeaderField("Accept-Ranges")).orElse + ("bytes"))); connection.getInputStream().close(); } catch (final IOException e) { @@ -143,7 +206,8 @@ public class Downloads { final String artifactBase = version.base + "/" + version.version + "/" + artifactId + "-" + version.version; return version.extensions.stream() .flatMap(e -> (version.classifiers.isEmpty() ? Stream.of(new ArtifactDescription("", e)) : version.classifiers.stream().map(c -> new ArtifactDescription(c, e)))) - .map(a -> toDownload(artifactId, a.classifier, version.version, a.extension, artifactBase + (a.classifier.isEmpty() ? '.' + a.extension : ('-' + a.classifier + '.' + a.extension)))); + .map(a -> toDownload(artifactId, a.classifier, version.version, a.extension, artifactBase + (a.classifier.isEmpty() ? '.' + a.extension : ('-' + a.classifier + '.' + a + .extension)))); } private static Download toDownload(final String artifactId, final String classifier, final String version, final String format, final String url) {