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