✨ Add way to start fetch while skipping one version
[Sone.git] / src / main / java / net / pterodactylus / sone / core / SoneRescuer.java
index ed3d819..6045127 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - SoneRescuer.java - Copyright © 2011–2013 David Roden
+ * Sone - SoneRescuer.java - Copyright © 2011–2019 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
@@ -24,8 +24,6 @@ import freenet.keys.FreenetURI;
 /**
  * The Sone rescuer downloads older editions of a Sone and updates the currently
  * stored Sone with it.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class SoneRescuer extends AbstractService {
 
@@ -74,6 +72,7 @@ public class SoneRescuer extends AbstractService {
         *
         * @return {@code true} if the Sone rescuer is currently fetching a Sone
         */
+       @SuppressWarnings("unused") // used in rescue.html
        public boolean isFetching() {
                return fetching;
        }
@@ -83,6 +82,7 @@ public class SoneRescuer extends AbstractService {
         *
         * @return The edition that is currently being downloaded
         */
+       @SuppressWarnings("unused") // used in rescue.html
        public long getCurrentEdition() {
                return currentEdition;
        }
@@ -102,28 +102,18 @@ public class SoneRescuer extends AbstractService {
         *
         * @return The next edition the Sone rescuer can download
         */
+       @SuppressWarnings("unused") // used in rescue.html
        public long getNextEdition() {
                return currentEdition - 1;
        }
 
        /**
-        * Sets the edition to rescue.
-        *
-        * @param edition
-        *            The edition to rescue
-        * @return This Sone rescuer
-        */
-       public SoneRescuer setEdition(long edition) {
-               currentEdition = edition;
-               return this;
-       }
-
-       /**
         * Sets whether the last fetch was successful.
         *
         * @return {@code true} if the last fetch was successful, {@code false}
         *         otherwise
         */
+       @SuppressWarnings("unused") // used in rescue.html
        public boolean isLastFetchSuccessful() {
                return lastFetchSuccessful;
        }
@@ -133,15 +123,22 @@ public class SoneRescuer extends AbstractService {
        //
 
        /**
-        * Starts the next fetch. If you want to fetch a different edition than “the
-        * next older one,” remember to call {@link #setEdition(long)} before
-        * calling this method.
+        * Starts the next fetch.
         */
        public void startNextFetch() {
                fetching = true;
                notifySyncObject();
        }
 
+       /**
+        * Starts the next fetch.
+        */
+       public void startNextFetchWithSkip() {
+               currentEdition--;
+               fetching = true;
+               notifySyncObject();
+       }
+
        //
        // SERVICE METHODS
        //
@@ -157,13 +154,14 @@ public class SoneRescuer extends AbstractService {
                        }
                        if (fetching) {
                                core.lockSone(sone);
-                               FreenetURI soneUri = sone.getRequestUri().setKeyType("SSK").setDocName("Sone-" + currentEdition).setMetaString(new String[] { "sone.xml" });
+                               FreenetURI soneUri = sone.getRequestUri().setKeyType("SSK").setDocName("Sone-" + getNextEdition()).setMetaString(new String[] { "sone.xml" });
                                System.out.println("URI: " + soneUri);
                                Sone fetchedSone = soneDownloader.fetchSone(sone, soneUri, true);
                                System.out.println("Sone: " + fetchedSone);
                                lastFetchSuccessful = (fetchedSone != null);
                                if (lastFetchSuccessful) {
                                        core.updateSone(fetchedSone, true);
+                                       currentEdition = getNextEdition();
                                }
                                fetching = false;
                        }