private String getViewVersionKey(@Nonnull AndroidDatabase androidDatabase) { return androidDatabase.getName() + "_view_version"; }
public void addDatabase(@Nonnull AndroidDatabase database) { databaseMap.put(database.getName(), database); }
/** * Delete single database file, based on database name * @param databaseName name of database to delete */ public void deleteDatabaseFile(String databaseName) { for (AndroidDatabase androidDatabase : androidDatabaseList) { if (databaseName.equals(androidDatabase.getName())) { File file = new File(androidDatabase.getPath()); file.delete(); } } }
public void detachDatabases(@Nonnull AndroidDatabase db) { for (AndroidDatabase toDb : db.getAttachedDatabases()) { detachDatabase(db, toDb.getName()); } }
public void connectAllDatabases() { for (AndroidDatabase database : getDatabases()) { connectDatabase(database.getName()); } }
public void onUpgrade(AndroidDatabase androidDatabase, int oldVersion, int newVersion) { String databaseName = androidDatabase.getName(); getLogger().i(TAG, "Upgrading database [" + databaseName + "] from version " + oldVersion + " to " + newVersion); }
public void onUpgrade(AndroidDatabase androidDatabase, int oldVersion, int newVersion) { String databaseName = androidDatabase.getName(); getLogger().i(TAG, "Upgrading database [" + databaseName + "] from version " + oldVersion + " to " + newVersion); }
public void onUpgradeViews(@NonNull AndroidDatabase androidDatabase, int oldVersion, int newVersion) { String databaseName = androidDatabase.getName(); getLogger().i(TAG, "Upgrading database [" + databaseName + "] VIEWS from version " + oldVersion + " to " + newVersion); // automatically drop/create views super.onUpgradeViews(androidDatabase, oldVersion, newVersion); }
/** * Delete and then recreate the database * * @param androidDatabase database to clean */ public void onCleanDatabase(@Nonnull AndroidDatabase androidDatabase) { log.i(TAG, "Cleaning Database"); deleteDatabase(androidDatabase); connectDatabase(androidDatabase.getName(), false); // do not update here, because it will cause a recursive call }
public void onUpgradeViews(@NonNull AndroidDatabase androidDatabase, int oldVersion, int newVersion) { String databaseName = androidDatabase.getName(); getLogger().i(TAG, "Upgrading database [" + databaseName + "] VIEWS from version " + oldVersion + " to " + newVersion); // automatically drop/create views super.onUpgradeViews(androidDatabase, oldVersion, newVersion); }
public void onUpgradeViews(@Nonnull AndroidDatabase androidDatabase, int oldVersion, int newVersion) { if (oldVersion != newVersion) { log.i(TAG, "Upgrading database VIEWS [" + androidDatabase.getName() + "] from version " + oldVersion + " to " + newVersion); onDropViews(androidDatabase); onCreateViews(androidDatabase); } }
public void attachDatabases(@Nonnull AndroidDatabase db) { for (AndroidDatabase toDb : db.getAttachedDatabases()) { db.getDatabaseWrapper().attachDatabase(toDb.getPath(), toDb.getName(), toDb.getPassword()); } }
public boolean mergeDatabase(@Nullable File sourceDatabaseFile, @Nullable String sourceDatabasePassword, @Nullable AndroidDatabase targetDatabase) { if (targetDatabase == null) { log.e(TAG, "Failed to merged :: targetDatabase is null"); return false; } if (sourceDatabaseFile == null) { log.e(TAG, "Failed to merged :: sourceDatabaseFile is null"); return false; } if (!sourceDatabaseFile.exists()) { log.e(TAG, "Failed to merged [" + sourceDatabaseFile.getAbsolutePath() + "] into [" + targetDatabase.getName() + "] :: Source database does not exist"); return false; } // Attach sourceDatabase with primary targetDatabase.getDatabaseWrapper().attachDatabase(sourceDatabaseFile.getAbsolutePath(), MERGE_SOURCE_DATABASE_NAME, sourceDatabasePassword); // Get a list of tables to merge List<String> sourceTableNames = findTableNames(targetDatabase, MERGE_SOURCE_DATABASE_NAME); List<String> targetTableNames = findTableNames(targetDatabase); // Merge table content (insert content from source database) targetDatabase.beginTransaction(); for (String tableName : sourceTableNames) { if (targetTableNames.contains(tableName)) { copyTableData(targetDatabase, MERGE_SOURCE_DATABASE_NAME + "." + tableName, tableName); } } targetDatabase.endTransaction(true); // Detach databases targetDatabase.getDatabaseWrapper().detachDatabase(MERGE_SOURCE_DATABASE_NAME); return true; }
for (int i = 0; i < CLOSE_MAX_RETRY; i++) { try { log.w(TAG, "Trying to close database ["+ androidDatabase.getName() +"] while in transaction... waiting " + CLOSE_RETRY_MS + "..."); Thread.sleep(CLOSE_RETRY_MS); if (!wrapper.inTransaction()) { log.e(TAG, "Transaction still open on database ["+ androidDatabase.getName() +"] while closing database... closing anyway");