use filter() instead of list()
[fanfix.git] / src / be / nikiroo / fanfix_swing / gui / book / BookPopup.java
index 0710549feb3112f1233261ed79f47e8cedd01681..c99e2730c45917359cd8e01043772414d6a08035 100644 (file)
@@ -47,6 +47,7 @@ public class BookPopup extends JPopupMenu {
 
                public void fireElementChanged(BookInfo book);
 
+               public void invalidateCache();
        }
 
        /**
@@ -68,12 +69,6 @@ public class BookPopup extends JPopupMenu {
 
        private Informer informer;
 
-       private Object object;
-
-       private Object object2;
-
-       private Object object3;
-
        public BookPopup(BasicLibrary lib, Informer informer) {
                this.lib = lib;
                this.informer = informer;
@@ -438,7 +433,6 @@ public class BookPopup extends JPopupMenu {
                                                                        lib.changeAuthor(luid, fChangeTo, null);
                                                                }
                                                        }
-                                                       // TODO: ^-- this can create new sources/authors, update maybe required?
 
                                                        return null;
                                                }
@@ -446,11 +440,13 @@ public class BookPopup extends JPopupMenu {
                                                @Override
                                                protected void done() {
                                                        try {
-                                                               // Reload anyway
-                                                               for (BookInfo book : selected) {
-                                                                       informer.fireElementChanged(book);
-                                                               }
+                                                               // this can create new sources/authors, so a simple fireElementChanged is not
+                                                               // enough, we need to clear the whole cache (for BrowserPanel for instance)
+                                                               informer.invalidateCache();
+
+                                                               // TODO: also refresh the Sources/Authors(/Tags?) list
 
+                                                               // Even if problems occurred, still invalidate the cache
                                                                get();
                                                        } catch (Exception e) {
                                                                UiHelper.error(BookPopup.this.getParent(), e.getLocalizedMessage(), "IOException", e);
@@ -513,17 +509,17 @@ public class BookPopup extends JPopupMenu {
                                                                luids.add(book.getMeta().getLuid());
                                                                break;
                                                        case SOURCE:
-                                                               for (MetaData meta : lib.getListBySource(book.getMainInfo())) {
+                                                               for (MetaData meta : lib.getList().filter(book.getMainInfo(), null, null)) {
                                                                        luids.add(meta.getLuid());
                                                                }
                                                                break;
                                                        case AUTHOR:
-                                                               for (MetaData meta : lib.getListByAuthor(book.getMainInfo())) {
+                                                               for (MetaData meta : lib.getList().filter(null, book.getMainInfo(), null)) {
                                                                        luids.add(meta.getLuid());
                                                                }
                                                                break;
                                                        case TAG:
-                                                               for (MetaData meta : lib.getList(null).filter(null, null, book.getMainInfo())) {
+                                                               for (MetaData meta : lib.getList().filter(null, null, book.getMainInfo())) {
                                                                        luids.add(meta.getLuid());
                                                                }
                                                                break;