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.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;
|
|
//import com.basic.security.manager.erlang.ErlangProcess;
|
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());
|
IdentityManager.save(adminIdentity);
|
}
|
ModelAdapter staffIdentity = BaseManager.findById("identity", "staffIdentity");
|
if (staffIdentity == null) {
|
staffIdentity = new ModelAdapter("staffIdentity");
|
staffIdentity.setString("table", "identity");
|
staffIdentity.setString("name", "老师");
|
staffIdentity.setString("device_id", DeviceManager.getDeviceId());
|
staffIdentity.setString("company_id", CompanyManager.getCompanyId());
|
IdentityManager.save(staffIdentity);
|
}
|
ModelAdapter blackListIdentity = BaseManager.findById("identity", "blackListIdentity");
|
if (blackListIdentity == null) {
|
blackListIdentity = new ModelAdapter("blackListIdentity");
|
blackListIdentity.setString("table", "identity");
|
blackListIdentity.setString("name", "内部人员");
|
blackListIdentity.setString("device_id", DeviceManager.getDeviceId());
|
blackListIdentity.setString("company_id", CompanyManager.getCompanyId());
|
IdentityManager.save(blackListIdentity);
|
}
|
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());
|
IdentityManager.save(studentIdentity);
|
}
|
ModelAdapter autoSignUpIdentity = BaseManager.findById("identity", "autoSignUpIdentity");
|
if (autoSignUpIdentity == null) {
|
autoSignUpIdentity = new ModelAdapter("autoSignUpIdentity");
|
autoSignUpIdentity.setString("table", "identity");
|
autoSignUpIdentity.setString("name", "访客");
|
autoSignUpIdentity.setString("device_id", DeviceManager.getDeviceId());
|
autoSignUpIdentity.setString("company_id", CompanyManager.getCompanyId());
|
IdentityManager.save(autoSignUpIdentity);
|
}
|
ModelAdapter admin_person = BaseManager.findById("person", deviceId + "admin_person");
|
if (admin_person == null) {
|
admin_person = new ModelAdapter(deviceId + "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");
|
PersonManager.savePerson(admin_person);
|
}
|
ModelAdapter admin_user_table = BaseManager.findById("user", deviceId + "admin_user");
|
if (admin_user_table == null) {
|
admin_user_table = new ModelAdapter(deviceId + "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());
|
UserManager.saveUser(admin_user_table);
|
}
|
ModelAdapter admin_person_identity = BaseManager.findById("person_identity", deviceId + "admin_person_identity");
|
if (admin_person_identity == null) {
|
admin_person_identity = new ModelAdapter(deviceId + "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());
|
PersonIdentityManager.savePersonIdentity(admin_person_identity);
|
}
|
BaseSettingManager.initBaseSetting();
|
DeviceManager.initDevice();
|
HintDoorAccessManager.initHintDoorAccess();
|
HintRecognizeManager.initHintRecognize();
|
HintSignUpManager.initHintSignUp();
|
ClusterSettingManager.initCluster();
|
if (Constants.isUseSerf) {
|
ClusterSettingManager.start();
|
}
|
// ErlangProcess.erlangProcessCanStart = true;
|
while (!MainActivity.mainActivityInitComplete) {
|
SystemClock.sleep(200);
|
}
|
MainActivity mainActivity = BaseApplication.getApplication().activity;
|
if (Constants.indoorOutdoorInOne) {
|
try {
|
ModelAdapter adminAccount = AccountManager.getAccount();
|
AccountManager.setAdminAccount(adminAccount);
|
AccountManager.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);
|
}
|
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 {
|
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 (\"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,\"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)");
|
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<String> 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();
|
}
|
}
|
}
|