13a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesipackage com.xtremelabs.robolectric.shadows; 23a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi 33a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesiimport android.database.sqlite.SQLiteQueryBuilder; 422c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation; 522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements; 63f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.util.Join; 73a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi 8132d4264fdf1ae13da2115b1a4240ea98a936d88Michael Portuesi/** 9132d4264fdf1ae13da2115b1a4240ea98a936d88Michael Portuesi * Shadow for {@code SQLiteQueryBuilder}. 10132d4264fdf1ae13da2115b1a4240ea98a936d88Michael Portuesi */ 113a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi@Implements(SQLiteQueryBuilder.class) 123a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesipublic class ShadowSQLiteQueryBuilder { 133f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 143f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz @Implementation 153f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz public static String buildQueryString(boolean distinct, String tables, 163f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz String[] columns, String where, String groupBy, String having, 173f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz String orderBy, String limit) { 183f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 193f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz StringBuilder sb = new StringBuilder("SELECT "); 203f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 213f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (distinct) { 223f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append("DISTINCT "); 233f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (columns != null) { 2658b862ca990aee16b3ce609edad78998fe3fba12Phil Goodwin & Tyler Schultz sb.append(Join.join(", ", (Object[]) columns)); 273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } else { 283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append("*"); 293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 303f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 313f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append(" FROM "); 323f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append(tables); 333f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 343f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz conditionallyAppend(sb, " WHERE ", where); 353f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz conditionallyAppend(sb, " GROUP BY ", groupBy); 363f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz conditionallyAppend(sb, " HAVING ", having); 373f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz conditionallyAppend(sb, " ORDER BY ", orderBy); 383f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz conditionallyAppend(sb, " LIMIT ", limit); 393f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 403f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz return sb.toString(); 413f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 423f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 433f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz private static void conditionallyAppend(StringBuilder sb, String keyword, String value) { 443f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (value != null) { 453f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append(keyword); 463f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz sb.append(value); 473f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 483f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 493a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi 503a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi} 51