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