2 * This file is part of NixNote/NeighborNote
\r
3 * Copyright 2009 Randy Baumgarte
\r
5 * This file may be licensed under the terms of of the
\r
6 * GNU General Public License Version 2 (the ``GPL'').
\r
8 * Software distributed under the License is distributed
\r
9 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
\r
10 * express or implied. See the GPL for the specific language
\r
11 * governing rights and limitations.
\r
13 * You should have received a copy of the GPL along with this
\r
14 * program. If not, go to http://www.gnu.org/licenses/gpl.html
\r
15 * or write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\r
21 package cx.fbn.nevernote.sql;
\r
23 import java.util.ArrayList;
\r
24 import java.util.List;
\r
26 import cx.fbn.nevernote.sql.driver.NSqlQuery;
\r
27 import cx.fbn.nevernote.utilities.ApplicationLogger;
\r
28 import cx.fbn.nevernote.utilities.ListManager;
\r
30 public class WatchFolderTable {
\r
32 private final ApplicationLogger logger;
\r
33 private final DatabaseConnection db;
\r
37 public WatchFolderTable(ApplicationLogger l, DatabaseConnection d) {
\r
42 public void createTable() {
\r
43 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
44 logger.log(logger.HIGH, "Creating table WatchFolder...");
\r
45 if (!query.exec("Create table WatchFolders (folder varchar primary key, notebook varchar," +
\r
46 "keep boolean, depth integer)"));
\r
47 logger.log(logger.HIGH, "Table WatchFolders creation FAILED!!!");
\r
50 public void dropTable() {
\r
51 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
52 query.exec("Drop table WatchFolders");
\r
55 public void addWatchFolder(String folder, String notebook, boolean keep, int depth) {
\r
57 expungeWatchFolder(folder);
\r
58 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
59 query.prepare("Insert Into WatchFolders (folder, notebook, keep, depth) " +
\r
60 "values (:folder, :notebook, :keep, :depth)");
\r
61 query.bindValue(":folder", folder);
\r
62 query.bindValue(":notebook", notebook);
\r
63 query.bindValue(":keep", keep);
\r
64 query.bindValue(":depth", depth);
\r
65 if (!query.exec()) {
\r
66 logger.log(logger.MEDIUM, "Insert into WatchFolder failed.");
\r
70 public boolean exists(String folder) {
\r
71 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
72 query.prepare("Select folder from WatchFolders where folder=:folder ");
\r
73 query.bindValue(":folder", folder);
\r
82 public void expungeWatchFolder(String folder) {
\r
83 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
84 query.prepare("delete from WatchFolders where folder=:folder");
\r
85 query.bindValue(":folder", folder);
\r
86 if (!query.exec()) {
\r
87 logger.log(logger.MEDIUM, "Expunge WatchFolder failed.");
\r
88 logger.log(logger.MEDIUM, query.lastError());
\r
91 public void expungeAll() {
\r
92 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
93 if (!query.exec("delete from WatchFolders")) {
\r
94 logger.log(logger.MEDIUM, "Expunge all WatchFolder failed.");
\r
95 logger.log(logger.MEDIUM, query.lastError());
\r
98 public List<WatchFolderRecord> getAll() {
\r
99 logger.log(logger.HIGH, "Entering RWatchFolders.getAll");
\r
101 List<WatchFolderRecord> list = new ArrayList<WatchFolderRecord>();
\r
102 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
103 query.exec("Select folder, (select name from notebook where guid = notebook), keep, depth from WatchFolders");
\r
104 while (query.next()) {
\r
105 WatchFolderRecord record = new WatchFolderRecord();
\r
106 record.folder = query.valueString(0);
\r
107 record.notebook = query.valueString(1);
\r
108 record.keep = new Boolean(query.valueString(2));
\r
109 record.depth = new Integer(query.valueString(3));
\r
112 logger.log(logger.HIGH, "Leaving RWatchFolders.getAll");
\r
117 public String getNotebook(String dir) {
\r
118 logger.log(logger.HIGH, "Entering RWatchFolders.getNotebook");
\r
119 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
120 query.prepare("Select notebook from WatchFolders where folder=:dir");
\r
121 query.bindValue(":dir", dir);
\r
123 String response = null;
\r
124 while (query.next()) {
\r
125 response = query.valueString(0);
\r
127 logger.log(logger.HIGH, "Leaving RWatchFolders.getNotebook");
\r