OSDN Git Service

Correct java cast exceptions when doing a getUserInformation.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / utilities / ListManager.java
index 1e964ed..3ed0039 100644 (file)
@@ -28,6 +28,7 @@ import java.util.HashMap;
 import java.util.List;\r
 import java.util.Vector;\r
 \r
+import com.evernote.edam.type.LinkedNotebook;\r
 import com.evernote.edam.type.Note;\r
 import com.evernote.edam.type.Notebook;\r
 import com.evernote.edam.type.SavedSearch;\r
@@ -69,6 +70,8 @@ public class ListManager  {
        private List<Notebook>                  notebookIndex;\r
        private List<Notebook>                  archiveNotebookIndex;\r
        private List<String>                    localNotebookIndex;\r
+       \r
+       private List<LinkedNotebook>    linkedNotebookIndex;\r
 \r
        private List<SavedSearch>               searchIndex;\r
 \r
@@ -97,6 +100,7 @@ public class ListManager  {
        public HashMap<String, String>  wordMap;\r
        public TagSignal                                tagSignal;\r
        public NotebookSignal                   notebookSignal;\r
+       public boolean                                  refreshCounters;                        // Used to control when to recount lists\r
        private int                                             trashCount;\r
     public SaveRunner                          saveRunner;                                     // Thread used to save content.  Used because the xml conversion is slowwwww\r
     QThread                                                    saveThread;\r
@@ -107,7 +111,8 @@ public class ListManager  {
        public ListManager(DatabaseConnection d, ApplicationLogger l) {\r
                conn = d;\r
                logger = l;\r
-               \r
+                       \r
+               conn.getTagTable().cleanupTags();\r
        status = new StatusSignal();\r
                signals = new ThreadSignal();\r
                \r
@@ -125,38 +130,49 @@ public class ListManager  {
                reloadIndexes();\r
                \r
                notebookSignal = new NotebookSignal();\r
-               notebookCounterRunner = new CounterRunner("notebook_counter.log", CounterRunner.NOTEBOOK, Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
+               notebookCounterRunner = new CounterRunner("notebook_counter.log", CounterRunner.NOTEBOOK, \r
+                                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),\r
+                                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
                notebookCounterRunner.setNoteIndex(getNoteIndex());\r
                notebookCounterRunner.notebookSignal.countsChanged.connect(this, "setNotebookCounter(List)");\r
                notebookThread = new QThread(notebookCounterRunner, "Notebook Counter Thread");\r
                notebookThread.start();\r
                \r
                tagSignal = new TagSignal();\r
-               tagCounterRunner = new CounterRunner("tag_counter.log", CounterRunner.TAG, Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
+               tagCounterRunner = new CounterRunner("tag_counter.log", CounterRunner.TAG, \r
+                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),\r
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
                tagCounterRunner.setNoteIndex(getNoteIndex());\r
                tagCounterRunner.tagSignal.countsChanged.connect(this, "setTagCounter(List)");\r
                tagThread = new QThread(tagCounterRunner, "Tag Counter Thread");\r
                tagThread.start();\r
                \r
                trashSignal = new TrashSignal();\r
-               trashCounterRunner = new CounterRunner("trash_counter.log", CounterRunner.TRASH, Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
+               trashCounterRunner = new CounterRunner("trash_counter.log", CounterRunner.TRASH, \r
+                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),\r
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
                trashCounterRunner.trashSignal.countChanged.connect(this, "trashSignalReceiver(Integer)");\r
                trashThread = new QThread(trashCounterRunner, "Trash Counter Thread");\r
                trashThread.start();\r
-               reloadTrashCount();\r
+//             reloadTrashCount();\r
                \r
                wordMap = new HashMap<String, String>();\r
                tagSignal = new TagSignal();\r
                \r
                logger.log(logger.EXTREME, "Setting save thread");\r
-               saveRunner = new SaveRunner("saveRunner.log", Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
+               saveRunner = new SaveRunner("saveRunner.log", \r
+                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),\r
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
                saveThread = new QThread(saveRunner, "Save Runner Thread");\r
                saveThread.start();\r
                \r
 //             thumbnailList = conn.getNoteTable().getThumbnails();\r
 //             thumbnailList = new HashMap<String,QImage>();\r
                \r
+               linkedNotebookIndex = conn.getLinkedNotebookTable().getAll();\r
                loadNoteTitleColors();\r
+               refreshCounters = true;\r
+               refreshCounters();\r
                                \r
        }\r
        \r
@@ -195,7 +211,6 @@ public class ListManager  {
                        e.printStackTrace();\r
                }\r
 \r
-\r
        }\r
 \r
        //***************************************************************\r
@@ -240,9 +255,14 @@ public class ListManager  {
                \r
                setUnsynchronizedNotes(conn.getNoteTable().getUnsynchronizedGUIDs());\r
                \r
+               linkedNotebookIndex = conn.getLinkedNotebookTable().getAll();\r
+               \r
                enSearchChanged = true;\r
        }\r
 \r
+       public void reloadTagIndex() {\r
+               setTagIndex(conn.getTagTable().getAll());       \r
+       }\r
        public void reloadIndexes() {\r
                setUnsynchronizedNotes(conn.getNoteTable().getUnsynchronizedGUIDs());\r
 \r
@@ -251,8 +271,7 @@ public class ListManager  {
                for (int i=0; i<local.size(); i++)\r
                        localNotebookIndex.add(local.get(i).getGuid());\r
                \r
-               // Load tags\r
-               setTagIndex(conn.getTagTable().getAll());\r
+               reloadTagIndex();\r
                // Load notebooks\r
                setNotebookIndex(conn.getNotebookTable().getAll());\r
                // load archived notebooks (if note using the EN interface)\r
@@ -260,7 +279,7 @@ public class ListManager  {
                // load saved search index\r
                setSavedSearchIndex(conn.getSavedSearchTable().getAll());\r
                // Load search helper utility\r
-               enSearch = new EnSearch(conn,  logger, "", getTagIndex(), Global.getMinimumWordLength(), Global.getRecognitionWeight());\r
+               enSearch = new EnSearch(conn,  logger, "", getTagIndex(), Global.getRecognitionWeight());\r
                logger.log(logger.HIGH, "Building note index");\r
 \r
 //             if (getMasterNoteIndex() == null) { \r
@@ -292,7 +311,7 @@ public class ListManager  {
        //* selected notebooks\r
        //***************************************************************\r
        //***************************************************************\r
-       // Return the selected notebook(s)\r
+       // Return the selected notebook(s)\r
        public List<String> getSelectedNotebooks() {\r
                return selectedNotebooks;\r
        }\r
@@ -341,6 +360,9 @@ public class ListManager  {
                return notebookIndex;\r
 \r
        }\r
+       public List<LinkedNotebook> getLinkedNotebookIndex() {\r
+               return linkedNotebookIndex;\r
+       }\r
        public List<Notebook> getArchiveNotebookIndex() {\r
                return archiveNotebookIndex;\r
        }\r
@@ -421,7 +443,7 @@ public class ListManager  {
     //***************************************************************\r
     //***************************************************************\r
        public void setEnSearch(String t) {\r
-               enSearch = new EnSearch(conn,logger, t, getTagIndex(), Global.getMinimumWordLength(), Global.getRecognitionWeight());\r
+               enSearch = new EnSearch(conn,logger, t, getTagIndex(), Global.getRecognitionWeight());\r
                enSearchChanged = true;\r
        }\r
        // Save search tags\r
@@ -797,6 +819,15 @@ public class ListManager  {
                }\r
                conn.getNotebookTable().expungeNotebook(guid, true);            \r
        }\r
+       // Rename a stack\r
+       public void renameStack(String oldName, String newName) {\r
+               for (int i=0; i<getNotebookIndex().size(); i++) {\r
+                       if (getNotebookIndex().get(i).getStack() != null && \r
+                                       getNotebookIndex().get(i).getStack().equalsIgnoreCase(oldName)) {\r
+                               getNotebookIndex().get(i).setStack(newName);\r
+                       }\r
+               }       \r
+       }\r
        // Update a notebook sequence number\r
        public void updateNotebookSequence(String guid, int sequence) {\r
                logger.log(logger.HIGH, "Entering ListManager.updateNotebookSequence");\r
@@ -827,6 +858,21 @@ public class ListManager  {
                logger.log(logger.HIGH, "Leaving ListManager.updateNotebookGuid");\r
 \r
        }\r
+       // Update a notebook Guid number\r
+       public void updateNotebookStack(String oldGuid, String stack) {\r
+               logger.log(logger.HIGH, "Entering ListManager.updateNotebookGuid");\r
+\r
+               conn.getNotebookTable().setStack(oldGuid, stack);\r
+               \r
+               for (int i=0; i<notebookIndex.size(); i++) {\r
+                       if (notebookIndex.get(i).getGuid().equals(oldGuid)) {\r
+                               notebookIndex.get(i).setStack(stack);\r
+                               i=notebookIndex.size()+1;\r
+                       }\r
+               }\r
+               logger.log(logger.HIGH, "Leaving ListManager.updateNotebookGuid");\r
+\r
+       }\r
        \r
        \r
        //************************************************************************************\r
@@ -916,12 +962,23 @@ public class ListManager  {
                return false;\r
        }\r
        \r
-       // Load the note index based upon what the user wants.\r
-       public void loadNotesIndex() {\r
-               logger.log(logger.EXTREME, "Entering ListManager.loadNotesIndex()");\r
+       // Trigger a recount of counters\r
+       public void refreshCounters() {\r
+//             refreshCounters= false;\r
+               if (!refreshCounters)\r
+                       return;\r
+               refreshCounters = false;\r
                tagCounterRunner.abortCount = true;\r
                notebookCounterRunner.abortCount = true;\r
                trashCounterRunner.abortCount = true;\r
+               countNotebookResults(getNoteIndex());\r
+               countTagResults(getNoteIndex());\r
+               reloadTrashCount();\r
+\r
+       }\r
+       // Load the note index based upon what the user wants.\r
+       public void loadNotesIndex() {\r
+               logger.log(logger.EXTREME, "Entering ListManager.loadNotesIndex()");\r
                \r
                List<Note> matches;\r
                if (enSearchChanged || getMasterNoteIndex() == null)\r
@@ -937,38 +994,35 @@ public class ListManager  {
                        if (filterRecord(matches.get(i)))\r
                                getNoteIndex().add(matches.get(i));\r
                }\r
-               countNotebookResults(getNoteIndex());\r
-               countTagResults(getNoteIndex());\r
+               refreshCounters = true;\r
                enSearchChanged = false;\r
-               reloadTrashCount();\r
                logger.log(logger.EXTREME, "Leaving ListManager.loadNotesIndex()");\r
        }\r
        public void countNotebookResults(List<Note> index) {\r
                logger.log(logger.EXTREME, "Entering ListManager.countNotebookResults()");\r
-               if (!Global.mimicEvernoteInterface) {\r
+               notebookCounterRunner.abortCount = true;\r
+               if (!Global.mimicEvernoteInterface) \r
                        notebookCounterRunner.setNoteIndex(index);\r
-                       notebookCounterRunner.release(CounterRunner.NOTEBOOK);\r
-               } else {\r
+               else \r
                        notebookCounterRunner.setNoteIndex(getMasterNoteIndex());\r
-                       notebookCounterRunner.release(CounterRunner.NOTEBOOK_ALL);\r
-               }\r
+               notebookCounterRunner.release(CounterRunner.NOTEBOOK);\r
                logger.log(logger.EXTREME, "Leaving ListManager.countNotebookResults()");\r
        }\r
        public void countTagResults(List<Note> index) {\r
                logger.log(logger.EXTREME, "Entering ListManager.countTagResults");\r
-               if (!Global.tagBehavior().equalsIgnoreCase("DoNothing")) {\r
+               trashCounterRunner.abortCount = true;\r
+               if (!Global.tagBehavior().equalsIgnoreCase("DoNothing")) \r
                        tagCounterRunner.setNoteIndex(index);\r
-                       tagCounterRunner.release(CounterRunner.TAG);\r
-               } else {\r
-                       tagCounterRunner.setNoteIndex(null);\r
-                       tagCounterRunner.release(CounterRunner.TAG_ALL);\r
-               }\r
+               else\r
+                       tagCounterRunner.setNoteIndex(getMasterNoteIndex());\r
+               tagCounterRunner.release(CounterRunner.TAG);\r
                logger.log(logger.EXTREME, "Leaving ListManager.countTagResults()");\r
        }\r
        // Update the count of items in the trash\r
        public void reloadTrashCount() {\r
                logger.log(logger.EXTREME, "Entering ListManager.reloadTrashCount");\r
-               trashCounterRunner.setNoteIndex(getNoteIndex());\r
+               trashCounterRunner.abortCount = true;\r
+               trashCounterRunner.setNoteIndex(getMasterNoteIndex());\r
                trashCounterRunner.release(CounterRunner.TRASH);\r
                logger.log(logger.EXTREME, "Leaving ListManager.reloadTrashCount");\r
        }       \r
@@ -995,12 +1049,21 @@ public class ListManager  {
                if (selectedTags.size() == 0) \r
                        return true;\r
                \r
-               for (int i=0; i<selectedTags.size(); i++) {\r
-                       String selectedGuid = selectedTags.get(i);\r
-                       if (noteTags.contains(selectedGuid))\r
-                                       return true;\r
+               if (!Global.anyTagSelectionMatch()) {\r
+                       for (int i=0; i<selectedTags.size(); i++) {\r
+                               String selectedGuid = selectedTags.get(i);\r
+                               if (!noteTags.contains(selectedGuid))\r
+                                       return false;\r
+                       }\r
+                       return true;\r
+               } else {\r
+                       for (int i=0; i<selectedTags.size(); i++) {\r
+                               String selectedGuid = selectedTags.get(i);\r
+                               if (noteTags.contains(selectedGuid))\r
+                                               return true;\r
+                       }\r
+                       return false;\r
                }\r
-               return false;\r
        }\r
 \r
        public void setNoteSynchronized(String guid, boolean value) {\r