remove Id keyword
[jSite2.git] / src / net / pterodactylus / jsite / core / RequestManager.java
index 4e23d79..b101bf7 100644 (file)
@@ -49,7 +49,6 @@ import net.pterodactylus.util.logging.Logging;
  * node is disconnected.
  * 
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
  */
 public class RequestManager implements NodeListener, HighLevelProgressListener {
 
@@ -126,6 +125,34 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                }
        }
 
+       /**
+        * Notifies all listeners that a request has finished.
+        * 
+        * @see RequestListener#requestFinished(Request)
+        * @param request
+        *            The request that has finished
+        */
+       private void fireRequestFinished(Request request) {
+               for (RequestListener requestListener: requestListeners) {
+                       requestListener.requestFinished(request);
+               }
+       }
+
+       /**
+        * Notifies all listeners that a request has generated a URI.
+        * 
+        * @see RequestListener#requestGeneratedURI(Request, String)
+        * @param request
+        *            The request that has generated a URI
+        * @param uri
+        *            The generated URI
+        */
+       private void fireRequestGeneratedURI(Request request, String uri) {
+               for (RequestListener requestListener: requestListeners) {
+                       requestListener.requestGeneratedURI(request, uri);
+               }
+       }
+
        //
        // ACCESSORS
        //
@@ -308,13 +335,24 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                        identifierRequests.put(identifier, request);
                        fireRequestAdded(request);
                }
-               request.setTotalBlocks(highLevelProgress.getTotalBlocks());
-               request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
-               request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());
-               request.setFailedBlocks(highLevelProgress.getFailedBlocks());
-               request.setFatallyFailedBlocks(highLevelProgress.getFatallyFailedBlocks());
-               request.setTotalFinalized(highLevelProgress.isTotalFinalized());
-               fireRequestProgressed(request);
+               if (highLevelProgress.isFinished()) {
+                       request.setFinished(true);
+                       request.setSuccessful(!highLevelProgress.isFailed());
+                       fireRequestFinished(request);
+               } else if (highLevelProgress.isFetchable()) {
+                       /* TODO - ignore? */
+               } else if (highLevelProgress.getURI() != null) {
+                       request.setURI(highLevelProgress.getURI());
+                       fireRequestGeneratedURI(request, highLevelProgress.getURI());
+               } else {
+                       request.setTotalBlocks(highLevelProgress.getTotalBlocks());
+                       request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
+                       request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());
+                       request.setFailedBlocks(highLevelProgress.getFailedBlocks());
+                       request.setFatallyFailedBlocks(highLevelProgress.getFatallyFailedBlocks());
+                       request.setTotalFinalized(highLevelProgress.isTotalFinalized());
+                       fireRequestProgressed(request);
+               }
        }
 
 }