GadgetBridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/LockHandler.java

66 lines
1.8 KiB
Java
Raw Normal View History

package nodomain.freeyourgadget.gadgetbridge;
2016-05-15 00:09:34 +02:00
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
2016-05-17 00:51:00 +02:00
import nodomain.freeyourgadget.gadgetbridge.database.DBOpenHelper;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoMaster;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
2016-05-15 00:09:34 +02:00
/**
* A dummy DBHandler that does nothing more than implementing the release() method.
* It is solely used for locking concurrent access to the database session.
*/
public class LockHandler implements DBHandler {
2016-05-17 00:51:00 +02:00
private final DaoMaster daoMaster;
private DaoSession session;
private final SQLiteOpenHelper helper;
2016-05-15 00:09:34 +02:00
2016-05-17 00:51:00 +02:00
public LockHandler(DaoMaster daoMaster, DBOpenHelper helper) {
this.daoMaster = daoMaster;
this.helper = helper;
session = daoMaster.newSession();
2016-05-15 00:09:34 +02:00
}
@Override
public void close() {
GBApplication.releaseDB();
}
@Override
2016-05-17 00:51:00 +02:00
public synchronized void openDb() {
if (session != null) {
throw new IllegalStateException("session must be null");
}
// this will create completely new db instances. This handler will be dead
GBApplication.setupDatabase(GBApplication.getContext());
}
2016-05-15 00:09:34 +02:00
2016-05-17 00:51:00 +02:00
@Override
public synchronized void closeDb() {
if (session == null) {
throw new IllegalStateException("session must not be null");
}
session.clear();
session.getDatabase().close();
session = null;
2016-05-15 00:09:34 +02:00
}
@Override
public SQLiteOpenHelper getHelper() {
2016-05-17 00:51:00 +02:00
return helper;
2016-05-15 00:09:34 +02:00
}
@Override
public DaoSession getDaoSession() {
return session;
}
2016-05-15 00:09:34 +02:00
@Override
2016-05-17 00:51:00 +02:00
public SQLiteDatabase getDatabase() {
return daoMaster.getDatabase();
2016-05-15 00:09:34 +02:00
}
}