diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java index 0aca3fe354..c537b0ff60 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java @@ -9,6 +9,7 @@ import com.mogo.eagle.core.utilcode.breakpoint.db.DBHelper; import com.mogo.eagle.core.utilcode.breakpoint.db.dao.ThreadDao; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class ThreadDaoImpl implements ThreadDao { @@ -21,53 +22,139 @@ public class ThreadDaoImpl implements ThreadDao { @Override public synchronized void insertThread(ThreadBean threadBean) { - SQLiteDatabase db = dbHelper.getWritableDatabase(); - db.execSQL("insert into thread_info ( thread_id, url, start, ends, finished) values (?,?,?,?,?)" - ,new Object[]{threadBean.getId(),threadBean.getUrl(),threadBean.getStart(),threadBean.getEnd(),threadBean.getFinished()}); - db.close(); + SQLiteDatabase db = null; + try { + db = dbHelper.getWritableDatabase(); + db.beginTransaction(); + db.execSQL("insert into thread_info ( thread_id, url, start, ends, finished) values (?,?,?,?,?)" + ,new Object[]{threadBean.getId(),threadBean.getUrl(),threadBean.getStart(),threadBean.getEnd(),threadBean.getFinished()}); + db.endTransaction(); + db.setTransactionSuccessful(); + } catch (Throwable t) { + t.printStackTrace(); + } finally { + try { + if (db != null) { + db.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } } @Override public synchronized void updateThread(String url, int thread_id, int finished) { - SQLiteDatabase db = dbHelper.getWritableDatabase(); - db.execSQL("update thread_info set finished = ? where url = ? and thread_id = ?" - ,new Object[]{finished,url,thread_id}); - db.close(); + SQLiteDatabase db = null; + try { + db = dbHelper.getWritableDatabase(); + db.beginTransaction(); + db.execSQL("update thread_info set finished = ? where url = ? and thread_id = ?" + ,new Object[]{finished,url,thread_id}); + db.endTransaction(); + db.setTransactionSuccessful(); + } catch (Throwable t) { + t.printStackTrace(); + } finally { + try { + if (db != null) { + db.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } } @Override public void deleteThread(String url) { - SQLiteDatabase db = dbHelper.getWritableDatabase(); - db.execSQL("delete from thread_info where url = ?",new Object[]{url}); - db.close(); + SQLiteDatabase db = null; + try { + db = dbHelper.getWritableDatabase(); + db.beginTransaction(); + db.execSQL("delete from thread_info where url = ?",new Object[]{url}); + db.endTransaction(); + db.setTransactionSuccessful(); + } catch (Throwable t) { + t.printStackTrace(); + } finally { + try { + if (db != null) { + db.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + + } } @Override public List getThreads(String url) { - SQLiteDatabase db = dbHelper.getReadableDatabase(); - Cursor cursor = db.rawQuery("select * from thread_info where url = ?",new String[]{url}); - List threadBeanList = new ArrayList<>(); - while (cursor.moveToNext()){ - ThreadBean bean = new ThreadBean(); - bean.setId(cursor.getInt(cursor.getColumnIndex("thread_id"))); - bean.setUrl(cursor.getString(cursor.getColumnIndex("url"))); - bean.setStart(cursor.getInt(cursor.getColumnIndex("start"))); - bean.setEnd(cursor.getInt(cursor.getColumnIndex("ends"))); - bean.setFinished(cursor.getInt(cursor.getColumnIndex("finished"))); - threadBeanList.add(bean); + SQLiteDatabase db = null; + Cursor cursor = null; + try { + db = dbHelper.getReadableDatabase(); + cursor = db.rawQuery("select * from thread_info where url = ?",new String[]{url}); + List threadBeanList = new ArrayList<>(); + while (cursor.moveToNext()){ + ThreadBean bean = new ThreadBean(); + bean.setId(cursor.getInt(cursor.getColumnIndex("thread_id"))); + bean.setUrl(cursor.getString(cursor.getColumnIndex("url"))); + bean.setStart(cursor.getInt(cursor.getColumnIndex("start"))); + bean.setEnd(cursor.getInt(cursor.getColumnIndex("ends"))); + bean.setFinished(cursor.getInt(cursor.getColumnIndex("finished"))); + threadBeanList.add(bean); + } + return threadBeanList; + } catch (Throwable t) { + t.printStackTrace(); + } finally { + try { + if (cursor != null) { + cursor.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + + try { + if (db != null) { + db.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } } - cursor.close(); - db.close(); - return threadBeanList; + return Collections.emptyList(); } @Override public boolean isExists(String url, int thread_id) { - SQLiteDatabase db = dbHelper.getReadableDatabase(); - Cursor cursor = db.rawQuery("select * from thread_info where url = ? and thread_id = ?", new String[]{url,thread_id+""}); - boolean exists = cursor.moveToNext(); - cursor.close(); - db.close(); - return exists; + SQLiteDatabase db = null; + Cursor cursor = null; + try { + db = dbHelper.getReadableDatabase(); + cursor = db.rawQuery("select * from thread_info where url = ? and thread_id = ?", new String[]{url,thread_id+""}); + return cursor.moveToNext(); + } catch (Throwable t) { + t.printStackTrace(); + } finally { + try { + if (cursor != null) { + cursor.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + try { + if (db != null) { + db.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + return false; } }