|
1 | 1 | package org.wordpress.android.datasets; |
2 | 2 |
|
3 | | -import android.content.ContentValues; |
4 | 3 | import android.database.Cursor; |
5 | 4 | import android.database.SQLException; |
6 | 5 | import android.database.sqlite.SQLiteDatabase; |
@@ -237,82 +236,66 @@ public static void deleteTag(ReaderTag tag) { |
237 | 236 | ReaderDatabase.getWritableDb().delete("tbl_tag_updates", "tag_name=? AND tag_type=?", args); |
238 | 237 | } |
239 | 238 |
|
| 239 | + |
240 | 240 | /** |
241 | 241 | * tbl_tag_updates routines |
242 | 242 | **/ |
243 | 243 | public static String getTagNewestDate(ReaderTag tag) { |
244 | | - if (tag == null) { |
245 | | - return ""; |
246 | | - } |
247 | | - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; |
248 | | - return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), |
249 | | - "SELECT date_newest FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?", |
250 | | - args); |
| 244 | + return getDateColumn(tag, "date_newest"); |
251 | 245 | } |
252 | 246 | public static void setTagNewestDate(ReaderTag tag, String date) { |
253 | | - if (tag == null) { |
254 | | - return; |
255 | | - } |
256 | | - |
257 | | - ContentValues values = new ContentValues(); |
258 | | - values.put("tag_name", tag.getTagName()); |
259 | | - values.put("tag_type", tag.tagType.toInt()); |
260 | | - values.put("date_newest", date); |
261 | | - try { |
262 | | - ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE); |
263 | | - } catch (SQLException e) { |
264 | | - AppLog.e(T.READER, e); |
265 | | - } |
| 247 | + setDateColumn(tag, "date_newest", date); |
266 | 248 | } |
267 | 249 |
|
268 | 250 | public static String getTagOldestDate(ReaderTag tag) { |
269 | | - if (tag == null) { |
270 | | - return ""; |
271 | | - } |
272 | | - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; |
273 | | - return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), |
274 | | - "SELECT date_oldest FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?", |
275 | | - args); |
| 251 | + return getDateColumn(tag, "date_oldest"); |
276 | 252 | } |
277 | 253 | public static void setTagOldestDate(ReaderTag tag, String date) { |
278 | | - if (tag == null) { |
279 | | - return; |
280 | | - } |
281 | | - |
282 | | - ContentValues values = new ContentValues(); |
283 | | - values.put("tag_name", tag.getTagName()); |
284 | | - values.put("tag_type", tag.tagType.toInt()); |
285 | | - values.put("date_oldest", date); |
286 | | - try { |
287 | | - ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE); |
288 | | - } catch (SQLException e) { |
289 | | - AppLog.e(T.READER, e); |
290 | | - } |
| 254 | + setDateColumn(tag, "date_oldest", date); |
291 | 255 | } |
292 | 256 |
|
293 | 257 | private static String getTagLastUpdated(ReaderTag tag) { |
| 258 | + return getDateColumn(tag, "date_updated"); |
| 259 | + } |
| 260 | + public static void setTagLastUpdated(ReaderTag tag, String date) { |
| 261 | + setDateColumn(tag, "date_updated", date); |
| 262 | + } |
| 263 | + |
| 264 | + private static String getDateColumn(ReaderTag tag, String colName) { |
294 | 265 | if (tag == null) { |
295 | 266 | return ""; |
296 | 267 | } |
297 | 268 | String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; |
298 | 269 | return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), |
299 | | - "SELECT date_updated FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?", |
| 270 | + "SELECT " + colName + " FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?", |
300 | 271 | args); |
301 | 272 | } |
302 | | - |
303 | | - public static void setTagLastUpdated(ReaderTag tag, String date) { |
| 273 | + private static void setDateColumn(ReaderTag tag, String colName, String date) { |
304 | 274 | if (tag == null) { |
305 | 275 | return; |
306 | 276 | } |
307 | 277 |
|
308 | | - ContentValues values = new ContentValues(); |
309 | | - values.put("tag_name", tag.getTagName()); |
310 | | - values.put("tag_type", tag.tagType.toInt()); |
311 | | - values.put("date_updated", date); |
| 278 | + String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; |
| 279 | + boolean rowExists = SqlUtils.boolForQuery( |
| 280 | + ReaderDatabase.getReadableDb(), |
| 281 | + "SELECT 1 FROM tbl_tag_updates WHERE tag_name=? AND tag_type=?", |
| 282 | + args); |
| 283 | + |
| 284 | + final String sql; |
| 285 | + if (rowExists) { |
| 286 | + sql = "UPDATE tbl_tag_updates SET " + colName + "=?1 WHERE tag_name=?2 AND tag_type=?3"; |
| 287 | + } else { |
| 288 | + sql = "INSERT INTO tbl_tag_updates (" + colName + ", tag_name, tag_type) VALUES (?1,?2,?3)"; |
| 289 | + } |
| 290 | + |
| 291 | + SQLiteStatement stmt = ReaderDatabase.getWritableDb().compileStatement(sql); |
312 | 292 | try { |
313 | | - ReaderDatabase.getWritableDb().insertWithOnConflict("tbl_tag_updates", null, values, SQLiteDatabase.CONFLICT_REPLACE); |
314 | | - } catch (SQLException e) { |
315 | | - AppLog.e(T.READER, e); |
| 293 | + stmt.bindString(1, date); |
| 294 | + stmt.bindString(2, tag.getTagName()); |
| 295 | + stmt.bindLong (3, tag.tagType.toInt()); |
| 296 | + stmt.execute(); |
| 297 | + } finally { |
| 298 | + SqlUtils.closeStatement(stmt); |
316 | 299 | } |
317 | 300 | } |
318 | 301 |
|
|
0 commit comments