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);
}
}