Merge change 8227 into donut
* changes: Handle null in MatrixCursor.get*()
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
Reference in New Issue
Block a user