package safeluck.drive.evaluation.DB;
|
|
import android.content.Context;
|
import android.util.Log;
|
|
import androidx.annotation.NonNull;
|
import androidx.room.Database;
|
import androidx.room.Room;
|
import androidx.room.RoomDatabase;
|
import androidx.room.migration.Migration;
|
import androidx.sqlite.db.SupportSQLiteDatabase;
|
import androidx.work.OneTimeWorkRequest;
|
import androidx.work.WorkManager;
|
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
|
import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
|
import safeluck.drive.evaluation.DB.criterias.CriteriaForII;
|
import safeluck.drive.evaluation.DB.criterias.CriteriaForIIWorker;
|
import safeluck.drive.evaluation.DB.criterias.CriteriaForIWorker;
|
import safeluck.drive.evaluation.DB.criterias.CriteriaIDao;
|
import safeluck.drive.evaluation.DB.criterias.CriteriaIIDao;
|
import safeluck.drive.evaluation.DB.failitems.FailProjDao;
|
import safeluck.drive.evaluation.DB.failitems.FailedProj;
|
import safeluck.drive.evaluation.DB.failitems.FailedProjWorker;
|
import safeluck.drive.evaluation.DB.gps.GPSInfo;
|
import safeluck.drive.evaluation.DB.gps.GpsInfoDao;
|
import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
|
import safeluck.drive.evaluation.DB.rtktb.RTKConfigDao;
|
import safeluck.drive.evaluation.DB.rtktb.RTKConfigWork;
|
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/11/25. 11:13:23
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class},version = 1,exportSchema = false)
|
public abstract class WorkRoomDataBase extends RoomDatabase {
|
private static final String TAG = "WorkRoomDataBase";
|
public abstract StudentDao getstudentDao();
|
|
//科目二 I类考场评判表
|
public abstract CriteriaIDao getCriteriaIDao();
|
//科目二 II类考场评判表
|
public abstract CriteriaIIDao getCriteriaIIDao();
|
public abstract FailProjDao getFailProjDao();
|
private static volatile WorkRoomDataBase workRoomDataBase;
|
|
private static final int NUMBER_OF_THREADS = 4;
|
|
public static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
|
// static Migration migration = new Migration(1,2) {
|
// @Override
|
// public void migrate(@NonNull SupportSQLiteDatabase database) {
|
// database.execSQL("alter table student_table ADD COLUMN begin_time INTEGER NOT NULL DEFAULT 0");
|
// }
|
// };
|
//private static final Migration[] ALL_MIGRATIONS = new Migration[]{migration};
|
|
|
public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){
|
Log.i(TAG, "getWorkRoomDataBase");
|
if (workRoomDataBase == null){
|
synchronized (WorkRoomDataBase.class){
|
if (workRoomDataBase == null){
|
Log.i(TAG, "getWorkRoomDataBase==null ");
|
workRoomDataBase = Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database")
|
// .addMigrations(ALL_MIGRATIONS)
|
.addCallback(new Callback() {
|
@Override
|
public void onCreate(@NonNull SupportSQLiteDatabase db) {
|
super.onCreate(db);
|
OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class);
|
OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class);
|
OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(CriteriaForIIWorker.class);
|
OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class);
|
OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class);
|
Log.i(TAG, "onCreate: 创建数据库后建立数据表插入数据");
|
WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest);
|
WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1);
|
WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2);
|
WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3);
|
WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest);
|
}
|
|
@Override
|
public void onOpen(@NonNull SupportSQLiteDatabase db) {
|
super.onOpen(db);
|
Log.i(TAG, "onOpen: ");
|
}
|
})
|
.build();
|
}
|
}
|
}
|
return workRoomDataBase;
|
}
|
|
|
public abstract RTKConfigDao getRTKConfigDao();
|
|
public abstract GpsInfoDao getGpsInoDao();
|
}
|