From cbdaa0559af3b8ae9c8cf8287d30916d5f81ee3c Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期四, 05 十一月 2020 13:56:16 +0800 Subject: [PATCH] 调整showlable --- app/src/main/java/com/basic/security/dao/DatabaseManager.java | 85 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 77 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/basic/security/dao/DatabaseManager.java b/app/src/main/java/com/basic/security/dao/DatabaseManager.java index bf9cb8f..85070ab 100644 --- a/app/src/main/java/com/basic/security/dao/DatabaseManager.java +++ b/app/src/main/java/com/basic/security/dao/DatabaseManager.java @@ -6,9 +6,12 @@ import android.util.Pair; import com.basic.security.base.BaseApplication; +import com.basic.security.model.Log; +import com.basic.security.model.Setting; import com.basic.security.utils.Constants; import java.io.File; +import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; @@ -25,24 +28,90 @@ public static final Lock databaseLock = new ReentrantLock(); public static final Lock databaseExecSqlLock = new ReentrantLock(); public static Map<String, SQLiteDatabase> databaseMap = new HashMap<>(); - - public static SQLiteDatabase getDatabase() { + public static Class[] tableClasses = new Class[] { + Setting.class, + Log.class + }; + public static SQLiteDatabase getDatabase() {// return getDatabase(Constants.databaseName); } - public static void intiTables() { + public static void intiTables() {// + for (Class tableClass : tableClasses) { + String table = tableClass.getSimpleName(); + Map<String, String> columns = new HashMap<>(); + Field[] declaredFields = tableClass.getDeclaredFields(); + for (Field field : declaredFields) { + try { + String fieldName = field.getName(); + String value = (String)field.get(null); + if (value != null) { + if ("table".equals(fieldName)) { + table = value; + } else { + columns.put(value, value); + } + } + } catch (Exception e) { + System.out.println("reflect "+e.getMessage()); + } + } + columns.put("id", "id"); + + String createTable = "CREATE TABLE IF NOT EXISTS " + table + " ("; + for (String column : columns.keySet()) { + createTable += column + " TEXT, "; + } + createTable += " PRIMARY KEY(id))"; + if (table.equals("RealTimeMetrics")) { + createTable = createTable.replace("TEXT", "INTEGER"); + createTable = createTable.replace("id INTEGER", "id TEXT"); +// System.out.println("createTable="+createTable); + } + DatabaseManager.execSQL(createTable); + String createIndex = "CREATE UNIQUE INDEX IF NOT EXISTS idx_"+table+" ON "+table+"(id)"; + DatabaseManager.execSQL(createIndex); + } + + DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS alarm (\"matchPersonListStr\" TEXT, property TEXT, \"alarmLargePicture\" TEXT,\"alarmPerson\" TEXT,\"alarmPicture\" TEXT,\"alarmVideo\" TEXT,\"alarmTime\" TEXT,\"alarmAddress\" TEXT,\"alarmType\" TEXT,\"id\" TEXT, \"createTime\" TEXT, \"closeAlarm\" TEXT, \"mute\" TEXT, PRIMARY KEY(id))"); + try { + DatabaseManager.execSQL("ALTER TABLE alarm ADD COLUMN imgKey text"); + } catch (Exception e) { + e.printStackTrace(); + } + try { + DatabaseManager.execSQL("ALTER TABLE alarm ADD COLUMN indeviceid text"); + } catch (Exception e) { + e.printStackTrace(); + } + try { + DatabaseManager.execSQL("ALTER TABLE alarm ADD COLUMN videoReqNum text"); + } catch (Exception e) { + e.printStackTrace(); + } + try { + DatabaseManager.execSQL("ALTER TABLE alarm ADD COLUMN picDate text"); + } catch (Exception e) { + e.printStackTrace(); + } + try { + DatabaseManager.execSQL("ALTER TABLE alarm ADD COLUMN alarmLevel text"); + } catch (Exception e) { + e.printStackTrace(); + } DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_alarm ON alarm(id)"); - DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS setting (\"id\" TEXT, \"name\" TEXT, PRIMARY KEY(id))"); - DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_setting ON setting (id)"); +// DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS setting (\"id\" TEXT, \"name\" TEXT, PRIMARY KEY(id))"); +// DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_setting ON setting (id)"); } - public static SQLiteDatabase getDatabase(String databaseName) { + public static SQLiteDatabase getDatabase(String databaseName) {// SQLiteDatabase database = databaseMap.get(databaseName); try { databaseLock.lock(); if (database == null) { - database = BaseApplication.getApplication().openOrCreateDatabase(Constants.databaseName, MODE_PRIVATE, null); +// database = BaseApplication.getApplication().openOrCreateDatabase(Constants.databaseName, MODE_PRIVATE, null); + database = SQLiteDatabase.openOrCreateDatabase(databaseName, null); databaseMap.put(databaseName, database); intiTables(); setCustomDatabaseFiles(BaseApplication.getApplication()); @@ -78,7 +147,7 @@ } } - private static void initTableColumnNames() { + private static void initTableColumnNames() {// SQLiteDatabase mDataBase = DatabaseManager.getDatabase(); Cursor c = mDataBase.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); List<String> tableNameList = new ArrayList<>(); -- Gitblit v1.8.0