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 dbRunnerMap = new ConcurrentHashMap(); 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); } }