/*
- * Sone - UpdateChecker.java - Copyright © 2011 David Roden
+ * Sone - UpdateChecker.java - Copyright © 2011–2012 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
private static final String SONE_HOMEPAGE = "USK@nwa8lHa271k2QvJ8aa0Ov7IHAV-DFOCFgmDt3X6BpCI,DuQSUZiI~agF8c-6tjsFFGuZ8eICrzWCILB60nT8KKo,AQACAAE/sone/";
/** The current latest known edition. */
- private static final int LATEST_EDITION = 24;
+ private static final int LATEST_EDITION = 49;
/** The Freenet interface. */
private final FreenetInterface freenetInterface;
/** The current URI of the homepage. */
private FreenetURI currentUri;
+ /** The latest known edition. */
+ private long latestEdition;
+
/** The current latest known version. */
private Version currentLatestVersion = SonePlugin.VERSION;
return latestVersionDate;
}
+ /**
+ * Returns the latest known edition of the Sone homepage.
+ *
+ * @return The latest edition of the Sone homepage
+ */
+ public long getLatestEdition() {
+ return latestEdition;
+ }
+
//
// ACTIONS
//
@Override
@SuppressWarnings("synthetic-access")
public void editionFound(FreenetURI uri, long edition, boolean newKnownGood, boolean newSlot) {
- logger.log(Level.FINEST, "Found update for %s: %d, %s, %s", new Object[] { uri, edition, newKnownGood, newSlot });
+ logger.log(Level.FINEST, String.format("Found update for %s: %d, %s, %s", uri, edition, newKnownGood, newSlot));
if (newKnownGood || newSlot) {
Pair<FreenetURI, FetchResult> uriResult = freenetInterface.fetchUri(uri.setMetaString(new String[] { "sone.properties" }));
if (uriResult == null) {
- logger.log(Level.WARNING, "Could not fetch properties of latest homepage: %s", uri);
+ logger.log(Level.WARNING, String.format("Could not fetch properties of latest homepage: %s", uri));
return;
}
Bucket resultBucket = uriResult.getRight().asBucket();
try {
- parseProperties(resultBucket.getInputStream());
+ parseProperties(resultBucket.getInputStream(), edition);
+ latestEdition = edition;
} catch (IOException ioe1) {
- logger.log(Level.WARNING, "Could not parse sone.properties of " + uri, ioe1);
+ logger.log(Level.WARNING, String.format("Could not parse sone.properties of %s!", uri), ioe1);
} finally {
resultBucket.free();
}
* Parses the properties of the latest version and fires events, if
* necessary.
*
- * @see UpdateListener#updateFound(Version, long)
- * @see UpdateListenerManager#fireUpdateFound(Version, long)
+ * @see UpdateListener#updateFound(Version, long, long)
+ * @see UpdateListenerManager#fireUpdateFound(Version, long, long)
* @param propertiesInputStream
* The input stream to parse
+ * @param edition
+ * The latest edition of the Sone homepage
* @throws IOException
* if an I/O error occured
*/
- private void parseProperties(InputStream propertiesInputStream) throws IOException {
+ private void parseProperties(InputStream propertiesInputStream, long edition) throws IOException {
Properties properties = new Properties();
InputStreamReader inputStreamReader = null;
try {
if (version.compareTo(currentLatestVersion) > 0) {
currentLatestVersion = version;
latestVersionDate = releaseTime;
- logger.log(Level.INFO, "Found new version: %s (%tc)", new Object[] { version, new Date(releaseTime) });
- updateListenerManager.fireUpdateFound(version, releaseTime);
+ logger.log(Level.INFO, String.format("Found new version: %s (%tc)", version, new Date(releaseTime)));
+ updateListenerManager.fireUpdateFound(version, releaseTime, edition);
}
}