2 * This file is part of NeverNote
\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
22 import java.util.List;
\r
24 import com.evernote.edam.type.Resource;
\r
26 import cx.fbn.nevernote.Global;
\r
27 import cx.fbn.nevernote.sql.requests.ResourceRequest;
\r
30 public class NoteResourceTable {
\r
31 private final int id;
\r
34 public NoteResourceTable(int i) {
\r
38 public void createTable() {
\r
39 ResourceRequest request = new ResourceRequest();
\r
40 request.requestor_id = id;
\r
41 request.type = ResourceRequest.Create_Table;
\r
42 Global.dbRunner.addWork(request);
\r
45 public void dropTable() {
\r
46 ResourceRequest request = new ResourceRequest();
\r
47 request.requestor_id = id;
\r
48 request.type = ResourceRequest.Drop_Table;
\r
49 Global.dbRunner.addWork(request);
\r
51 // Reset the dirty flag
\r
52 public void resetDirtyFlag(String guid) {
\r
53 ResourceRequest request = new ResourceRequest();
\r
54 request.requestor_id = id;
\r
55 request.type = ResourceRequest.Reset_Dirty_Flag;
\r
56 request.string1 = new String(guid);
\r
57 Global.dbRunner.addWork(request);
\r
59 // Set if the resource should be indexed
\r
60 public void setIndexNeeded(String guid, Boolean indexNeeded) {
\r
61 ResourceRequest request = new ResourceRequest();
\r
62 request.requestor_id = id;
\r
63 request.type = ResourceRequest.Set_Index_Needed;
\r
64 request.string1 = new String(guid);
\r
65 request.bool1 = indexNeeded;
\r
66 Global.dbRunner.addWork(request);
\r
68 // get any unindexed resource
\r
69 public List<String> getNextUnindexed(int limit) {
\r
70 ResourceRequest request = new ResourceRequest();
\r
71 request.requestor_id = id;
\r
72 request.type = ResourceRequest.Get_Next_Unindexed;
\r
73 request.int1 = limit;
\r
74 Global.dbRunner.addWork(request);
\r
75 Global.dbClientWait(id);
\r
76 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
77 return req.responseStrings;
\r
79 public void saveNoteResource(Resource r, boolean isDirty) {
\r
80 ResourceRequest request = new ResourceRequest();
\r
81 request.requestor_id = id;
\r
82 request.type = ResourceRequest.Save_Note_Resource;
\r
83 request.resource = r.deepCopy();
\r
84 request.bool1 = isDirty;
\r
85 Global.dbRunner.addWork(request);
\r
86 // Global.dbClientWait(id);
\r
88 // delete an old resource
\r
89 public void expungeNoteResource(String guid) {
\r
90 ResourceRequest request = new ResourceRequest();
\r
91 request.requestor_id = id;
\r
92 request.type = ResourceRequest.Expunge_Note_Resource;
\r
93 request.string1 = new String(guid);
\r
94 Global.dbRunner.addWork(request);
\r
97 // Get a note resource from the database by it's hash value
\r
98 public String getNoteResourceGuidByHashHex(String noteGuid, String hash) {
\r
99 ResourceRequest request = new ResourceRequest();
\r
100 request.requestor_id = id;
\r
101 request.type = ResourceRequest.Get_Note_Resource_Guid_By_Hash_Hex;
\r
102 request.string1 = new String(noteGuid);
\r
103 request.string2 = new String(hash);
\r
104 Global.dbRunner.addWork(request);
\r
105 Global.dbClientWait(id);
\r
106 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
107 return req.responseString;
\r
109 // Get a note resource from the database by it's hash value
\r
110 public Resource getNoteResourceDataBodyByHashHex(String noteGuid, String hash) {
\r
111 ResourceRequest request = new ResourceRequest();
\r
112 request.requestor_id = id;
\r
113 request.type = ResourceRequest.Get_Note_Resource_Data_Body_By_Hash_Hex;
\r
114 request.string1 = new String(noteGuid);
\r
115 request.string2 = new String(hash);
\r
116 Global.dbRunner.addWork(request);
\r
117 Global.dbClientWait(id);
\r
118 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
119 return req.responseResource;
\r
122 // Update a note resource guid
\r
123 public void updateNoteResourceGuid(String oldGuid, String newGuid, boolean isDirty) {
\r
124 ResourceRequest request = new ResourceRequest();
\r
125 request.requestor_id = id;
\r
126 request.type = ResourceRequest.Update_Note_Resource_Guid;
\r
127 request.string1 = new String(oldGuid);
\r
128 request.string2 = new String(newGuid);
\r
129 request.bool1 = isDirty;
\r
130 Global.dbRunner.addWork(request);
\r
131 // Global.dbClientWait(id);
\r
135 // Reset update sequence number to zero
\r
136 public void resetUpdateSequenceNumber(String guid, boolean isDirty) {
\r
137 ResourceRequest request = new ResourceRequest();
\r
138 request.requestor_id = id;
\r
139 request.type = ResourceRequest.Reset_Update_Sequence_Number;
\r
140 request.string1 = new String(guid);
\r
141 request.bool1 = isDirty;
\r
142 Global.dbRunner.addWork(request);
\r
145 // Get a note's resourcesby Guid
\r
146 public Resource getNoteResource(String guid, boolean withBinary) {
\r
149 ResourceRequest request = new ResourceRequest();
\r
150 request.requestor_id = id;
\r
151 request.type = ResourceRequest.Get_Note_Resource;
\r
152 request.string1 = new String(guid);
\r
153 request.bool1 = withBinary;
\r
154 Global.dbRunner.addWork(request);
\r
155 Global.dbClientWait(id);
\r
156 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
157 return req.responseResource;
\r
161 // Get a note's resourcesby Guid
\r
162 public List<Resource> getNoteResources(String noteGuid, boolean withBinary) {
\r
163 ResourceRequest request = new ResourceRequest();
\r
164 request.requestor_id = id;
\r
165 request.type = ResourceRequest.Get_Note_Resources;
\r
166 request.string1 = new String(noteGuid);
\r
167 request.bool1 = withBinary;
\r
168 Global.dbRunner.addWork(request);
\r
169 Global.dbClientWait(id);
\r
170 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
171 return req.responseResources;
\r
175 // Get all of a note's recognition data by the note guid
\r
176 public List<Resource> getNoteResourcesRecognition(String noteGuid) {
\r
177 ResourceRequest request = new ResourceRequest();
\r
178 request.requestor_id = id;
\r
179 request.type = ResourceRequest.Get_Note_Resources_Recognition;
\r
180 request.string1 = new String(noteGuid);
\r
181 Global.dbRunner.addWork(request);
\r
182 Global.dbClientWait(id);
\r
183 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
184 return req.responseResources;
\r
187 // Get a note's recognition data by it's guid.
\r
188 public Resource getNoteResourceRecognition(String guid) {
\r
189 ResourceRequest request = new ResourceRequest();
\r
190 request.requestor_id = id;
\r
191 request.type = ResourceRequest.Get_Note_Resource_Recognition;
\r
192 request.string1 = new String(guid);
\r
193 Global.dbRunner.addWork(request);
\r
194 Global.dbClientWait(id);
\r
195 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
196 return req.responseResource;
\r
198 // Save Note Resource
\r
199 public void updateNoteResource(Resource r, boolean isDirty) {
\r
200 ResourceRequest request = new ResourceRequest();
\r
201 request.requestor_id = id;
\r
202 request.type = ResourceRequest.Update_Note_Resource;
\r
203 request.resource = r.deepCopy();
\r
204 request.bool1 = isDirty;
\r
205 Global.dbRunner.addWork(request);
\r
209 public void reindexAll() {
\r
210 ResourceRequest request = new ResourceRequest();
\r
211 request.requestor_id = id;
\r
212 request.type = ResourceRequest.Reindex_All;
\r
213 Global.dbRunner.addWork(request);
\r
215 // Count unindexed notes
\r
216 public int getResourceCount() {
\r
217 ResourceRequest request = new ResourceRequest();
\r
218 request.requestor_id = id;
\r
219 request.type = ResourceRequest.Get_Resource_Count;
\r
220 Global.dbRunner.addWork(request);
\r
221 Global.dbClientWait(id);
\r
222 ResourceRequest req = Global.dbRunner.resourceResponse.get(id).copy();
\r
223 return req.responseInteger;
\r