Merge change 8227 into donut

* changes:
  Handle null in MatrixCursor.get*()
This commit is contained in:
Android (Google) Code Review
2009-07-22 13:27:26 -07:00
2 changed files with 33 additions and 16 deletions

View File

@ -214,53 +214,64 @@ public class MatrixCursor extends AbstractCursor {
// AbstractCursor implementation.
@Override
public int getCount() {
return rowCount;
}
@Override
public String[] getColumnNames() {
return columnNames;
}
@Override
public String getString(int column) {
return String.valueOf(get(column));
Object value = get(column);
if (value == null) return null;
return value.toString();
}
@Override
public short getShort(int column) {
Object value = get(column);
return (value instanceof String)
? Short.valueOf((String) value)
: ((Number) value).shortValue();
if (value == null) return 0;
if (value instanceof Number) return ((Number) value).shortValue();
return Short.parseShort(value.toString());
}
@Override
public int getInt(int column) {
Object value = get(column);
return (value instanceof String)
? Integer.valueOf((String) value)
: ((Number) value).intValue();
if (value == null) return 0;
if (value instanceof Number) return ((Number) value).intValue();
return Integer.parseInt(value.toString());
}
@Override
public long getLong(int column) {
Object value = get(column);
return (value instanceof String)
? Long.valueOf((String) value)
: ((Number) value).longValue();
if (value == null) return 0;
if (value instanceof Number) return ((Number) value).longValue();
return Long.parseLong(value.toString());
}
@Override
public float getFloat(int column) {
Object value = get(column);
return (value instanceof String)
? Float.valueOf((String) value)
: ((Number) value).floatValue();
if (value == null) return 0.0f;
if (value instanceof Number) return ((Number) value).floatValue();
return Float.parseFloat(value.toString());
}
@Override
public double getDouble(int column) {
Object value = get(column);
return (value instanceof String)
? Double.valueOf((String) value)
: ((Number) value).doubleValue();
if (value == null) return 0.0d;
if (value instanceof Number) return ((Number) value).doubleValue();
return Double.parseDouble(value.toString());
}
@Override
public boolean isNull(int column) {
return get(column) == null;
}

View File

@ -32,6 +32,12 @@ public class MatrixCursorTest extends TestCase {
cursor.newRow().add(null);
cursor.moveToNext();
assertTrue(cursor.isNull(0));
assertNull(cursor.getString(0));
assertEquals(0, cursor.getShort(0));
assertEquals(0, cursor.getInt(0));
assertEquals(0L, cursor.getLong(0));
assertEquals(0.0f, cursor.getFloat(0));
assertEquals(0.0d, cursor.getDouble(0));
}
public void testMatrixCursor() {