You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
3 years ago
|
package org.n0m.pawsqlite;
|
||
|
|
||
|
import java.util.concurrent.ConcurrentHashMap;
|
||
|
|
||
|
import org.apache.cordova.CordovaInterface;
|
||
|
|
||
|
import java.io.File;
|
||
|
|
||
|
public class DBManager {
|
||
|
private static final String TAG = "PawSQLite";
|
||
|
|
||
|
private CordovaInterface cordova;
|
||
|
private ConcurrentHashMap<String, DBRunner> dbRunnerMap =
|
||
|
new ConcurrentHashMap<String, DBRunner>();
|
||
|
|
||
|
|
||
|
DBManager(CordovaInterface cordova) {
|
||
|
this.cordova = cordova;
|
||
|
}
|
||
|
|
||
|
public void queueRequest(String dbName, DBRequest request) {
|
||
|
DBRunner dbRunner = dbRunnerMap.get(dbName);
|
||
|
|
||
|
if (dbRunner == null) {
|
||
|
File dbFile = cordova.getActivity().getDatabasePath(dbName);
|
||
|
dbRunner = new DBRunner(dbFile, dbName);
|
||
|
this.cordova.getThreadPool().execute(dbRunner);
|
||
|
dbRunnerMap.put(dbName, dbRunner);
|
||
|
}
|
||
|
|
||
|
dbRunner.queueRequest(request);
|
||
|
|
||
|
// Remove dbRunner if it is being closed
|
||
|
if (request.action == DBAction.CLOSE ||
|
||
|
request.action == DBAction.DELETE) {
|
||
|
|
||
|
this.remove(dbName);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void remove(String dbName) {
|
||
|
dbRunnerMap.remove(dbName);
|
||
|
}
|
||
|
}
|