155 |
155 |
156 if(bookmarkId != FAILURE) { |
156 if(bookmarkId != FAILURE) { |
157 // do some checking on parameters |
157 // do some checking on parameters |
158 QString updatedTitle = title; |
158 QString updatedTitle = title; |
159 QString updatedUrl = normalizeUrl(URL); |
159 QString updatedUrl = normalizeUrl(URL); |
|
160 int soIndex = 1; |
160 if (title.isEmpty()) { |
161 if (title.isEmpty()) { |
161 updatedTitle = "Untitled"; |
162 updatedTitle = "Untitled"; |
162 } |
163 } |
163 if (m_db.isOpen()) { |
164 if (m_db.isOpen()) { |
164 QSqlQuery query(m_db); |
165 QSqlQuery query(m_db); |
165 query.prepare("INSERT INTO bookmarks (title, url, sortIndex)" |
166 m_db.transaction(); |
166 "select :title, :url, ifnull(max(sortIndex)+1,1) from bookmarks"); |
167 if (!query.exec("SELECT count(*) from bookmarks")) { |
|
168 lastErrMsg(query); |
|
169 m_db.rollback(); |
|
170 return DATABASEERROR; |
|
171 } |
|
172 if(query.next()) { |
|
173 query.prepare("UPDATE bookmarks SET sortIndex=sortIndex+1 WHERE sortIndex >= :sIndex"); |
|
174 query.bindValue(":sIndex", soIndex); |
|
175 if (!query.exec()) { |
|
176 lastErrMsg(query); |
|
177 m_db.rollback(); |
|
178 return DATABASEERROR; |
|
179 } |
|
180 } |
|
181 query.prepare("INSERT INTO bookmarks (title, url, sortIndex) " |
|
182 "VALUES (:title, :url, :sIndex)"); |
167 query.bindValue(":title", QVariant(updatedTitle)); |
183 query.bindValue(":title", QVariant(updatedTitle)); |
168 query.bindValue(":url", QVariant(updatedUrl)); |
184 query.bindValue(":url", QVariant(updatedUrl)); |
|
185 query.bindValue(":sIndex", QVariant(soIndex)); |
169 if (!query.exec()) { |
186 if (!query.exec()) { |
170 lastErrMsg(query); |
187 lastErrMsg(query); |
|
188 m_db.rollback(); |
171 return DATABASEERROR; |
189 return DATABASEERROR; |
172 } |
190 } |
173 // Note: lastInsertId() is not thread-safe |
191 // Note: lastInsertId() is not thread-safe |
174 bookmarkId = query.lastInsertId().toInt(); |
192 bookmarkId = query.lastInsertId().toInt(); |
|
193 if (!m_db.commit()) { |
|
194 qDebug() << m_db.lastError().text(); |
|
195 m_db.rollback(); |
|
196 return DATABASEERROR; |
|
197 } |
175 } else { |
198 } else { |
176 bookmarkId = FAILURE; |
199 bookmarkId = FAILURE; |
177 } |
200 } |
178 } |
201 } |
179 return bookmarkId; |
202 return bookmarkId; |
180 } |
203 } |
181 |
204 |
182 /**============================================================== |
205 /**============================================================== |
183 * Import bookmarks from an XBEL file. If no filename is |
206 * Import bookmarks from an XBEL file. If no filename is |
651 } |
674 } |
652 return results; |
675 return results; |
653 } |
676 } |
654 |
677 |
655 /**============================================================== |
678 /**============================================================== |
|
679 * Description: Finds a bookmark based on a given bookmarkID. |
|
680 * Returns: A pointer to BookmarkFav object or NULL. |
|
681 ===============================================================*/ |
|
682 QMap<QString, QString> BookmarksManager::findBookmarks(QString atitle) |
|
683 { |
|
684 QMap<QString, QString> map; |
|
685 |
|
686 if (m_db.isOpen()) { |
|
687 QSqlQuery query(m_db); |
|
688 QString queryStatement = "SELECT url, title FROM bookmarks WHERE title LIKE '%"+atitle+"%' OR url LIKE '%" + atitle + "%'"; |
|
689 query.prepare(queryStatement); |
|
690 if(query.exec()) { |
|
691 while (query.next()){ |
|
692 QString bookmarkUrl = query.value(0).toString(); |
|
693 QString bookmarkTitle = query.value(1).toString(); |
|
694 map.insert( bookmarkUrl, bookmarkTitle ); |
|
695 } |
|
696 } else { |
|
697 lastErrMsg(query); |
|
698 } |
|
699 } |
|
700 return map; |
|
701 } |
|
702 |
|
703 /**============================================================== |
656 * Description: Prints a last error message from the query. |
704 * Description: Prints a last error message from the query. |
657 * Returns: Nothing. |
705 * Returns: Nothing. |
658 ===============================================================*/ |
706 ===============================================================*/ |
659 void BookmarksManager::lastErrMsg(QSqlQuery& query) |
707 void BookmarksManager::lastErrMsg(QSqlQuery& query) |
660 { |
708 { |