
com.xtremelabs.robolectric.util.SQLite Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of robolectric Show documentation
Show all versions of robolectric Show documentation
An alternative Android testing framework.
package com.xtremelabs.robolectric.util;
import android.content.ContentValues;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
/**
* SQL utility methods to support the database-related shadows, such as
* {@code ShadowSQLiteDatabase} and {@code ShadowSQLiteCursor}.
*/
public class SQLite {
/**
* Create a SQL INSERT string. Returned values are then bound via
* JDBC to facilitate various data types.
*
* @param table table name
* @param values column name/value pairs
* @return insert string
*/
public static SQLStringAndBindings buildInsertString(String table, ContentValues values) {
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO ");
sb.append(table);
sb.append(" ");
SQLStringAndBindings columnsValueClause = buildColumnValuesClause(values);
sb.append(columnsValueClause.sql);
sb.append(";");
return new SQLStringAndBindings(sb.toString(), columnsValueClause.columnValues);
}
/**
* Create a SQL UPDATE string. Returned values are then bound via
* JDBC to facilitate various data types.
*
* @param table table name
* @param values column name/value pairs
* @param whereClause SQL where clause fragment
* @param whereArgs Array of substitutions for args in whereClause
* @return update string
*/
public static SQLStringAndBindings buildUpdateString(String table, ContentValues values, String whereClause, String[] whereArgs) {
StringBuilder sb = new StringBuilder();
sb.append("UPDATE ");
sb.append(table);
sb.append(" SET ");
SQLStringAndBindings columnAssignmentsClause = buildColumnAssignmentsClause(values);
sb.append(columnAssignmentsClause.sql);
if (whereClause != null) {
String where = whereClause;
if (whereArgs != null) {
where = buildWhereClause(whereClause, whereArgs);
}
sb.append(" WHERE ");
sb.append(where);
}
sb.append(";");
return new SQLStringAndBindings(sb.toString(), columnAssignmentsClause.columnValues);
}
/**
* Create a SQL DELETE string.
*
* @param table table name
* @param whereClause SQL where clause fragment
* @param whereArgs Array of substitutions for args in whereClause
* @return delete string
*/
public static String buildDeleteString(String table, String whereClause, String[] whereArgs) {
StringBuilder sb = new StringBuilder();
sb.append("DELETE FROM ");
sb.append(table);
if (whereClause != null) {
String where = whereClause;
if (whereArgs != null) {
where = buildWhereClause(whereClause, whereArgs);
}
sb.append(" WHERE ");
sb.append(where);
}
sb.append(";");
return sb.toString();
}
/**
* Build a WHERE clause used in SELECT, UPDATE and DELETE statements.
*
* @param selection SQL where clause fragment
* @param selectionArgs Array of substitutions for args in selection
* @return where clause
*/
public static String buildWhereClause(String selection, String[] selectionArgs) {
String whereClause = selection;
for (String selectionArg : selectionArgs) {
whereClause = whereClause.replaceFirst("\\?", "'" + selectionArg + "'");
}
return whereClause;
}
/**
* Build the '(columns...) VALUES (values...)' clause used in INSERT
* statements.
*
* @param values column name/value pairs
* @return SQLStringAndBindings
*/
public static SQLStringAndBindings buildColumnValuesClause(ContentValues values) {
StringBuilder clause = new StringBuilder("(");
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy