/*\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
\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
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
\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