Author: toad
Date: 2008-04-15 17:00:04 +0000 (Tue, 15 Apr 2008)
New Revision: 19349

Modified:
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/node/fcp/FCPClient.java
   trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
Log:
Automatically remove alerts when the file is removed from the queue.

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2008-04-15 
11:43:29 UTC (rev 19348)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2008-04-15 
17:00:04 UTC (rev 19349)
@@ -20,6 +20,7 @@
 import java.text.NumberFormat;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -1072,6 +1073,8 @@
         */
        private final HashSet completedRequestIdentifiers = new HashSet();

+       private final HashMap alertsByIdentifier = new HashMap();
+       
        public void notifyFailure(ClientRequest req) {
                // FIXME do something???
        }
@@ -1209,14 +1212,22 @@
                        L10n.addL10nSubstitution(text, 
"QueueToadlet.downloadSucceeded",
                                        new String[] { "link", "/link", 
"origlink", "/origlink", "filename", "size" },
                                        new String[] { "<a 
href=\"/queue/"+uri.toACIIString()+"\">", "</a>", "<a 
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size) } );
-                       core.alerts.register(new SimpleHTMLUserAlert(true, 
title, text, UserAlert.MINOR) {
+                       UserAlert alert = 
+                       new SimpleHTMLUserAlert(true, title, text, 
UserAlert.MINOR) {
                                public void onDismiss() {
                                        
synchronized(completedRequestIdentifiers) {
                                                
completedRequestIdentifiers.remove(identifier);
                                        }
+                                       synchronized(alertsByIdentifier) {
+                                               
alertsByIdentifier.remove(identifier);
+                                       }
                                        saveCompletedIdentifiersOffThread();
                                }
-                       });
+                       };
+                       core.alerts.register(alert);
+                       synchronized(alertsByIdentifier) {
+                               alertsByIdentifier.put(identifier, alert);
+                       }
                } else if(req instanceof ClientPut) {
                        FreenetURI uri = ((ClientPut)req).getFinalURI();
                        long size = ((ClientPut)req).getDataSize();
@@ -1226,14 +1237,22 @@
                        L10n.addL10nSubstitution(text, 
"QueueToadlet.uploadSucceeded",
                                        new String[] { "link", "/link", 
"filename", "size" },
                                        new String[] { "<a 
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size) } );
-                       core.alerts.register(new SimpleHTMLUserAlert(true, 
title, text, UserAlert.MINOR) {
+                       UserAlert alert = 
+                       new SimpleHTMLUserAlert(true, title, text, 
UserAlert.MINOR) {
                                public void onDismiss() {
                                        
synchronized(completedRequestIdentifiers) {
                                                
completedRequestIdentifiers.remove(identifier);
                                        }
+                                       synchronized(alertsByIdentifier) {
+                                               
alertsByIdentifier.remove(identifier);
+                                       }
                                        saveCompletedIdentifiersOffThread();
                                }
-                       });
+                       };
+                       core.alerts.register(alert);
+                       synchronized(alertsByIdentifier) {
+                               alertsByIdentifier.put(identifier, alert);
+                       }
                } else if(req instanceof ClientPutDir) {
                        FreenetURI uri = ((ClientPutDir)req).getFinalURI();
                        long size = ((ClientPutDir)req).getTotalDataSize();
@@ -1244,14 +1263,22 @@
                        L10n.addL10nSubstitution(text, 
"QueueToadlet.siteUploadSucceeded",
                                        new String[] { "link", "/link", 
"filename", "size", "files" },
                                        new String[] { "<a 
href=\"/"+uri.toACIIString()+"\">", "</a>", name, SizeUtil.formatSize(size), 
Integer.toString(files) } );
-                       core.alerts.register(new SimpleHTMLUserAlert(true, 
title, text, UserAlert.MINOR) {
+                       UserAlert alert = 
+                       new SimpleHTMLUserAlert(true, title, text, 
UserAlert.MINOR) {
                                public void onDismiss() {
                                        
synchronized(completedRequestIdentifiers) {
                                                
completedRequestIdentifiers.remove(identifier);
                                        }
+                                       synchronized(alertsByIdentifier) {
+                                               
alertsByIdentifier.remove(identifier);
+                                       }
                                        saveCompletedIdentifiersOffThread();
                                }
-                       });
+                       };
+                       core.alerts.register(alert);
+                       synchronized(alertsByIdentifier) {
+                               alertsByIdentifier.put(identifier, alert);
+                       }
                }
        }

@@ -1259,4 +1286,17 @@
                return L10n.getString("QueueToadlet."+key, pattern, value);
        }

+       public void onRemove(ClientRequest req) {
+               String identifier = req.getIdentifier();
+               synchronized(completedRequestIdentifiers) {
+                       completedRequestIdentifiers.remove(identifier);
+               }
+               UserAlert alert;
+               synchronized(alertsByIdentifier) {
+                       alert = (UserAlert) 
alertsByIdentifier.remove(identifier);
+               }
+               core.alerts.unregister(alert);
+               saveCompletedIdentifiersOffThread();
+       }
+
 }

Modified: trunk/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPClient.java   2008-04-15 11:43:29 UTC 
(rev 19348)
+++ trunk/freenet/src/freenet/node/fcp/FCPClient.java   2008-04-15 17:00:04 UTC 
(rev 19349)
@@ -159,6 +159,8 @@
                        if(logMINOR) Logger.minor(this, "Killing request "+req);
                        req.cancel();
                }
+               if(completionCallback != null)
+                       completionCallback.onRemove(req);
                server.forceStorePersistentRequests();
        }


Modified: trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java   
2008-04-15 11:43:29 UTC (rev 19348)
+++ trunk/freenet/src/freenet/node/fcp/RequestCompletionCallback.java   
2008-04-15 17:00:04 UTC (rev 19349)
@@ -12,4 +12,9 @@
         */
        public void notifyFailure(ClientRequest req);

+       /**
+        * Callback when a request is removed
+        */
+       public void onRemove(ClientRequest req);
+       
 }


Reply via email to