DatabaseManager.java 源代码


package common;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import bean.GroupBeanSave;
import bean.RFAlarmEvtent;
import com.huawei.hms.framework.common.hianalytics.CrashHianalyticsData;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import utils.HiTools;

public class DatabaseManager {
    public static final String TABLE_ALARM_EVENT = "alarm_event";
    public static final String TABLE_DEVICE = "device";
    public static final String TABLE_FOUR_LIVE = "four_live";
    public static final String TABLE_ONE_KEY = "one_key";
    private DatabaseHelper dbHelper;
    private Context mContext;

    public DatabaseManager(Context context) {
        this.mContext = context;
        this.dbHelper = DatabaseHelper.getInstance(context);
    }

    public SQLiteDatabase getReadableDatabase() {
        return this.dbHelper.getReadableDatabase();
    }

    public SQLiteDatabase getWritableDatabase() {
        return this.dbHelper.getWritableDatabase();
    }

    public synchronized long addDevice(String str, String str2, String str3, String str4, int i, int i2, int i3, String str5, int i4) {
        SQLiteDatabase writableDatabase = getWritableDatabase();
        Cursor query = writableDatabase.query("device", null, "dev_uid=?and user= ?", new String[]{str2, str5}, null, null, null);
        if (query != null && query.moveToFirst()) {
            return -1L;
        }
        ContentValues contentValues = new ContentValues();
        contentValues.put("dev_nickname", str);
        contentValues.put("dev_uid", str2);
        contentValues.put("dev_name", str3);
        contentValues.put("dev_pwd", str4);
        contentValues.put("view_acc", str3);
        contentValues.put("view_pwd", str4);
        contentValues.put("dev_videoQuality", Integer.valueOf(i));
        contentValues.put("dev_alarmState", Integer.valueOf(i2));
        contentValues.put("dev_pushState", Integer.valueOf(i3));
        contentValues.put("event_notification", (Integer) 0);
        contentValues.put("ask_format_sdcard", (Integer) 0);
        contentValues.put("camera_channel", (Integer) 0);
        contentValues.put("dev_serverData", "120.24.179.113");
        contentValues.put("user", str5);
        contentValues.put("camera_level", Integer.valueOf(i4));
        long insertOrThrow = writableDatabase.insertOrThrow("device", null, contentValues);
        if (query != null) {
            query.close();
        }
        return insertOrThrow;
    }

    public synchronized boolean queryDeviceByUid(String str) {
        boolean z;
        z = true;
        Cursor rawQuery = this.dbHelper.getWritableDatabase().rawQuery("select * from device where dev_uid=?", new String[]{str});
        if (rawQuery == null || !rawQuery.moveToFirst()) {
            z = false;
        }
        if (rawQuery != null) {
            rawQuery.close();
        }
        return z;
    }

    public synchronized int queryPushStateByUid(String str) {
        Cursor rawQuery = this.dbHelper.getWritableDatabase().rawQuery("select * from device where dev_uid=?", new String[]{str});
        if (rawQuery == null || !rawQuery.moveToNext()) {
            if (rawQuery != null) {
                rawQuery.close();
            }
            return 0;
        }
        int i = rawQuery.getInt(rawQuery.getColumnIndex("dev_pushState"));
        rawQuery.close();
        return i;
    }

    public synchronized void updateDeviceByDBID(String str, String str2, String str3, String str4, int i, int i2, int i3, String str5, String str6, int i4) {
        DatabaseHelper databaseHelper = this.dbHelper;
        if (databaseHelper != null) {
            SQLiteDatabase writableDatabase = databaseHelper.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("dev_nickname", str);
            contentValues.put("dev_uid", str2);
            contentValues.put("dev_name", str3);
            contentValues.put("dev_pwd", str4);
            contentValues.put("view_acc", str3);
            contentValues.put("view_pwd", str4);
            contentValues.put("dev_videoQuality", Integer.valueOf(i));
            contentValues.put("dev_alarmState", Integer.valueOf(i2));
            contentValues.put("dev_pushState", Integer.valueOf(i3));
            contentValues.put("dev_serverData", str5);
            contentValues.put("camera_level", Integer.valueOf(i4));
            writableDatabase.update("device", contentValues, "dev_uid = '" + str2 + "'and user= '" + str6 + "'", null);
        }
    }

    public synchronized void updateUserByKey(String str, int i) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("user", str);
        writableDatabase.update("device", contentValues, "_id='" + i + "'", null);
    }

    public synchronized void updateLeave(int i, int i2) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("camera_level", Integer.valueOf(i));
        writableDatabase.update("device", contentValues, "_id='" + i2 + "'", null);
    }

    public synchronized void updateDeviceSnapshotByUID(String str, Bitmap bitmap) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("snapshot", getByteArrayFromBitmap(bitmap));
        writableDatabase.update("device", contentValues, "dev_uid='" + str + "'", null);
    }

    public synchronized void updateDeviceSnapshotByUID(String str, byte[] bArr) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("snapshot", bArr);
        writableDatabase.update("device", contentValues, "dev_uid='" + str + "'", null);
    }

    public synchronized void updateServerByUID(String str, String str2) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("dev_serverData", str2);
        writableDatabase.update("device", contentValues, "dev_uid='" + str + "'", null);
    }

    public synchronized void updateAlarmStateByUID(String str, int i) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("dev_alarmState", Integer.valueOf(i));
        writableDatabase.update("device", contentValues, "dev_uid='" + str + "'", null);
    }

    public synchronized void removeDeviceByUID(String str, String str2) {
        this.dbHelper.getWritableDatabase().delete("device", "dev_uid='" + str + "'and user='" + str2 + "'", null);
    }

    public synchronized void removeDeviceAlartEvent(String str) {
        this.dbHelper.getWritableDatabase().delete("alarm_event", "dev_uid = '" + str + "'", null);
    }

    public synchronized long addAlarmEvent(String str, int i, int i2) {
        DatabaseHelper databaseHelper = this.dbHelper;
        if (databaseHelper == null) {
            return 1L;
        }
        SQLiteDatabase writableDatabase = databaseHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("dev_uid", str);
        contentValues.put(CrashHianalyticsData.TIME, Integer.valueOf(i));
        contentValues.put("type", Integer.valueOf(i2));
        return writableDatabase.insertOrThrow("alarm_event", null, contentValues);
    }

    public static Bitmap getBitmapFromByteArray(byte[] bArr) {
        return BitmapFactory.decodeStream(new ByteArrayInputStream(bArr), null, getBitmapOptions(2));
    }

    public static BitmapFactory.Options getBitmapOptions(int i) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPurgeable = true;
        options.inInputShareable = true;
        options.inSampleSize = i;
        return options;
    }

    public static byte[] getByteArrayFromBitmap(Bitmap bitmap) {
        if (bitmap == null || bitmap.isRecycled()) {
            return null;
        }
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, byteArrayOutputStream);
        return byteArrayOutputStream.toByteArray();
    }

    public void createRFLogTable(String str) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        writableDatabase.execSQL("CREATE TABLE " + str + "(timezone\t\t\t text NOT NULL PRIMARY KEY, typeNum           integer NOT NULL, code\t\t\t\t text NULL, type\t\t\t\t text NULL, name\t\t\t\t text NULL, ishaverecord\t\t integer NULL)");
        writableDatabase.close();
    }

    public long addRfLogToDb(RFAlarmEvtent rFAlarmEvtent, String str) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("timezone", rFAlarmEvtent.getTimezone());
        contentValues.put("typeNum", Integer.valueOf(rFAlarmEvtent.getTypeNum()));
        contentValues.put("code", rFAlarmEvtent.getCode());
        contentValues.put("type", rFAlarmEvtent.getType());
        contentValues.put("name", rFAlarmEvtent.getName());
        contentValues.put("ishaverecord", Integer.valueOf(rFAlarmEvtent.getIsHaveRecord()));
        long replace = writableDatabase.replace(str, null, contentValues);
        writableDatabase.close();
        contentValues.clear();
        return replace;
    }

    public boolean queryRfLogByTimezone(String str, String str2) {
        SQLiteDatabase writableDatabase = this.dbHelper.getWritableDatabase();
        if (!HiTools.sqlTableIsExist(this.mContext, str2)) {
            writableDatabase.close();
            return false;
        }
        Cursor rawQuery = writableDatabase.rawQuery("select timezone from " + str2 + " where timezone =? ", new String[]{str});
        if (rawQuery != null && rawQuery.moveToFirst()) {
            rawQuery.close();
            writableDatabase.close();
            return true;
        }
        rawQuery.close();
        writableDatabase.close();
        return false;
    }

    public ArrayList<RFAlarmEvtent> getAllAlarmLogOneday(String str, String str2, String str3) {
        SQLiteDatabase readableDatabase = this.dbHelper.getReadableDatabase();
        if (!HiTools.sqlTableIsExist(this.mContext, str)) {
            readableDatabase.close();
            return null;
        }
        Cursor rawQuery = readableDatabase.rawQuery("select * from " + str + " where timezone >=? and timezone<=?", new String[]{str2, str3});
        ArrayList<RFAlarmEvtent> arrayList = new ArrayList<>();
        while (rawQuery != null && rawQuery.moveToNext()) {
            arrayList.add(new RFAlarmEvtent(rawQuery.getInt(rawQuery.getColumnIndex("typeNum")), rawQuery.getString(rawQuery.getColumnIndex("timezone")), rawQuery.getString(rawQuery.getColumnIndex("code")), rawQuery.getString(rawQuery.getColumnIndex("type")), rawQuery.getString(rawQuery.getColumnIndex("name")), rawQuery.getInt(rawQuery.getColumnIndex("ishaverecord"))));
        }
        Collections.reverse(arrayList);
        readableDatabase.close();
        rawQuery.close();
        return arrayList;
    }

    public ArrayList<RFAlarmEvtent> getAllAlarmLogOnedayAndType(String str, String str2, String str3, int i) {
        SQLiteDatabase readableDatabase = this.dbHelper.getReadableDatabase();
        if (!HiTools.sqlTableIsExist(this.mContext, str)) {
            return null;
        }
        Cursor rawQuery = readableDatabase.rawQuery("select * from " + str + " where timezone >=? and timezone<=? and typeNum=?", new String[]{str2, str3, i + ""});
        ArrayList<RFAlarmEvtent> arrayList = new ArrayList<>();
        while (rawQuery != null && rawQuery.moveToNext()) {
            rawQuery.getInt(rawQuery.getColumnIndex("typeNum"));
            arrayList.add(new RFAlarmEvtent(i, rawQuery.getString(rawQuery.getColumnIndex("timezone")), rawQuery.getString(rawQuery.getColumnIndex("code")), rawQuery.getString(rawQuery.getColumnIndex("type")), rawQuery.getString(rawQuery.getColumnIndex("name")), rawQuery.getInt(rawQuery.getColumnIndex("ishaverecord"))));
        }
        Collections.reverse(arrayList);
        return arrayList;
    }

    public ArrayList<RFAlarmEvtent> getAlarmLogByTypeNum(String str, int i, String str2, String str3) {
        SQLiteDatabase readableDatabase = this.dbHelper.getReadableDatabase();
        if (!HiTools.sqlTableIsExist(this.mContext, str)) {
            return null;
        }
        Cursor rawQuery = readableDatabase.rawQuery("select * from " + str + " where typeNum =? and timezone>=? and timezone<=?", new String[]{i + "", str2, str3});
        ArrayList<RFAlarmEvtent> arrayList = new ArrayList<>();
        while (rawQuery != null && rawQuery.moveToNext()) {
            arrayList.add(new RFAlarmEvtent(rawQuery.getInt(rawQuery.getColumnIndex("typeNum")), rawQuery.getString(rawQuery.getColumnIndex("timezone")), rawQuery.getString(rawQuery.getColumnIndex("code")), rawQuery.getString(rawQuery.getColumnIndex("type")), rawQuery.getString(rawQuery.getColumnIndex("name")), rawQuery.getInt(rawQuery.getColumnIndex("ishaverecord"))));
        }
        Collections.reverse(arrayList);
        return arrayList;
    }

    public boolean deleteTableData(String str) {
        return HiTools.sqlTableIsExist(this.mContext, str) && this.dbHelper.getWritableDatabase().delete(str, null, null) > 0;
    }

    public synchronized long addOneKey(String str, String str2, String str3, String str4, String str5, int i, String str6, String str7) {
        SQLiteDatabase writableDatabase = getWritableDatabase();
        Cursor query = writableDatabase.query("one_key", null, "add_time =  ? ", new String[]{str4}, null, null, null);
        if (query != null && query.moveToFirst()) {
            return -1L;
        }
        ContentValues contentValues = new ContentValues();
        contentValues.put("dev_uid", str);
        contentValues.put("dev_company", str2);
        contentValues.put("dev_remark", str3);
        contentValues.put("add_time", str4);
        contentValues.put("amount", str5);
        contentValues.put("status", Integer.valueOf(i));
        contentValues.put("reserve", HiDataValue.APP_NAME);
        contentValues.put("order_no", str7);
        long insertOrThrow = writableDatabase.insertOrThrow("one_key", null, contentValues);
        if (query != null) {
            query.close();
        }
        return insertOrThrow;
    }

    public synchronized long addGroup(GroupBeanSave groupBeanSave) {
        SQLiteDatabase writableDatabase = getWritableDatabase();
        Cursor query = writableDatabase.query(TABLE_FOUR_LIVE, null, "groupId =  ? ", new String[]{groupBeanSave.getGroupId()}, null, null, null);
        if (query != null && query.moveToFirst()) {
            return -1L;
        }
        ContentValues contentValues = new ContentValues();
        contentValues.put("groupId", groupBeanSave.getGroupId());
        contentValues.put("groupName", groupBeanSave.getGroupName());
        contentValues.put("camera1", groupBeanSave.getCameraArray()[0]);
        contentValues.put("camera2", groupBeanSave.getCameraArray()[1]);
        contentValues.put("camera3", groupBeanSave.getCameraArray()[2]);
        contentValues.put("camera4", groupBeanSave.getCameraArray()[3]);
        contentValues.put("user", HiDataValue.userAccount);
        long insertOrThrow = writableDatabase.insertOrThrow(TABLE_FOUR_LIVE, null, contentValues);
        if (query != null) {
            query.close();
        }
        return insertOrThrow;
    }

    public synchronized void updateGroup(GroupBeanSave groupBeanSave) {
        DatabaseHelper databaseHelper = this.dbHelper;
        if (databaseHelper != null) {
            SQLiteDatabase writableDatabase = databaseHelper.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("groupName", groupBeanSave.getGroupName());
            contentValues.put("camera1", groupBeanSave.getCameraArray()[0]);
            contentValues.put("camera2", groupBeanSave.getCameraArray()[1]);
            contentValues.put("camera3", groupBeanSave.getCameraArray()[2]);
            contentValues.put("camera4", groupBeanSave.getCameraArray()[3]);
            contentValues.put("user", HiDataValue.userAccount);
            writableDatabase.update(TABLE_FOUR_LIVE, contentValues, "groupId = '" + groupBeanSave.getGroupId() + "'", null);
        }
    }

    public synchronized void updateGroupUser(GroupBeanSave groupBeanSave) {
        DatabaseHelper databaseHelper = this.dbHelper;
        if (databaseHelper != null) {
            SQLiteDatabase writableDatabase = databaseHelper.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("user", HiDataValue.userAccount);
            writableDatabase.update(TABLE_FOUR_LIVE, contentValues, "groupId = '" + groupBeanSave.getGroupId() + "'", null);
        }
    }

    public void deleteGroup(GroupBeanSave groupBeanSave) {
        this.dbHelper.getWritableDatabase().delete(TABLE_FOUR_LIVE, "groupId='" + groupBeanSave.getGroupId() + "'", null);
    }
}