Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 import android.database.DatabaseUtils;
      4 import android.database.sqlite.SQLiteProgram;
      5 import com.xtremelabs.robolectric.internal.Implementation;
      6 import com.xtremelabs.robolectric.internal.Implements;
      7 
      8 @Implements(DatabaseUtils.class)
      9 public class ShadowDatabaseUtils {
     10 
     11     @Implementation
     12     public static void bindObjectToProgram(SQLiteProgram prog, int index,
     13                                            Object value) {
     14         if (value == null) {
     15             prog.bindNull(index);
     16         } else if (value instanceof Double || value instanceof Float) {
     17             prog.bindDouble(index, ((Number) value).doubleValue());
     18         } else if (value instanceof Number) {
     19             prog.bindLong(index, ((Number) value).longValue());
     20         } else if (value instanceof Boolean) {
     21             Boolean bool = (Boolean) value;
     22             if (bool) {
     23                 prog.bindLong(index, 1);
     24             } else {
     25                 prog.bindLong(index, 0);
     26             }
     27         } else if (value instanceof byte[]) {
     28             prog.bindBlob(index, (byte[]) value);
     29         } else {
     30             prog.bindString(index, value.toString());
     31         }
     32     }
     33 
     34     @Implementation
     35     public static String sqlEscapeString( String value ) {
     36 		StringBuilder builder = new StringBuilder();
     37 
     38 		// SQLite quoting conventions are used.
     39 		value = value.replaceAll( "'", "''" );
     40 		builder.append( "'" ).append( value ).append( "'" );
     41 
     42 		return builder.toString();
     43 	}
     44 }
     45