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

View File

@ -32,6 +32,12 @@ public class MatrixCursorTest extends TestCase {
cursor.newRow().add(null); cursor.newRow().add(null);
cursor.moveToNext(); cursor.moveToNext();
assertTrue(cursor.isNull(0)); 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() { public void testMatrixCursor() {