|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include<QString> |
|
20 #include<browsercontentdll.h> |
|
21 #include<QSqlDatabase> |
|
22 #include<QSqlQuery> |
|
23 #include<QSqlError> |
|
24 #include<QDebug> |
|
25 const QString dbLocation="browserContent.db"; |
|
26 |
|
27 class BrowserContentPrivate |
|
28 { |
|
29 BOOKMARKSCLIENT_PUBLIC(BrowserContent) |
|
30 public: |
|
31 ~BrowserContentPrivate(); |
|
32 QString m_connectionName; |
|
33 }; |
|
34 |
|
35 /**============================================================== |
|
36 * Description: Constructor of BrowserContentPrivate |
|
37 ================================================================*/ |
|
38 BrowserContentPrivate::~BrowserContentPrivate() |
|
39 { |
|
40 |
|
41 } |
|
42 |
|
43 /**============================================================== |
|
44 * Description: Constructor of BrowserContent |
|
45 ================================================================*/ |
|
46 BrowserContent::BrowserContent(QString aClientName) |
|
47 { |
|
48 BOOKMARKSCLIENT_INITIALIZE(BrowserContent); |
|
49 |
|
50 priv->m_connectionName=aClientName; |
|
51 createDatabase(); |
|
52 } |
|
53 |
|
54 /**============================================================== |
|
55 * Description: creates the database |
|
56 ================================================================*/ |
|
57 int BrowserContent::createDatabase() |
|
58 { |
|
59 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
60 |
|
61 QSqlDatabase sqlDB = QSqlDatabase::addDatabase("QSQLITE", priv->m_connectionName); |
|
62 sqlDB.setHostName("Simulator"); |
|
63 sqlDB.setDatabaseName(dbLocation); |
|
64 |
|
65 |
|
66 if (!sqlDB.open()) |
|
67 return -1; |
|
68 QSqlError error; |
|
69 int err = ErrGeneral; |
|
70 |
|
71 QFileInfo dbFile(dbLocation); |
|
72 if (dbFile.exists() && dbFile.size() == 0) |
|
73 { |
|
74 QSqlQuery query(sqlDB); |
|
75 query.exec( |
|
76 "CREATE TABLE BookMarkTable (title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),tags VARCHAR(40),rowindex INTEGER,CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))"); |
|
77 error=query.lastError(); |
|
78 |
|
79 if (error.type() == QSqlError::NoError) { |
|
80 query.exec("CREATE TABLE HistoryTable (rowindex INTEGER PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))"); |
|
81 error=query.lastError(); |
|
82 } |
|
83 } |
|
84 |
|
85 if (error.type() == QSqlError::NoError) { |
|
86 return ErrNone; |
|
87 } |
|
88 else { |
|
89 return ErrGeneral; |
|
90 } |
|
91 |
|
92 } |
|
93 |
|
94 |
|
95 /**============================================================== |
|
96 * Description: Destrcutor of the BookmarksClientSide |
|
97 ================================================================*/ |
|
98 BrowserContent::~BrowserContent() |
|
99 { |
|
100 } |
|
101 |
|
102 /**============================================================== |
|
103 * Description: adds the bookmark to the database |
|
104 ================================================================*/ |
|
105 int BrowserContent::AddBookmark( |
|
106 BookmarkLeaf* BookmarkContent) |
|
107 { |
|
108 |
|
109 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
110 QSqlError error; |
|
111 QString title =BookmarkContent->getTitle(); |
|
112 QString url = BookmarkContent->getUrl(); |
|
113 QString adate =BookmarkContent->getDate().toString("dd.MM.yyyy"); |
|
114 QString tags = BookmarkContent->getTag(); |
|
115 int aIndex=BookmarkContent->getIndex(); |
|
116 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
117 |
|
118 if (db.isOpen()) |
|
119 { |
|
120 QSqlQuery query(db); |
|
121 query.prepare("UPDATE BookMarkTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex"); |
|
122 query.bindValue(":aIndex", aIndex); |
|
123 query.exec(); |
|
124 error = query.lastError(); |
|
125 |
|
126 query.prepare("INSERT INTO BookMarkTable (title, url, adate, tags, rowindex) " |
|
127 "VALUES (:title, :url, :adate, :tags, :aIndex)"); |
|
128 |
|
129 query.bindValue(":title", QVariant(title)); |
|
130 query.bindValue(":url", QVariant(url)); |
|
131 query.bindValue(":adate", QVariant(adate)); |
|
132 query.bindValue(":tags", QVariant(tags)); |
|
133 query.bindValue(":rowindex", QVariant(aIndex)); |
|
134 |
|
135 query.exec(); |
|
136 error = query.lastError(); |
|
137 } |
|
138 |
|
139 if (error.type() == QSqlError::NoError) |
|
140 { |
|
141 return ErrNone; |
|
142 } |
|
143 else |
|
144 { |
|
145 return ErrGeneral; |
|
146 } |
|
147 } |
|
148 |
|
149 |
|
150 /**============================================================== |
|
151 * Description: deletes the requested bookmark |
|
152 ================================================================*/ |
|
153 int BrowserContent::DeleteBookmark( |
|
154 QString atitle) |
|
155 { |
|
156 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
157 QSqlError error; |
|
158 QString title = atitle; |
|
159 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
160 bool ok; |
|
161 if (db.isOpen()) |
|
162 { |
|
163 QSqlQuery query(db); |
|
164 query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title"); |
|
165 query.bindValue(":title", title); |
|
166 query.exec(); |
|
167 error = query.lastError(); |
|
168 query.next(); |
|
169 int aIndex=query.value(4).toInt(&ok); |
|
170 |
|
171 query.prepare("DELETE FROM BookMarkTable WHERE title=:title"); |
|
172 query.bindValue(":title", title); |
|
173 query.exec(); |
|
174 error = query.lastError(); |
|
175 if (error.type() == QSqlError::NoError) |
|
176 { |
|
177 query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex>:aIndex"); |
|
178 query.bindValue(":aIndex", aIndex); |
|
179 query.exec(); |
|
180 error = query.lastError(); |
|
181 } |
|
182 } |
|
183 if (error.type() == QSqlError::NoError) |
|
184 { |
|
185 return ErrNone; |
|
186 } |
|
187 else |
|
188 { |
|
189 return ErrGeneral; |
|
190 } |
|
191 |
|
192 } |
|
193 |
|
194 |
|
195 /**============================================================== |
|
196 * Description: fetches Allbookmarks From database |
|
197 ================================================================*/ |
|
198 QList<BookmarkLeaf*> BrowserContent::FetchAllBookmarks() |
|
199 { |
|
200 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
201 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
202 QList<BookmarkLeaf*> nodeslist; |
|
203 |
|
204 bool dbopen = db.isOpen(); |
|
205 bool ok; |
|
206 |
|
207 if (dbopen) |
|
208 { |
|
209 |
|
210 QSqlQuery query(db); |
|
211 |
|
212 query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable ORDER BY rowindex"); |
|
213 query.exec(); |
|
214 QSqlError error = query.lastError(); |
|
215 |
|
216 while (query.next()) |
|
217 { |
|
218 |
|
219 QString title = query.value(0).toString(); |
|
220 QString url = query.value(1).toString(); |
|
221 QString date = query.value(2).toString(); |
|
222 QString tag = query.value(3).toString(); |
|
223 int aIndex=query.value(4).toInt(&ok); |
|
224 BookmarkLeaf* node = new BookmarkLeaf(); |
|
225 QDate adate = QDate::fromString(date, "dd.MM.yyyy"); |
|
226 node->setTitle(title); |
|
227 node->setUrl(url); |
|
228 node->setDate(adate); |
|
229 node->setTag(tag); |
|
230 node->setIndex(aIndex); |
|
231 nodeslist.append(node); |
|
232 } |
|
233 } |
|
234 return nodeslist; |
|
235 |
|
236 } |
|
237 |
|
238 /**============================================================== |
|
239 * Description: Reoders the Bokmarks based on index |
|
240 ================================================================*/ |
|
241 int BrowserContent::reorderBokmarks(QString title,int new_index) |
|
242 { |
|
243 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
244 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
245 QSqlQuery query(db); |
|
246 QSqlError error; |
|
247 bool ok; |
|
248 query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title"); |
|
249 query.bindValue(":title", title); |
|
250 query.exec(); |
|
251 error = query.lastError(); |
|
252 query.next(); |
|
253 int old_index=query.value(4).toInt(&ok); |
|
254 |
|
255 if(old_index>new_index) |
|
256 { |
|
257 //Moving the item UP |
|
258 query.prepare("UPDATE BookMarkTable set rowindex=rowindex+1 WHERE rowindex BETWEEN :new_index AND :old_index-1"); |
|
259 } |
|
260 else if(old_index<new_index) |
|
261 { |
|
262 //Moving items Down |
|
263 query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex BETWEEN :old_index+1 AND :new_index"); |
|
264 } |
|
265 query.bindValue(":old_index", old_index); |
|
266 query.bindValue(":new_index", new_index); |
|
267 //Moving items Down |
|
268 query.exec(); |
|
269 error= query.lastError(); |
|
270 |
|
271 if (error.type() == QSqlError::NoError) |
|
272 { |
|
273 query.prepare("UPDATE BookMarkTable set rowindex=:new_index WHERE title=:title"); |
|
274 query.bindValue(":title", title); |
|
275 query.bindValue(":new_index", new_index); |
|
276 query.exec(); |
|
277 error = query.lastError(); |
|
278 } |
|
279 |
|
280 if (error.type() == QSqlError::NoError) |
|
281 { |
|
282 return ErrNone; |
|
283 } |
|
284 else |
|
285 { |
|
286 return ErrGeneral; |
|
287 } |
|
288 } |
|
289 |
|
290 |
|
291 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
292 |
|
293 /**============================================================== |
|
294 * Description: adds the bookmark to the database |
|
295 ================================================================*/ |
|
296 int BrowserContent::AddHistory( |
|
297 HistoryLeaf* HistoryContent) |
|
298 { |
|
299 |
|
300 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
301 QSqlError error; |
|
302 QString title =HistoryContent->getTitle(); |
|
303 QString url = HistoryContent->getUrl(); |
|
304 QString adate =HistoryContent->getDate().toString("dd.MM.yyyy"); |
|
305 QString atime = HistoryContent->getLastVisited().toString("h:mm ap"); |
|
306 // int aIndex=HistoryContent->getIndex(); |
|
307 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
308 |
|
309 if (db.isOpen()) |
|
310 { |
|
311 QSqlQuery query(db); |
|
312 // query.prepare("UPDATE HistoryTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex"); |
|
313 //query.bindValue(":aIndex", aIndex); |
|
314 //query.exec(); |
|
315 //error = query.lastError(); |
|
316 |
|
317 //"CREATE TABLE HistoryTable (rowindex INTEGER PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))"); |
|
318 |
|
319 query.prepare("INSERT INTO HistoryTable (rowindex,title, url, adate, atime) " |
|
320 "VALUES (NULL,:title, :url, :adate, :atime)"); |
|
321 |
|
322 //query.bindValue(":rowindex", QVariant(aIndex)); |
|
323 query.bindValue(":title", QVariant(title)); |
|
324 query.bindValue(":url", QVariant(url)); |
|
325 query.bindValue(":adate", QVariant(adate)); |
|
326 query.bindValue(":atime", QVariant(atime)); |
|
327 query.exec(); |
|
328 error = query.lastError(); |
|
329 } |
|
330 |
|
331 if (error.type() == QSqlError::NoError) |
|
332 { |
|
333 return ErrNone; |
|
334 } |
|
335 else |
|
336 { |
|
337 return ErrGeneral; |
|
338 } |
|
339 } |
|
340 |
|
341 |
|
342 /**============================================================== |
|
343 * Description: fetches History From database |
|
344 ================================================================*/ |
|
345 QList<HistoryLeaf*> BrowserContent::FetchHistory() |
|
346 { |
|
347 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
348 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
349 QList<HistoryLeaf*> nodeslist; |
|
350 |
|
351 bool dbopen = db.isOpen(); |
|
352 bool ok; |
|
353 |
|
354 if (dbopen) |
|
355 { |
|
356 |
|
357 QSqlQuery query(db); |
|
358 |
|
359 query.prepare("SELECT title,url,adate,atime,rowindex FROM HistoryTable ORDER BY rowindex"); |
|
360 query.exec(); |
|
361 QSqlError error = query.lastError(); |
|
362 |
|
363 while (query.next()) |
|
364 { |
|
365 |
|
366 QString title = query.value(0).toString(); |
|
367 QString url = query.value(1).toString(); |
|
368 QString date = query.value(2).toString(); |
|
369 QString time = query.value(3).toString(); |
|
370 int aIndex=query.value(4).toInt(&ok); |
|
371 HistoryLeaf* node = new HistoryLeaf(); |
|
372 QDate adate = QDate::fromString(date, "dd.MM.yyyy"); |
|
373 QTime atime = QTime::fromString(time, "h:mm ap"); |
|
374 node->setTitle(title); |
|
375 node->setUrl(url); |
|
376 node->setDate(adate); |
|
377 node->setLastVisited(atime); |
|
378 // node->setTag(tag); |
|
379 node->setIndex(aIndex); |
|
380 nodeslist.append(node); |
|
381 } |
|
382 } |
|
383 return nodeslist; |
|
384 |
|
385 } |
|
386 |
|
387 /**============================================================== |
|
388 * Description: Clear all rows From History database |
|
389 ================================================================*/ |
|
390 int BrowserContent::clearHistory() |
|
391 { |
|
392 BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); |
|
393 QSqlError error; |
|
394 |
|
395 QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); |
|
396 bool ok; |
|
397 if (db.isOpen()){ |
|
398 QSqlQuery query(db); |
|
399 query.prepare("DELETE FROM HistoryTable" ); |
|
400 |
|
401 query.exec(); |
|
402 error = query.lastError(); |
|
403 |
|
404 if (error.type() == QSqlError::NoError) { |
|
405 return ErrNone; |
|
406 } |
|
407 else{ |
|
408 return ErrGeneral; |
|
409 } |
|
410 } |
|
411 } |