X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FUpdateChecker.java;h=e739a447d9dda36eca8f4e542769886caffdec96;hb=d127c36ae1d62d93c718117506966ced68854d87;hp=07398ecb608b3f674c75853d874ce630bd735b2d;hpb=92ea5984519562a8f3bee878da6fb130a376d97c;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/UpdateChecker.java b/src/main/java/net/pterodactylus/sone/core/UpdateChecker.java index 07398ec..e739a44 100644 --- a/src/main/java/net/pterodactylus/sone/core/UpdateChecker.java +++ b/src/main/java/net/pterodactylus/sone/core/UpdateChecker.java @@ -1,5 +1,5 @@ /* - * Sone - UpdateChecker.java - Copyright © 2011–2015 David Roden + * Sone - UpdateChecker.java - Copyright © 2011–2016 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,10 +63,11 @@ public class UpdateChecker { private FreenetURI currentUri; /** The latest known edition. */ - private long latestEdition; + private long latestEdition = SonePlugin.getLatestEdition(); /** The current latest known version. */ - private Version currentLatestVersion = SonePlugin.VERSION; + private Version currentLatestVersion; + private final Version currentRunningVersion; /** The release date of the latest version. */ private long latestVersionDate; @@ -80,9 +81,11 @@ public class UpdateChecker { * The freenet interface to use */ @Inject - public UpdateChecker(EventBus eventBus, FreenetInterface freenetInterface) { + public UpdateChecker(EventBus eventBus, FreenetInterface freenetInterface, Version currentVersion) { this.eventBus = eventBus; this.freenetInterface = freenetInterface; + this.currentRunningVersion = currentVersion; + this.currentLatestVersion = currentVersion; } // @@ -96,7 +99,7 @@ public class UpdateChecker { * @return {@code true} if a new version was found */ public boolean hasLatestVersion() { - return currentLatestVersion.compareTo(SonePlugin.VERSION) > 0; + return currentLatestVersion.compareTo(currentRunningVersion) > 0; } /** @@ -221,9 +224,22 @@ public class UpdateChecker { if (version.compareTo(currentLatestVersion) > 0) { currentLatestVersion = version; latestVersionDate = releaseTime; - logger.log(Level.INFO, String.format("Found new version: %s (%tc)", version, new Date(releaseTime))); - eventBus.post(new UpdateFoundEvent(version, releaseTime, edition)); + boolean disruptive = disruptiveVersionBetweenCurrentAndFound(properties); + logger.log(Level.INFO, String.format("Found new version: %s (%tc%s)", version, new Date(releaseTime), disruptive ? ", disruptive" : "")); + eventBus.post(new UpdateFoundEvent(version, releaseTime, edition, disruptive)); } } + private boolean disruptiveVersionBetweenCurrentAndFound(Properties properties) { + for (String key : properties.stringPropertyNames()) { + if (key.startsWith("DisruptiveVersion/")) { + Version disruptiveVersion = Version.parse(key.substring("DisruptiveVersion/".length())); + if (disruptiveVersion.compareTo(currentRunningVersion) > 0) { + return true; + } + } + } + return false; + } + }