/** * Query. * * @param db * the db * @param conditions * the conditions * @param type * the type * @param listener * the listener */ private static void query(SQLiteDatabase db, String conditions, QueryType type, OnResultListener listener) { SQLiteUpdateTaskHelper.query(db, conditions, type, listener); }
/** * Retrieve all table as a Map of (name, sql). * * @param db * the db * @return the all tables */ public static Map<String, String> getAllTables(SQLiteDatabase db) { final Map<String, String> result = new LinkedHashMap<>(); query(db, null, QueryType.TABLE, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { if (StringUtils.hasText(sql)) { result.put(name, StringUtils.nvl(sql).trim()); } } }); return result; }
/** * Retrieve all indexes as a Map of (name, sql). * * @param db * the db * @return the all indexes */ public static Map<String, String> getAllIndexes(SQLiteDatabase db) { final Map<String, String> result = new LinkedHashMap<>(); query(db, null, QueryType.INDEX, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { if (StringUtils.hasText(sql)) { result.put(name, StringUtils.nvl(sql).trim()); } } }); return result; }
/** * Retrieve all indexes as a Map of (name, sql). * * @param db * the db * @return the all indexes */ public static Map<String, String> getAllIndexes(SQLiteDatabase db) { final Map<String, String> result = new LinkedHashMap<>(); query(db, null, QueryType.INDEX, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { if (StringUtils.hasText(sql)) { result.put(name, StringUtils.nvl(sql).trim()); } } }); return result; }
/** * Retrieve all table as a Map of (name, sql). * * @param db * the db * @return the all tables */ public static Map<String, String> getAllTables(SQLiteDatabase db) { final Map<String, String> result = new LinkedHashMap<>(); query(db, null, QueryType.TABLE, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { if (StringUtils.hasText(sql)) { result.put(name, StringUtils.nvl(sql).trim()); } } }); return result; }
/** * Add to all table a specifix prefix. * * @param db * the db * @param prefix * the prefix */ public static void renameTablesWithPrefix(SQLiteDatabase db, final String prefix) { Logger.info("MASSIVE TABLE RENAME OPERATION: ADD PREFIX " + prefix); query(db, null, QueryType.TABLE, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { sql = String.format("ALTER TABLE %s RENAME TO %s%s;", name, prefix, name); Logger.info(sql); db.execSQL(sql); } }); }
/** * Add to all table a specifix prefix. * * @param db * the db * @param prefix * the prefix */ public static void renameTablesWithPrefix(SQLiteDatabase db, final String prefix) { Logger.info("MASSIVE TABLE RENAME OPERATION: ADD PREFIX " + prefix); query(db, null, QueryType.TABLE, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { sql = String.format("ALTER TABLE %s RENAME TO %s%s;", name, prefix, name); Logger.info(sql); db.execSQL(sql); } }); }
/** * Drop all entity of particular type (table or index). If prefix is * specified, the drop operation is applied only to entity with prefix. * * @param db * the db * @param type * the type * @param prefix * the prefix */ private static void drop(SQLiteDatabase db, final QueryType type, String prefix) { String dropSQL = StringUtils.hasText(prefix) ? "name like '" + prefix + "' || '%'" : null; query(db, dropSQL, type, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { String drop = "DROP " + type.toString().toUpperCase() + " " + name; Logger.info(drop); db.execSQL(drop); } }); }
/** * Drop all entity of particular type (table or index). If prefix is * specified, the drop operation is applied only to entity with prefix. * * @param db * the db * @param type * the type * @param prefix * the prefix */ private static void drop(SQLiteDatabase db, final QueryType type, String prefix) { String dropSQL = StringUtils.hasText(prefix) ? "name like '" + prefix + "' || '%'" : null; query(db, dropSQL, type, new OnResultListener() { @Override public void onRow(SQLiteDatabase db, String name, String sql) { String drop = "DROP " + type.toString().toUpperCase() + " " + name; Logger.info(drop); db.execSQL(drop); } }); }