// Path: app/src/main/java/com/github/zzwwws/rxzhihudaily/common/util/LogUtil.java
// public class LogUtil {
//     public static final void init(String logFile, int level) {
//         LogImpl.init(logFile, level);
//     }
// 
//     public static final void v(String tag, String msg) {
//         LogImpl.v(tag, buildMessage(msg));
//     }
// 
//     public static final void v(String tag, String msg, Throwable thr) {
//         LogImpl.v(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void d(String tag, String msg) {
//         LogImpl.d(tag, buildMessage(msg));
//     }
// 
//     public static final void d(String tag, String msg, Throwable thr) {
//         LogImpl.d(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void i(String tag, String msg) {
//         LogImpl.i(tag, buildMessage(msg));
//     }
// 
//     public static final void i(String tag, String msg, Throwable thr) {
//         LogImpl.i(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void w(String tag, String msg) {
//         LogImpl.w(tag, buildMessage(msg));
//     }
// 
//     public static final void w(String tag, String msg, Throwable thr) {
//         LogImpl.w(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void w(String tag, Throwable thr) {
//         LogImpl.w(tag, buildMessage(""), thr);
//     }
// 
//     public static final void e(String tag, String msg) {
//         LogImpl.e(tag, buildMessage(msg));
//     }
// 
//     public static final void e(String tag, String msg, Throwable thr) {
//         LogImpl.e(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void ui(String msg) {
//         LogImpl.i("ui", buildMessage(msg));
//     }
// 
//     public static final void core(String msg) {
//         LogImpl.i("core", buildMessage(msg));
//     }
// 
//     public static final void coreDebug(String msg) {
//         LogImpl.d("core", buildMessage(msg));
//     }
// 
//     public static final void res(String msg) {
//         LogImpl.i("RES", buildMessage(msg));
//     }
// 
//     public static final void resDebug(String msg) {
//         LogImpl.d("RES", buildMessage(msg));
//     }
// 
//     public static final void audio(String msg) {
//         LogImpl.i("AudioRecorder", buildMessage(msg));
//     }
// 
//     public static final void audioPlay(String msg) {
//         LogImpl.i("AudioPlay", buildMessage(msg));
//     }
// 
//     public static void vincent(String msg) {
//         LogImpl.v("Vincent", buildMessage(msg));
//     }
// 
//     public static void king(String msg) {
//         LogImpl.v("king", buildMessage(msg));
//     }
// 
//     public static void bonus(String msg) {
//         LogImpl.i("Bonus", buildMessage(msg));
//     }
// 
//     public static void pipeline(String prefix, String msg) {
//         LogImpl.i("Pipeline", prefix + " " + buildMessage(msg));
//     }
// 
//     public static void pipelineDebug(String prefix, String msg) {
//         LogImpl.d("Pipeline", prefix + " " + buildMessage(msg));
//     }
// 
//     public static String getLogFileName(String cat) {
//         return LogImpl.getLogFileName(cat);
//     }
// 
//     private static String buildMessage(String msg) {
//         return msg == null ? "" : msg;
//     }
// 
//     public static void ask(String s) {
//         LogImpl.v("ask", buildMessage(s));
//     }
// 
//     public static void fish(String s) {
//         LogImpl.v("logfish", buildMessage(s));
//     }
// 
//     public static void teamsnsEntrance(String s) {
//         LogImpl.i("teamsnsEntrance", buildMessage(s));
//     }
// 
//     public static void asha(String s) {
//         LogImpl.v("asha", buildMessage(s));
//     }
// }


import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.text.TextUtils;
import com.github.zzwwws.rxzhihudaily.common.util.LogUtil;
package com.github.zzwwws.rxzhihudaily.presenter.db.common;



/**
 * Created by zzwwws on 2016/3/8.
 */
public class DatabaseHelper {
    private static final String TAG = "db";

    private static final int LOCK_RETRY_CHANCES = 3;

    public static final Cursor rawQuery(SQLiteDatabase db, String sql) {
        Cursor cursor = null;

        for (int chance = 0; chance < LOCK_RETRY_CHANCES; chance++) {
            boolean locked = false;

            try {
                cursor = db.rawQuery(sql, null);
            } catch (SQLiteException e) {
                // trace
                e.printStackTrace();
// Path: app/src/main/java/com/github/zzwwws/rxzhihudaily/common/util/LogUtil.java
// public class LogUtil {
//     public static final void init(String logFile, int level) {
//         LogImpl.init(logFile, level);
//     }
// 
//     public static final void v(String tag, String msg) {
//         LogImpl.v(tag, buildMessage(msg));
//     }
// 
//     public static final void v(String tag, String msg, Throwable thr) {
//         LogImpl.v(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void d(String tag, String msg) {
//         LogImpl.d(tag, buildMessage(msg));
//     }
// 
//     public static final void d(String tag, String msg, Throwable thr) {
//         LogImpl.d(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void i(String tag, String msg) {
//         LogImpl.i(tag, buildMessage(msg));
//     }
// 
//     public static final void i(String tag, String msg, Throwable thr) {
//         LogImpl.i(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void w(String tag, String msg) {
//         LogImpl.w(tag, buildMessage(msg));
//     }
// 
//     public static final void w(String tag, String msg, Throwable thr) {
//         LogImpl.w(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void w(String tag, Throwable thr) {
//         LogImpl.w(tag, buildMessage(""), thr);
//     }
// 
//     public static final void e(String tag, String msg) {
//         LogImpl.e(tag, buildMessage(msg));
//     }
// 
//     public static final void e(String tag, String msg, Throwable thr) {
//         LogImpl.e(tag, buildMessage(msg), thr);
//     }
// 
//     public static final void ui(String msg) {
//         LogImpl.i("ui", buildMessage(msg));
//     }
// 
//     public static final void core(String msg) {
//         LogImpl.i("core", buildMessage(msg));
//     }
// 
//     public static final void coreDebug(String msg) {
//         LogImpl.d("core", buildMessage(msg));
//     }
// 
//     public static final void res(String msg) {
//         LogImpl.i("RES", buildMessage(msg));
//     }
// 
//     public static final void resDebug(String msg) {
//         LogImpl.d("RES", buildMessage(msg));
//     }
// 
//     public static final void audio(String msg) {
//         LogImpl.i("AudioRecorder", buildMessage(msg));
//     }
// 
//     public static final void audioPlay(String msg) {
//         LogImpl.i("AudioPlay", buildMessage(msg));
//     }
// 
//     public static void vincent(String msg) {
//         LogImpl.v("Vincent", buildMessage(msg));
//     }
// 
//     public static void king(String msg) {
//         LogImpl.v("king", buildMessage(msg));
//     }
// 
//     public static void bonus(String msg) {
//         LogImpl.i("Bonus", buildMessage(msg));
//     }
// 
//     public static void pipeline(String prefix, String msg) {
//         LogImpl.i("Pipeline", prefix + " " + buildMessage(msg));
//     }
// 
//     public static void pipelineDebug(String prefix, String msg) {
//         LogImpl.d("Pipeline", prefix + " " + buildMessage(msg));
//     }
// 
//     public static String getLogFileName(String cat) {
//         return LogImpl.getLogFileName(cat);
//     }
// 
//     private static String buildMessage(String msg) {
//         return msg == null ? "" : msg;
//     }
// 
//     public static void ask(String s) {
//         LogImpl.v("ask", buildMessage(s));
//     }
// 
//     public static void fish(String s) {
//         LogImpl.v("logfish", buildMessage(s));
//     }
// 
//     public static void teamsnsEntrance(String s) {
//         LogImpl.i("teamsnsEntrance", buildMessage(s));
//     }
// 
//     public static void asha(String s) {
//         LogImpl.v("asha", buildMessage(s));
//     }
// }


// Path: app/src/main/java/com/github/zzwwws/rxzhihudaily/presenter/db/common/DatabaseHelper.java
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.text.TextUtils;
import com.github.zzwwws.rxzhihudaily.common.util.LogUtil;

package com.github.zzwwws.rxzhihudaily.presenter.db.common;



/**
 * Created by zzwwws on 2016/3/8.
 */
public class DatabaseHelper {
    private static final String TAG = "db";

    private static final int LOCK_RETRY_CHANCES = 3;

    public static final Cursor rawQuery(SQLiteDatabase db, String sql) {
        Cursor cursor = null;

        for (int chance = 0; chance < LOCK_RETRY_CHANCES; chance++) {
            boolean locked = false;

            try {
                cursor = db.rawQuery(sql, null);
            } catch (SQLiteException e) {
                // trace
                e.printStackTrace();
                LogUtil.i(TAG, "exec sql exception: " + e);