Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 import android.database.sqlite.SQLiteQueryBuilder;
      4 import com.xtremelabs.robolectric.internal.Implementation;
      5 import com.xtremelabs.robolectric.internal.Implements;
      6 import com.xtremelabs.robolectric.util.Join;
      7 
      8 /**
      9  * Shadow for {@code SQLiteQueryBuilder}.
     10  */
     11 @Implements(SQLiteQueryBuilder.class)
     12 public class ShadowSQLiteQueryBuilder {
     13 
     14     @Implementation
     15     public static String buildQueryString(boolean distinct, String tables,
     16                                           String[] columns, String where, String groupBy, String having,
     17                                           String orderBy, String limit) {
     18 
     19         StringBuilder sb = new StringBuilder("SELECT ");
     20 
     21         if (distinct) {
     22             sb.append("DISTINCT ");
     23         }
     24 
     25         if (columns != null) {
     26             sb.append(Join.join(", ", (Object[]) columns));
     27         } else {
     28             sb.append("*");
     29         }
     30 
     31         sb.append(" FROM ");
     32         sb.append(tables);
     33 
     34         conditionallyAppend(sb, " WHERE ", where);
     35         conditionallyAppend(sb, " GROUP BY ", groupBy);
     36         conditionallyAppend(sb, " HAVING ", having);
     37         conditionallyAppend(sb, " ORDER BY ", orderBy);
     38         conditionallyAppend(sb, " LIMIT ", limit);
     39 
     40         return sb.toString();
     41     }
     42 
     43     private static void conditionallyAppend(StringBuilder sb, String keyword, String value) {
     44         if (value != null) {
     45             sb.append(keyword);
     46             sb.append(value);
     47         }
     48     }
     49 
     50 }
     51