OSDN Git Service

Cleanup compiler warning messages and alter backup & restore to handle new database...
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / ContainsAttributeFilterTable.java
index ade50e2..24a3377 100644 (file)
@@ -1,6 +1,7 @@
 /*\r
  * This file is part of NeverNote \r
- * Copyright 2009 Randy Baumgarte\r
+ * Copyright 2009,2010 Randy Baumgarte\r
+ * Copyright 2010 Hiroshi Miura \r
  * \r
  * This file may be licensed under the terms of of the\r
  * GNU General Public License Version 2 (the ``GPL'').\r
@@ -23,28 +24,17 @@ import java.util.ArrayList;
 \r
 import com.evernote.edam.type.Note;\r
 \r
-import cx.fbn.nevernote.filters.AttributeFilter;\r
+import cx.fbn.nevernote.filters.ContainsAttributeFilter;\r
+import cx.fbn.nevernote.filters.ContainsAttributeFilterFactory;\r
 import cx.fbn.nevernote.sql.NoteTable;\r
 \r
 public class ContainsAttributeFilterTable {\r
-       ArrayList<AttributeFilter> table;\r
+       ArrayList<ContainsAttributeFilter> table;\r
        \r
-       public ContainsAttributeFilterTable() {\r
-               table = new ArrayList<AttributeFilter>();\r
-               table.add(new AttributeFilter("Images"));\r
-               table.add(new AttributeFilter("Audio"));\r
-               table.add(new AttributeFilter("Ink"));\r
-               table.add(new AttributeFilter("Encrypted Text"));\r
-               table.add(new AttributeFilter("To-Do Items"));\r
-               table.add(new AttributeFilter("Unfinished to-do items"));\r
-               table.add(new AttributeFilter("Finished to-do items"));\r
-               table.add(new AttributeFilter("Attachment"));\r
-               table.add(new AttributeFilter("PDF"));\r
-\r
-\r
-\r
-\r
-               \r
+    public ContainsAttributeFilterTable() {\r
+        table = new ArrayList<ContainsAttributeFilter>();\r
+        for (ContainsAttributeFilterFactory.Contains type: ContainsAttributeFilterFactory.Contains.values()) \r
+               table.add(ContainsAttributeFilterFactory.create(type));\r
        }\r
        \r
        public void reset() {\r
@@ -52,10 +42,8 @@ public class ContainsAttributeFilterTable {
                        table.get(i).set(false);\r
        }\r
        \r
-       public void select(String name) {\r
-               for (int i=0; i<table.size(); i++) \r
-                       if (table.get(i).getName().equalsIgnoreCase(name))\r
-                               table.get(i).set(true);\r
+       public void select(int i) {\r
+               table.get(i).set(true);\r
        }\r
        \r
        public int size() {\r
@@ -64,85 +52,25 @@ public class ContainsAttributeFilterTable {
        \r
        public boolean hasSelection() {\r
                for (int i=0; i<table.size(); i++) {\r
-                       if (table.get(i).isSet() == true)\r
+                       if (table.get(i).isSet())\r
                                return true;\r
                }\r
                return false;\r
        }\r
        \r
        public boolean check(NoteTable sqlTable, Note n) {\r
-               boolean result = true;\r
-               \r
                for (int i=0; i<table.size(); i++) {\r
                        if (table.get(i).isSet()) {\r
                                n = sqlTable.getNote(n.getGuid(), true, true, false, false, false);\r
-                               if (table.get(i).getName().equalsIgnoreCase("images"))\r
-                                       result = checkMime(n, "image/");\r
-                               if (table.get(i).getName().equalsIgnoreCase("audio"))\r
-                                       result = checkMime(n, "audio/");\r
-                               if (table.get(i).getName().equalsIgnoreCase("ink"))\r
-                                       result = checkMime(n, "application/vnd.evernote.ink");\r
-                               if (table.get(i).getName().equalsIgnoreCase("Attachment"))\r
-                                       result = checkAttachment(n);\r
-                               if (table.get(i).getName().equalsIgnoreCase("pdf"))\r
-                                       result = checkMime(n, "application/pdf");\r
-                               if (table.get(i).getName().equalsIgnoreCase("Encrypted Text"))\r
-                                       result = checkText(n.getContent(), "<en-crypt");\r
-                               if (table.get(i).getName().equalsIgnoreCase("To-Do Items"))\r
-                                       result = checkText(n.getContent(), "<en-todo");\r
-                               if (table.get(i).getName().equalsIgnoreCase("Unfinished to-do items"))\r
-                                       result = checkTodo(n.getContent(), false);\r
-                               if (table.get(i).getName().equalsIgnoreCase("Finished to-do items"))\r
-                                       result = checkTodo(n.getContent(), true);\r
-\r
-\r
+                               if (!table.get(i).attributeCheck(n)) \r
+                                       return false;\r
                        }\r
                }\r
-               return result;\r
+               return true;\r
        }\r
        \r
-       private boolean checkMime(Note n, String mime) {\r
-               for (int i=0; i<n.getResourcesSize(); i++) {\r
-                       if (n.getResources().get(i).getMime().startsWith(mime))\r
-                               return true;\r
-               }\r
-               return false;\r
-       }\r
-\r
-       private boolean checkAttachment(Note n) {\r
-               for (int i=0; i<n.getResourcesSize(); i++) {\r
-                       if (n.getResources().get(i).getAttributes() != null && n.getResources().get(i).getAttributes().isAttachment())\r
-                               return true;\r
-               }\r
-               return false;\r
-       }\r
-       \r
-       private boolean checkTodo(String content, boolean checked) {\r
-               int pos = content.indexOf("<en-todo");\r
-               \r
-               for (; pos >=0 ; pos=content.indexOf("<en-todo", pos+1)) {\r
-                       int endPos = content.indexOf("/>", pos);\r
-                       String segment = content.substring(pos, endPos);\r
-                       boolean currentState = false;\r
-                       if (segment.indexOf("checked=\"true\"") > -1)\r
-                                       currentState = true;\r
-                       if (currentState == checked)\r
-                               return true;\r
-               }\r
-               \r
-                       \r
-               return false;\r
-               \r
-       }\r
-       \r
-       private boolean checkText(String content, String text) {\r
-               if (content.indexOf(text) > -1)\r
-                       return true;\r
-               else\r
-                       return false;\r
-       }\r
-       // Get the name of a particular attribute check\r
-       public String getName(int i) {\r
-               return table.get(i).getName();\r
+       // Get the label of a particular attribute check\r
+       public String getLabel(int i) {\r
+               return table.get(i).getLabel();\r
        }\r
 }\r