OSDN Git Service

Add index caching to improve performance of index thread, correct java cast exception...
authorRandy Baumgarte <randy@fbn.cx>
Thu, 30 Dec 2010 05:54:52 +0000 (00:54 -0500)
committerRandy Baumgarte <randy@fbn.cx>
Sat, 1 Jan 2011 23:40:37 +0000 (18:40 -0500)
src/cx/fbn/nevernote/Global.java
src/cx/fbn/nevernote/filters/NoteSortFilterProxyModel.java
src/cx/fbn/nevernote/sql/REnSearch.java
src/cx/fbn/nevernote/threads/IndexRunner.java
src/cx/fbn/nevernote/threads/SyncRunner.java

index 0ed7d20..5eb3007 100644 (file)
@@ -327,11 +327,18 @@ public class Global {
     }\r
     public static boolean showTrayIcon() {\r
                settings.beginGroup("General");\r
-               String max = (String) settings.value("showTrayIcon", "true");\r
-               settings.endGroup();\r
-               if (!max.equalsIgnoreCase("true"))\r
-                       return false;\r
-               return true;    \r
+               try {\r
+                       String max = (String) settings.value("showTrayIcon", "true");\r
+                       settings.endGroup();\r
+                       if (!max.equalsIgnoreCase("true"))\r
+                               return false;\r
+                       else\r
+                               return true;    \r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("showTrayIcon", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setShowTrayIcon(boolean val) {\r
                settings.beginGroup("General");\r
@@ -342,12 +349,18 @@ public class Global {
                settings.endGroup();\r
     }\r
     public static boolean wasWindowMaximized() {\r
-               settings.beginGroup("General");\r
-               String max = (String) settings.value("isMaximized", "true");\r
-               settings.endGroup();\r
-               if (!max.equalsIgnoreCase("true"))\r
-                       return false;\r
-               return true;    \r
+       try {\r
+                       settings.beginGroup("General");\r
+                       String max = (String) settings.value("isMaximized", "true");\r
+                       settings.endGroup();\r
+                       if (!max.equalsIgnoreCase("true"))\r
+                               return false;\r
+                       return true;    \r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("isMaximized", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveWindowMaximized(boolean isMax) {\r
                settings.beginGroup("General");\r
@@ -437,13 +450,19 @@ public class Global {
                return order;\r
     }\r
     public static boolean automaticLogin() {\r
-               settings.beginGroup("General");\r
-               String text = (String)settings.value("automaticLogin", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;           \r
+       try {\r
+               settings.beginGroup("General");\r
+               String text = (String)settings.value("automaticLogin", "false");\r
+               settings.endGroup();\r
+               if (text.equalsIgnoreCase("true"))\r
+                       return true;\r
+               else\r
+                       return false;           \r
+       } catch (java.lang.ClassCastException e) {\r
+               Boolean value = (Boolean) settings.value("automaticLogin", false);\r
+               settings.endGroup();\r
+               return value;\r
+       }\r
     }\r
     public static void setAutomaticLogin(boolean val) {\r
                settings.beginGroup("General");\r
@@ -454,13 +473,19 @@ public class Global {
                settings.endGroup();\r
     }\r
     public static boolean rememberPassword() {\r
-               settings.beginGroup("General");\r
-               String text = (String)settings.value("rememberPassword", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;           \r
+       try {\r
+                       settings.beginGroup("General");\r
+                       String text = (String)settings.value("rememberPassword", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;   \r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("rememberPassword", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setRememberPassword(boolean val) {\r
                settings.beginGroup("General");\r
@@ -493,13 +518,19 @@ public class Global {
                return text;\r
     }\r
     public static boolean disableUploads() {\r
-               settings.beginGroup("General");\r
-               String text = (String)settings.value("disableUploads", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+       settings.beginGroup("General");\r
+       try {\r
+               String text = (String)settings.value("disableUploads", "false");\r
+               settings.endGroup();\r
+               if (text.equalsIgnoreCase("true"))\r
+                       return true;\r
+               else\r
+                       return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("disableUploads", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setDisableUploads(boolean val) {\r
                settings.beginGroup("General");\r
@@ -512,12 +543,18 @@ public class Global {
     }\r
     public static boolean pdfPreview() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("pdfPreview", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+               try {\r
+                       String text = (String)settings.value("pdfPreview", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("pdfPreview", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setPdfPreview(boolean val) {\r
                settings.beginGroup("General");\r
@@ -529,12 +566,18 @@ public class Global {
     }\r
     public static boolean newNoteWithSelectedTags() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("newNoteWithSelectedTags", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+               try {\r
+                       String text = (String)settings.value("newNoteWithSelectedTags", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("newNoteWithSelectedTags", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setNewNoteWithSelectedTags(boolean val) {\r
                settings.beginGroup("General");\r
@@ -656,12 +699,18 @@ public class Global {
     }\r
     public static boolean verifyDelete() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("verifyDelete", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;           \r
+               try {\r
+                       String text = (String)settings.value("verifyDelete", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("verifyDelete", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setVerifyDelete(boolean val) {\r
                settings.beginGroup("General");\r
@@ -673,12 +722,18 @@ public class Global {
     }\r
     public static boolean startMinimized() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("startMinimized", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;           \r
+               try {\r
+                       String text = (String)settings.value("startMinimized", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("startMinimized", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setStartMinimized(boolean val) {\r
                settings.beginGroup("General");\r
@@ -690,13 +745,19 @@ public class Global {
     }\r
     public static boolean synchronizeDeletedContent() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("syncDeletedContent", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;           \r
-    }\r
+               try {\r
+                       String text = (String)settings.value("syncDeletedContent", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("syncDeletedContent", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
+    }  \r
     public static void setSynchronizeDeletedContent(boolean val) {\r
                settings.beginGroup("General");\r
                if (val)\r
@@ -707,15 +768,24 @@ public class Global {
     }\r
     public static boolean isWindowVisible(String window) {\r
                settings.beginGroup("WindowsVisible");\r
-               String defaultValue = "true";\r
-               if (window.equalsIgnoreCase("noteInformation"))\r
-                       defaultValue = "false";\r
-               String text = (String)settings.value(window, defaultValue);\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
+               try {\r
+                       String defaultValue = "true";\r
+                       if (window.equalsIgnoreCase("noteInformation"))\r
+                               defaultValue = "false";\r
+                       String text = (String)settings.value(window, defaultValue);\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
                else\r
                        return false;           \r
+               } catch (java.lang.ClassCastException e) {\r
+                       boolean defaultValue = true;\r
+                       if (window.equalsIgnoreCase("noteInformation"))\r
+                               defaultValue = false;\r
+                       Boolean value = (Boolean) settings.value("showTrayIcon", defaultValue);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveWindowVisible(String window, boolean val) {\r
                settings.beginGroup("WindowsVisible");\r
@@ -732,22 +802,29 @@ public class Global {
                settings.beginGroup("ColumnsVisible");\r
        else\r
                settings.beginGroup("ColumnsVisible-Narrow"); \r
-//             if (view == Global.View_List_Narrow)\r
-//                     defaultValue = "false";\r
                if (window.equalsIgnoreCase("thumbnail") && view == Global.View_List_Wide)\r
                        defaultValue = "false";\r
                if (window.equalsIgnoreCase("thumbnail"))\r
                        defaultValue = "false";\r
                if (window.equalsIgnoreCase("Guid"))\r
                        defaultValue = "false";\r
-//             if (window.equalsIgnoreCase("thumbnail") && view == Global.View_List_Narrow)\r
-//                     defaultValue = "true";\r
-               String text = (String)settings.value(window, defaultValue);\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value(window, defaultValue);\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       boolean defBool = false;\r
+                       if (window.equalsIgnoreCase("true"))\r
+                               defBool = true;\r
+                       else\r
+                               defBool = false;\r
+                       Boolean value = (Boolean) settings.value(window, defBool);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveColumnVisible(String column, boolean val) {\r
        if (Global.getListView() == Global.View_List_Wide)\r
@@ -762,12 +839,18 @@ public class Global {
     }\r
     public static boolean isEditorButtonVisible(String window) {\r
                settings.beginGroup("EditorButtonsVisible");\r
-               String text = (String)settings.value(window, "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value(window, "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value(window, true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveEditorButtonsVisible(String column, boolean val) {\r
                settings.beginGroup("EditorButtonsVisible");\r
@@ -778,13 +861,19 @@ public class Global {
                settings.endGroup();\r
     }\r
     public static boolean enableCarriageReturnFix() {\r
-               settings.beginGroup("Debug");\r
-               String text = (String)settings.value("enableCarriageReturnFix", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+       try {\r
+               settings.beginGroup("Debug");\r
+               String text = (String)settings.value("enableCarriageReturnFix", "false");\r
+               settings.endGroup();\r
+               if (text.equalsIgnoreCase("true"))\r
+                       return true;\r
+               else\r
+                       return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("enableCarriageReturnFix", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveCarriageReturnFix(boolean val) {\r
                settings.beginGroup("Debug");\r
@@ -861,12 +950,18 @@ public class Global {
     \r
     public static boolean getMimicEvernoteInterface() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("mimicEvernoteInterface", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+               try {\r
+                       String text = (String)settings.value("mimicEvernoteInterface", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("mimicEvernoteInterface", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setMimicEvernoteInterface(boolean value) {\r
        settings.beginGroup("General");\r
@@ -879,12 +974,18 @@ public class Global {
     \r
     public static boolean synchronizeOnClose() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("synchronizeOnClose", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+               try {\r
+                       String text = (String)settings.value("synchronizeOnClose", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("synchronizeOnClose", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setSynchronizeOnClose(boolean val) {\r
                settings.beginGroup("General");\r
@@ -943,12 +1044,18 @@ public class Global {
     }\r
     public static boolean useStandardPalette() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("standardPalette", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;\r
+               try {\r
+                       String text = (String)settings.value("standardPalette", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("standardPalette", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setStandardPalette(boolean val) {\r
                settings.beginGroup("General");\r
@@ -1152,12 +1259,18 @@ public class Global {
 \r
     public static boolean isToolbarButtonVisible(String window) {\r
                settings.beginGroup("ToolbarButtonsVisible");\r
-               String text = (String)settings.value(window, "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value(window, "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;   \r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value(window, true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void saveToolbarButtonsVisible(String column, boolean val) {\r
                settings.beginGroup("ToolbarButtonsVisible");\r
@@ -1171,12 +1284,18 @@ public class Global {
     \r
     public static boolean enableThumbnails() {\r
                settings.beginGroup("Debug");\r
-               String text = (String)settings.value("thumbnails", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value("thumbnails", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("thumbnails", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setEnableThumbnails(boolean val) {\r
                settings.beginGroup("Debug");\r
@@ -1283,12 +1402,19 @@ public class Global {
     //*******************\r
     public static boolean overrideDefaultFont() {\r
                settings.beginGroup("Font");\r
-               String text = (String)settings.value("overrideFont", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value("overrideFont", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;   \r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("overrideFont", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
+\r
     }\r
     public static void setOverrideDefaultFont(boolean value) {\r
                settings.beginGroup("Font");\r
@@ -1324,12 +1450,18 @@ public class Global {
     //*******************\r
     public static boolean minimizeOnClose() {\r
                settings.beginGroup("General");\r
-               String text = (String)settings.value("minimizeOnClose", "false");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value("minimizeOnClose", "false");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("minimizeOnClose", false);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setMinimizeOnClose(boolean value) {\r
                settings.beginGroup("General");\r
@@ -1342,12 +1474,18 @@ public class Global {
     //*******************\r
     public static boolean checkVersionUpgrade() {\r
                settings.beginGroup("Upgrade");\r
-               String text = (String)settings.value("checkForUpdates", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String text = (String)settings.value("checkForUpdates", "true");\r
+                       settings.endGroup();\r
+                       if (text.equalsIgnoreCase("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("checkForUpdates", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setCheckVersionUpgrade(boolean value) {\r
                settings.beginGroup("Upgrade");\r
@@ -1372,12 +1510,18 @@ public class Global {
     //*******************\r
     public static boolean indexAttachmentsLocally() {\r
                settings.beginGroup("Debug");\r
-               String text = (String)settings.value("indexAttachmentsLocally", "true");\r
-               settings.endGroup();\r
-               if (text.equalsIgnoreCase("true"))\r
-                       return true;\r
-               else\r
-                       return false;   \r
+               try {\r
+                       String value = (String)settings.value("indexAttachmentsLocally", "true");\r
+                       settings.endGroup();\r
+                       if (value.equals("true"))\r
+                               return true;\r
+                       else\r
+                               return false;\r
+               } catch (java.lang.ClassCastException e) {\r
+                       Boolean value = (Boolean) settings.value("indexAttachmentsLocally", true);\r
+                       settings.endGroup();\r
+                       return value;\r
+               }\r
     }\r
     public static void setIndexAttachmentsLocally(boolean value) {\r
                settings.beginGroup("Debug");\r
index 18e4314..bc168d4 100644 (file)
@@ -19,8 +19,7 @@
 \r
 package cx.fbn.nevernote.filters;\r
 \r
-import java.util.HashMap;\r
-import java.util.Map;\r
+import java.util.TreeSet;\r
 \r
 import com.trolltech.qt.core.QAbstractItemModel;\r
 import com.trolltech.qt.core.QModelIndex;\r
@@ -33,11 +32,11 @@ import com.trolltech.qt.gui.QSortFilterProxyModel;
 import cx.fbn.nevernote.Global;\r
 \r
 public class NoteSortFilterProxyModel extends QSortFilterProxyModel {\r
-       private final Map<String,String> guids;\r
+       private final TreeSet<String> guids;\r
        \r
        public NoteSortFilterProxyModel(QObject parent) {\r
                super(parent);\r
-               guids = new HashMap<String,String>();\r
+               guids = new TreeSet<String>();\r
                setDynamicSortFilter(true);\r
 //             logger = new ApplicationLogger("filter.log");\r
        }\r
@@ -46,7 +45,7 @@ public class NoteSortFilterProxyModel extends QSortFilterProxyModel {
        }\r
        public void addGuid(String guid) {\r
 //             if (!guids.containsKey(guid))\r
-                       guids.put(guid, null);\r
+                       guids.add(guid);\r
        }\r
        public void filter() {\r
                invalidateFilter();\r
@@ -59,7 +58,7 @@ public class NoteSortFilterProxyModel extends QSortFilterProxyModel {
                QModelIndex guidIndex = sourceModel().index(sourceRow, Global.noteTableGuidPosition);\r
                String guid = (String)model.data(guidIndex);\r
                \r
-               if (guids.containsKey(guid))\r
+               if (guids.contains(guid))\r
                        return true;\r
                else\r
                        return false;\r
index ecba8b6..b2b4e44 100644 (file)
@@ -373,7 +373,8 @@ public class REnSearch {
                                searchPhrases.add(word.toLowerCase());\r
                        }\r
                        if (!searchPhrase && pos < 0) \r
-                               getWords().add("*"+word+"*");\r
+                               getWords().add(word); \r
+//                             getWords().add("*"+word+"*");           //// WILDCARD\r
                        if (word.startsWith("intitle:")) \r
                                intitle.add("*"+word+"*");\r
                        if (word.startsWith("-intitle:")) \r
index fa59a94..a02b61f 100644 (file)
@@ -25,6 +25,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;\r
 import java.io.InputStream;\r
 import java.util.List;\r
+import java.util.TreeSet;\r
 import java.util.concurrent.LinkedBlockingQueue;\r
 \r
 import org.apache.commons.lang.StringEscapeUtils;\r
@@ -79,9 +80,11 @@ public class IndexRunner extends QObject implements Runnable {
        public boolean idle;\r
        public boolean indexAttachmentsLocally = true;\r
        public volatile IndexSignal                     signal;\r
+       private final TreeSet<String>           foundWords;\r
 \r
        \r
        public IndexRunner(String logname, String u, String uid, String pswd, String cpswd) {\r
+               foundWords = new TreeSet<String>();\r
                logger = new ApplicationLogger(logname);\r
                conn = new DatabaseConnection(logger, u, uid, pswd, cpswd);\r
                indexType = SCAN;\r
@@ -152,6 +155,7 @@ public class IndexRunner extends QObject implements Runnable {
        \r
        // Reindex a note\r
        public void indexNoteContent() {\r
+               foundWords.clear();\r
                \r
                logger.log(logger.EXTREME, "Entering indexRunner.indexNoteContent()");\r
                \r
@@ -174,7 +178,7 @@ public class IndexRunner extends QObject implements Runnable {
                logger.log(logger.EXTREME, "Number of words found: " +result.length);\r
                for (int j=0; j<result.length && keepRunning; j++) {\r
                        if (!result[j].trim().equals("")) {\r
-                               logger.log(logger.EXTREME, "Result word: " +result[j]);\r
+                               logger.log(logger.EXTREME, "Result word: " +result[j].trim());\r
                                addToIndex(guid, result[j], "CONTENT");\r
                        }\r
                }\r
@@ -219,7 +223,7 @@ public class IndexRunner extends QObject implements Runnable {
                \r
                if (guid == null)\r
                        return;\r
-               \r
+               foundWords.clear();\r
                Resource r = conn.getNoteTable().noteResourceTable.getNoteResourceRecognition(guid);\r
                if (r == null || r.getRecognition() == null || r.getRecognition().getBody() == null || r.getRecognition().getBody().length == 0) \r
                        resourceBinary = new QByteArray(" ");\r
@@ -523,10 +527,29 @@ public class IndexRunner extends QObject implements Runnable {
 \r
        \r
        private void addToIndex(String guid, String word, String type) {\r
-               if (word.length() > 0) {\r
+               if (!foundWords.contains(word))\r
+                       foundWords.add(word);\r
+               StringBuffer buffer = new StringBuffer(word.toLowerCase());\r
+               for (int i=buffer.length()-1; i>=0; i--) {\r
+                       if (!Character.isLetterOrDigit(buffer.charAt(i)))\r
+                               buffer.deleteCharAt(i);\r
+                       else\r
+                               break;\r
+               }\r
+               buffer = buffer.reverse();\r
+               for (int i=buffer.length()-1; i>=0; i--) {\r
+                       if (!Character.isLetterOrDigit(buffer.charAt(i)))\r
+                               buffer.deleteCharAt(i);\r
+                       else\r
+                               break;\r
+               }\r
+               buffer = buffer.reverse();\r
+               if (buffer.length() > 0) {\r
                        // We have a good word, now let's trim off junk at the beginning or end\r
-                       StringBuffer buffer = new StringBuffer(word.toLowerCase());\r
-                       conn.getWordsTable().addWordToNoteIndex(guid, buffer.toString(), type, 100);\r
+                       if (!foundWords.contains(buffer.toString())) {\r
+                               foundWords.add(buffer.toString());\r
+                               conn.getWordsTable().addWordToNoteIndex(guid, buffer.toString(), type, 100);\r
+                       }\r
                }\r
                return;\r
        }\r
index 57fb0fb..6a6f37f 100644 (file)
@@ -29,8 +29,8 @@ import java.util.ArrayList;
 import java.util.Calendar;\r
 import java.util.Date;\r
 import java.util.GregorianCalendar;\r
-import java.util.HashMap;\r
 import java.util.List;\r
+import java.util.TreeSet;\r
 import java.util.Vector;\r
 import java.util.concurrent.LinkedBlockingQueue;\r
 \r
@@ -138,8 +138,8 @@ public class SyncRunner extends QObject implements Runnable {
                String dburl;\r
                String dbpswd;\r
                String dbcpswd;\r
-               private final HashMap<String,String> ignoreTags;\r
-               private final HashMap<String,String> ignoreNotebooks;\r
+               private final TreeSet<String> ignoreTags;\r
+               private final TreeSet<String> ignoreNotebooks;\r
        \r
                \r
                \r
@@ -170,8 +170,8 @@ public class SyncRunner extends QObject implements Runnable {
                userStore = null;\r
                authToken = null;\r
                disableUploads = false;\r
-               ignoreTags = new HashMap<String,String>();\r
-               ignoreNotebooks = new HashMap<String,String>();\r
+               ignoreTags = new TreeSet<String>();\r
+               ignoreNotebooks = new TreeSet<String>();\r
                \r
 //             setAutoDelete(false);\r
                workQueue=new LinkedBlockingQueue<String>(MAX_QUEUED_WAITING);\r
@@ -266,12 +266,12 @@ public class SyncRunner extends QObject implements Runnable {
                ignoreNotebooks.clear();\r
                List<String> ignore = conn.getSyncTable().getIgnoreRecords("NOTEBOOK");\r
                for (int i=0; i<ignore.size(); i++) \r
-                       ignoreNotebooks.put(ignore.get(i),"");\r
+                       ignoreNotebooks.add(ignore.get(i));\r
                \r
                ignoreTags.clear();\r
                ignore = conn.getSyncTable().getIgnoreRecords("TAG");\r
                for (int i=0; i<ignore.size(); i++) \r
-                       ignoreTags.put(ignore.get(i),"");\r
+                       ignoreTags.add(ignore.get(i));\r
 \r
                // Make sure we are connected & should keep running\r
                if (isConnected && keepRunning) {\r
@@ -1228,10 +1228,10 @@ public class SyncRunner extends QObject implements Runnable {
                                        moveConflictingNote(n.getGuid());\r
                        }\r
                        boolean ignoreNote = false;\r
-                       if (ignoreNotebooks.containsKey(n.getNotebookGuid()))\r
+                       if (ignoreNotebooks.contains(n.getNotebookGuid()))\r
                                ignoreNote = true;\r
                        for (int i=0; i<n.getTagGuidsSize(); i++) {\r
-                               if (ignoreTags.containsKey(n.getTagGuids().get(i))) {\r
+                               if (ignoreTags.contains(n.getTagGuids().get(i))) {\r
                                        ignoreNote = true;\r
                                        i=n.getTagGuidsSize();\r
                                }\r