package com.basic.security.manager; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.hardware.display.DisplayManager; import android.os.SystemClock; import android.view.Display; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Org; import com.basic.security.model.Person; import com.basic.security.model.Sync; import com.basic.security.secondary.SecondaryDisplay; import com.basic.security.utils.Constants; import com.basic.security.utils.socket.outdoor.OutdoorSendIpSocketClientFromBaseSetting; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class SystemInitManager { public static DisplayManager displayManager = null; public static Display[] presentationDisplays = null; public static SecondaryDisplay secondaryDisplay; public static boolean isSecondaryDisplay = false; public static void initTablesAndDefaultValues() { BaseApplication.getApplication().executorService.execute(() -> { createTablesInBaseDatabase(); createTablesInCacheDatabase(); createTablesInSyncDatabase(); initDefaultValues(); FeatureManager.initCppFeatureMap(); }); } public static void initDefaultValues() { try { while (!MainActivity.allUiLoaded) { SystemClock.sleep(100); } if (Constants.isIndoor) { RemoteOutdoorManager.initTwoOutdoors(); } ModelAdapter schoolOrg = OrgManager.buildParentOrg(); String deviceId = DeviceManager.getDeviceId(); ModelAdapter adminIdentity = BaseManager.findById("identity", "adminIdentity"); if (adminIdentity == null) { adminIdentity = new ModelAdapter("adminIdentity"); adminIdentity.setString("table", "identity"); adminIdentity.setString("name", "管理员"); adminIdentity.setString("auto_init", "1"); adminIdentity.setString("device_id", DeviceManager.getDeviceId()); adminIdentity.setString("company_id", CompanyManager.getCompanyId()); adminIdentity.setString(Sync.needSync, Constants.FALSE); IdentityManager.save(adminIdentity); } ModelAdapter teacherIdentity = BaseManager.findById("identity", "teacherIdentity"); if (teacherIdentity == null) { teacherIdentity = new ModelAdapter("teacherIdentity"); teacherIdentity.setString("table", "identity"); teacherIdentity.setString("name", "老师"); teacherIdentity.setString("device_id", DeviceManager.getDeviceId()); teacherIdentity.setString("company_id", CompanyManager.getCompanyId()); teacherIdentity.setString(Sync.needSync, Constants.FALSE); IdentityManager.save(teacherIdentity); } ModelAdapter insiderIdentity = BaseManager.findById("identity", "insiderIdentity"); if (insiderIdentity == null) { insiderIdentity = new ModelAdapter("insiderIdentity"); insiderIdentity.setString("table", "identity"); insiderIdentity.setString("name", "内部人员"); insiderIdentity.setString("device_id", DeviceManager.getDeviceId()); insiderIdentity.setString("company_id", CompanyManager.getCompanyId()); insiderIdentity.setString(Sync.needSync, Constants.FALSE); IdentityManager.save(insiderIdentity); } ModelAdapter studentIdentity = BaseManager.findById("identity", "studentIdentity"); if (studentIdentity == null) { studentIdentity = new ModelAdapter("studentIdentity"); studentIdentity.setString("table", "identity"); studentIdentity.setString("name", "学生"); studentIdentity.setString("device_id", DeviceManager.getDeviceId()); studentIdentity.setString("company_id", CompanyManager.getCompanyId()); studentIdentity.setString(Sync.needSync, Constants.FALSE); IdentityManager.save(studentIdentity); } ModelAdapter guestIdentity = BaseManager.findById("identity", "guestIdentity"); if (guestIdentity == null) { guestIdentity = new ModelAdapter("guestIdentity"); guestIdentity.setString("table", "identity"); guestIdentity.setString("name", "访客"); guestIdentity.setString("device_id", DeviceManager.getDeviceId()); guestIdentity.setString("company_id", CompanyManager.getCompanyId()); guestIdentity.setString(Sync.needSync, Constants.FALSE); IdentityManager.save(guestIdentity); } ModelAdapter admin_person = BaseManager.findById("person", "admin_person"); if (admin_person == null) { admin_person = new ModelAdapter("admin_person") .setString("name", "系统管理员") .setString("sign_up_status", "已注册") .setString("verify_status", "不需要验证身份证") .setString("sign_up_method", "系统初始化分配") .setString(Person.sign_up_rule, "允许通行") .setString("sign_up_time", System.currentTimeMillis() + "") .setString("device_id", DeviceManager.getDeviceId()) //是系统初始化默认设定的 不能删除这个person的管理员身份 .setString("auto_init", "1") .setString(Person.org_id, schoolOrg.getString(Org.id)) .setString(Person.org_ids, schoolOrg.getString(Org.ids)) .setString("company_id", CompanyManager.getCompanyId()) .setString("table", "person"); admin_person.setString(Sync.needSync, Constants.FALSE); PersonManager.savePerson(admin_person); } ModelAdapter adminUser = BaseManager.findById("user", "admin_user"); if (adminUser == null) { adminUser = new ModelAdapter("admin_user") .setString("table", "user") .setString("name", "系统管理员") .setString("person_id", admin_person.getId()) .setString("username", "admin") .setString("auto_init", "1") .setString("password", "admin123") .setString("device_id", DeviceManager.getDeviceId()) .setString("company_id", CompanyManager.getCompanyId()); adminUser.setString(Sync.needSync, Constants.FALSE); UserManager.saveUser(adminUser); } ModelAdapter basicUser = BaseManager.findById("user", "basic_user"); if (basicUser == null) { basicUser = new ModelAdapter("basic_user") .setString("table", "user") .setString("name", "系统管理员") .setString("person_id", "") .setString("username", "basic") .setString("auto_init", "1") .setString("password", "basic123") .setString("device_id", DeviceManager.getDeviceId()) .setString("company_id", CompanyManager.getCompanyId()); basicUser.setString(Sync.needSync, Constants.FALSE); UserManager.saveUser(basicUser); } ModelAdapter admin_person_identity = BaseManager.findById("person_identity", "admin_person_identity"); if (admin_person_identity == null) { admin_person_identity = new ModelAdapter("admin_person_identity") .setString("table", "person_identity") .setString("identity_id", adminIdentity.getId()) .setString("auto_init", "1") .setString("person_id", admin_person.getId()) .setString("device_id", DeviceManager.getDeviceId()) .setString("company_id", CompanyManager.getCompanyId()); admin_person_identity.setString(Sync.needSync, Constants.FALSE); PersonIdentityManager.savePersonIdentity(admin_person_identity); } BaseSettingManager.initBaseSetting(); DeviceManager.initDevice(); HintDoorAccessManager.initHintDoorAccess(); HintRecognizeManager.initHintRecognize(); HintSignUpManager.initHintSignUp(); ClusterSettingManager.initCluster(); if (Constants.isUseSerf) { ClusterSettingManager.start(); } while (!MainActivity.mainActivityInitComplete) { SystemClock.sleep(200); } MainActivity mainActivity = BaseApplication.getApplication().activity; if (Constants.indoorOutdoorInOne) { try { ModelAdapter adminAccount = UserManager.getUserByName("admin"); UserManager.setAdminUser(adminAccount); UserManager.setIsBasic(false); if (BaseSettingManager.isGuestMode()) { mainActivity.fragment_guest_mode.loadData = true; mainActivity.showFragment(mainActivity.fragment_guest_mode); mainActivity.fragment_toolbar.visitor_model(); mainActivity.fragment_guest_mode.loadData(); } else { mainActivity.fragment_toolbar.person_manage(); } mainActivity.fragment_toolbar.toggleGuestModeButton(); } catch (Exception e) { e.printStackTrace(); } showSecondDisplay(mainActivity); } if (Constants.isOutdoor) { OutdoorSendIpSocketClientFromBaseSetting outdoorSocketClient = new OutdoorSendIpSocketClientFromBaseSetting(); outdoorSocketClient.start(); mainActivity.showFragment(mainActivity.fragment_home); } PersonCameraImagePathManager.startUploadCameraImagePath(); PersonCameraImagePathManager.startDownloadCameraImagePath(); OrgManager.initTreeNodeList(); } catch (Exception e) { e.printStackTrace(); } } public static void showSecondDisplay(MainActivity mainActivity) { if (isSecondaryDisplay) { return; } isSecondaryDisplay = true; mainActivity.runOnUiThread(new Runnable() { @Override public void run() { try { displayManager = (DisplayManager) mainActivity.getSystemService(Context.DISPLAY_SERVICE); if (displayManager != null) { presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); if (presentationDisplays.length > 0) { if (secondaryDisplay == null) { secondaryDisplay = new SecondaryDisplay(mainActivity, presentationDisplays[0]); } secondaryDisplay.show(); mainActivity.secondaryDisplay = secondaryDisplay; } } } catch (Exception e) { e.printStackTrace(); } } }); } public static void hideSecondDisplay(MainActivity mainActivity) { if (!isSecondaryDisplay) { return; } isSecondaryDisplay = false; mainActivity.runOnUiThread(new Runnable() { @Override public void run() { try { if (secondaryDisplay != null) { secondaryDisplay.hide(); } } catch (Exception e) { e.printStackTrace(); } } }); } public static void createTablesInCacheDatabase() { try { SQLiteDatabase cacheDatabase = SQLiteDatabase.openOrCreateDatabase( Constants.cacheDatabasePath, null); cacheDatabase.execSQL("CREATE TABLE\n" + "IF NOT EXISTS SqlCache (\n" + " uuid TEXT PRIMARY KEY,\n" + " func TEXT DEFAULT NULL,\n" + " sql TEXT DEFAULT NULL,\n" + " create_time TEXT,\n" + " create_by TEXT\n" + ")"); cacheDatabase.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_sql_cache ON SqlCache (uuid)"); cacheDatabase.execSQL("CREATE TABLE\n" + "IF NOT EXISTS sql_cache_device (\n" + " sql_cache_id TEXT ,\n" + " receive_device_id TEXT, \n" + " CONSTRAINT idx_sql_cache_device UNIQUE (sql_cache_id, receive_device_id)" + ")"); cacheDatabase.close(); } catch (Exception e) { e.printStackTrace(); } } public static void createTablesInBaseDatabase() { DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS base_setting (reboot_hour TEXT, reboot_hour_enable TEXT,normally_closed text, open_door_password TEXT, open_door_password_enable TEXT, \"open_door_duration\" TEXT, \"auto_register_rule\" TEXT, \"auto_checked_time_rule_id\" TEXT, \"device_pass_mode\" TEXT, \"relation_person\" TEXT, \"relation_device\" TEXT, \"indoor_device_id\" TEXT,\"indoor_device_ip\" TEXT,\"no_face_delay\" TEXT,\"picture_rotation_angle\" TEXT,\"id\" TEXT, \"auto_mode\" TEXT, \"admin_mode\" TEXT, \"pass_mode\" TEXT, \"visitor_mode\" TEXT, \"admin_normal_verify\" TEXT, \"admin_normal_verify_phone\" TEXT, \"admin_normal_verify_idcard\" TEXT, \"admin_normal_verify_name\" TEXT, \"admin_idcard_verify\" TEXT, \"admin_idcard_verify_phone\" TEXT, \"back_to_home\" TEXT, \"image_play_interval\" TEXT, \"detect_multiple_face\" TEXT, \"face_ratio\" TEXT, \"face_angle\" TEXT, \"image_play_time\" TEXT, \"login_expire_long\" TEXT, \"auto_mode_verify_phone\" TEXT, \"auto_normal_verify\" TEXT, \"auto_normal_verify_phone\" TEXT, \"auto_normal_verify_idcard\" TEXT, \"auto_normal_verify_name\" TEXT, \"auto_idcard_verify\" TEXT, \"auto_idcard_verify_phone\" TEXT, \"auto_register_identity_id\" TEXT, \"auto_register_identity_name\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_base_setting ON base_setting (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS business (\"id\" TEXT, \"business_name\" TEXT, \"create_time\" TEXT, \"only_allow\" TEXT, \"only_allow_start\" TEXT, \"only_allow_end\" TEXT, \"choose_from_time_rule\" TEXT, \"checked_time_rule_id\" TEXT, \"access_table_name\" TEXT,\"access_identity\" TEXT, \"access_name\" TEXT, \"access_hint\" TEXT, \"not_reached_time_hint\" TEXT, \"not_reached_time_remind\" TEXT, \"time_unit\" TEXT, \"confirm_pass_identity\" TEXT, \"confirm_pass_name\" TEXT, \"confirm_pass_hint\" TEXT, \"time_ids\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_business ON business (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS business_person (\"id\" TEXT, \"person_id\" TEXT, \"business_id\" TEXT, \"pass_model\" TEXT, \"contact_person\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_business_person ON business_person (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS confirm (\"id\" TEXT, \"from_device_id\" TEXT, \"from_person_id\" TEXT, \"from_time\" TEXT, \"valid_long\" TEXT, \"confirm_device_id\" TEXT, \"confirm_user_id\" TEXT, \"confirm_time\" TEXT, \"del_flag\" TEXT, \"company_id\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_confirm ON confirm (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS device (\"id\" TEXT, \"name\" TEXT, \"ip\" TEXT, \"mask\" TEXT, \"gateway\" TEXT, \"no_face_delay\" TEXT, \"address\" TEXT, \"server_ip\" TEXT, \"apply_device_ids\" TEXT, \"device_id\" TEXT, \"open_door_time\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_device ON device (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS hint_door_access (\"id\" TEXT, \"name\" TEXT, \"device_id\" TEXT, \"no_register\" TEXT, \"company_id\" TEXT, \"access_identity\" TEXT, \"access_name\" TEXT, \"access_hint\" TEXT, \"not_reached_time_hint\" TEXT, \"not_reached_time_remind\" TEXT, \"confirm_pass_identity\" TEXT, \"confirm_pass_name\" TEXT, \"confirm_pass_hint\" TEXT, \"refuse_pass_identity\" TEXT, \"refuse_pass_name\" TEXT, \"refuse_pass_hint\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_hint_door_access ON hint_door_access (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS hint_recognize_message (\"id\" TEXT, \"name\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"head_up\" TEXT, \"head_up_message\" TEXT, \"head_down\" TEXT, \"head_down_message\" TEXT, \"face_max\" TEXT, \"face_max_message\" TEXT, \"face_min\" TEXT, \"face_min_message\" TEXT, \"rotation_left\" TEXT, \"rotation_left_message\" TEXT, \"rotation_right\" TEXT, \"rotation_right_message\" TEXT, \"all_fit\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_hint_recognize_message ON hint_recognize_message (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS hint_sign_up (\"id\" TEXT, \"name\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"id_card_message\" TEXT, \"id_card_success\" TEXT, \"id_card_fail\" TEXT, \"edit_message\" TEXT, \"register_success\" TEXT, \"wait_admin\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_hint_sign_up ON hint_sign_up (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS identity (\"id\" TEXT, \"name\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_identity ON identity (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS org (\"id\" TEXT, \"leaf\" TEXT, \"ids\" TEXT, \"pid\" TEXT, \"name\" TEXT, \"names\" TEXT, \"p_names\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_org ON org (id)"); DatabaseManager.execSQL("CREATE INDEX IF NOT EXISTS pidx_org ON org (pid)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS person (\"camera_image_path_upload\" text,\"camera_image_path_exist\" text,\"guest_allow_start_time\" text,\"respondent_ids\" text,\"respondent_names\" text,\"visit_status\" text,\"visit_valid_time\" text,\"visit_exit_time\" text,\"camera_image_feature_path\" text, \"student_id\" text, \"org_id\" text, \"org_ids\" text, \"checked_time_rule_id\" TEXT, \"sign_up_rule\" TEXT,\"id\" TEXT, \"name\" TEXT, \"camera_image_path\" TEXT, \"camera_image_feature\" TEXT, \"camera_image_fastdfs_path\" TEXT, \"id_card_number\" TEXT, \"id_card_image_path\" TEXT, \"id_card_image_feature\" TEXT, \"type\" TEXT, \"phone\" TEXT, \"sign_up_time\" TEXT, \"sign_up_method\" TEXT, \"sign_up_status\" TEXT, \"verify_status\" TEXT, \"auto_init\" TEXT, \"update_time\" TEXT, \"del_flag\" TEXT, \"all_device\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"device_id\" TEXT, \"guest_enter_time\" TEXT, \"guest_visit_status\" TEXT,\"guest_visit_valid_time\" TEXT,\"guest_exit_time\" TEXT,\"guest_visit_reason\" TEXT,\"guest_remark\" TEXT,PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_person ON person (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS guest (\"track_id\" TEXT,\"score\" TEXT,\"verified_id_card\" TEXT,\"id_card_number\" TEXT,\"name\" TEXT,\"id\" TEXT, \"person_id\" TEXT, \"camera_image_path\" TEXT, \"camera_image_feature\" TEXT, \"camera_id\" TEXT, \"create_time\" INTEGER, \"table\" TEXT, \"device_id\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_guest ON guest (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS person_identity (\"id\" TEXT, \"person_id\" TEXT, \"identity_id\" TEXT, \"del_flag\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_person_identity ON person_identity (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS temporary_person (\"id\" TEXT, \"save_time\" TEXT, \"ip\" TEXT, \"camera_image_path\" TEXT, \"camera_image_feature\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_temporary_person ON temporary_person (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS time (\"id\" TEXT, \"time_rule_name\" TEXT, \"week_json\" TEXT, \"date_json\" TEXT, \"is_use\" TEXT, \"del_flag\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_time ON time (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS user (\"id\" TEXT, \"person_id\" TEXT, \"username\" TEXT, \"password\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_user ON user (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS visit (\"target_id_number\" TEXT,\"target_phone\" TEXT,\"target_identity\" TEXT,\"id\" TEXT, \"person_id\" TEXT, \"person_name\" TEXT, \"device_name\" TEXT, \"visit_time\" TEXT, \"verify_result\" TEXT, \"exit_time\" TEXT, \"target_person_id\" TEXT, \"target_person_name\" TEXT, \"target_org_id\" TEXT, \"target_org_name\" TEXT, \"del_flag\" TEXT, \"person_id_number\" TEXT, \"person_phone\" TEXT, \"person_type\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_visit ON visit (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS business_apply_device (\"id\" TEXT, \"business_id\" TEXT, \"device_id\" TEXT, \"table\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_business_apply_device ON business_apply_device (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS OfficeDevice (\"id\" TEXT,\"deviceIp\" TEXT, \"deviceName\" TEXT, \"device_id\" TEXT, \"company_id\" TEXT, \"ip\" TEXT, \"valid\" TEXT, \"del_flag\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_OfficeDevice ON OfficeDevice (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS outdoor (\"id\" TEXT, \"outdoor_device_id\" TEXT, \"outdoor_device_name\" TEXT, \"update_time\" INTEGER, \"outdoor_device_ip\" TEXT, \"valid\" TEXT, \"device_id\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_outdoor ON outdoor (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS id_card (\"id\" TEXT,\"name\" TEXT,\"card_number\" TEXT,\"birthday\" TEXT,\"gender\" TEXT,\"head_path\" TEXT,\"create_time\" TEXT, \"device_id\" TEXT, \"table\" TEXT, PRIMARY KEY(card_number))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_id_card ON id_card (card_number)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS cluster_setting (\"id\" TEXT,\"node_id\" TEXT,\"node_name\" TEXT,\"cluster_id\" TEXT,\"cluster_name\" TEXT,\"password\" TEXT,\"other_node_ip\" TEXT,\"nodes_json\" TEXT,\"exit\" TEXT, \"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_cluster ON cluster_setting (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS Log (\"id\" TEXT,\"message\" TEXT,\"createTime\" TEXT,\"table\" TEXT, PRIMARY KEY(id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_log ON Log (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS cluster_node ( id text NOT NULL, cluster_id text, node_name TEXT, node_id text, node_ip TEXT, create_time TEXT, PRIMARY KEY (id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_cluster_node ON cluster_node (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS cluster ( cluster_id text NOT NULL, cluster_name TEXT, password TEXT, virtual_ip TEXT, PRIMARY KEY (cluster_id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_cluster ON cluster (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS dbtablepersons ( id text NOT NULL, tableId text NOT NULL, faceFeature TEXT, personPicUrl TEXT, personName TEXT, age text, sex TEXT, idCard TEXT, phoneNum text, monitorLevel TEXT, picDesc TEXT, createTime TEXT, updateTime TEXT, createBy TEXT, isDelete integer, enable integer, reserved TEXT, PRIMARY KEY (id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_dbtablepersons ON dbtablepersons (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS dbTables ( id text NOT NULL, tableName TEXT, tableDesc TEXT, tableType TEXT, bwType TEXT, startTime TEXT, endTime TEXT, isSync TEXT, isDelete integer, enable integer, analyServerId text, createTime TEXT, updateTime TEXT, createBy TEXT, PRIMARY KEY (id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_dbTables ON dbTables (id)"); DatabaseManager.execSQL("CREATE TABLE IF NOT EXISTS person_camera_image_path ( id text NOT NULL, camera_image_path TEXT, camera_image_path_exist TEXT, " + " camera_image_path_upload TEXT, from_device_id TEXT, device_id TEXT, company_id TEXT, \"table\" TEXT, PRIMARY KEY (id))"); DatabaseManager.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_person_camera_image_path ON person_camera_image_path (id)"); initTableColumnNames(); } public static void createTablesInSyncDatabase() { try { SQLiteDatabase syncDatabase = SQLiteDatabase.openOrCreateDatabase( Constants.syncDatabasePath, null); syncDatabase.execSQL("CREATE TABLE IF NOT EXISTS 'device_info'(\"father_node\" text, \"table\" text ,uuid text PRIMARY KEY, node_id text, device_id text, cluster_id text, create_time text, update_time text, create_by text, del_flag text )"); syncDatabase.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_device_info ON device_info (uuid)"); syncDatabase.execSQL("CREATE TABLE IF NOT EXISTS 'cluster_info'(\"table\" text, cluster_id text PRIMARY KEY,cluster_name text,create_time text ,update_time text,create_by text,del_flag text )"); syncDatabase.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS idx_cluster_info ON cluster_info (cluster_id)"); syncDatabase.close(); } catch (Exception e) { e.printStackTrace(); } } private static void initTableColumnNames() { SQLiteDatabase mDataBase = DatabaseManager.getDatabase(); Cursor cursor = mDataBase.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); List tableNameList = new ArrayList<>(); if (cursor.moveToFirst()) { while (!cursor.isAfterLast()) { tableNameList.add(cursor.getString(0)); cursor.moveToNext(); } } cursor.close(); for (String tableName : tableNameList) { Cursor dbCursor = mDataBase.query(tableName, null, null, null, null, null, null); String[] columnNames = dbCursor.getColumnNames(); BaseManager.tableColumnNames.put(tableName, Arrays.asList(columnNames)); dbCursor.close(); } } }