diff --git a/README.md b/README.md index 531d3d8..7ab953e 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ It is sufficient to add the two following Gradle dependencies to the application ```gradle dependencies { - implementation 'it.mscuttari.kaoldb:core:1.0.5' - annotationProcessor 'it.mscuttari.kaoldb:annotation-processor:1.0.5' + implementation 'it.mscuttari.kaoldb:core:1.0.6' + annotationProcessor 'it.mscuttari.kaoldb:annotation-processor:1.0.6' } ``` diff --git a/api/src/main/java/it/mscuttari/kaoldb/schema/Column.java b/api/src/main/java/it/mscuttari/kaoldb/schema/Column.java index 997b9ae..2ddfe98 100644 --- a/api/src/main/java/it/mscuttari/kaoldb/schema/Column.java +++ b/api/src/main/java/it/mscuttari/kaoldb/schema/Column.java @@ -101,7 +101,9 @@ private static String escape(String str) { * @return column type */ public static String classToDbType(Class clazz) { - if (clazz.equals(int.class) || clazz.equals(Integer.class)) { + if (clazz.equals(boolean.class) || clazz.equals(Boolean.class)) { + return "INTEGER"; + } else if (clazz.equals(int.class) || clazz.equals(Integer.class)) { return "INTEGER"; } else if (clazz.equals(long.class) || clazz.equals(Long.class)) { return "INTEGER"; diff --git a/implementation/src/main/java/it/mscuttari/kaoldb/mapping/BaseColumnObject.java b/implementation/src/main/java/it/mscuttari/kaoldb/mapping/BaseColumnObject.java index 6d10163..3afd862 100644 --- a/implementation/src/main/java/it/mscuttari/kaoldb/mapping/BaseColumnObject.java +++ b/implementation/src/main/java/it/mscuttari/kaoldb/mapping/BaseColumnObject.java @@ -183,13 +183,17 @@ public final void waitUntilMapped() { */ @SuppressWarnings("unchecked") public final Object parseCursor(Cursor c, String alias) { - int columnIndex = c.getColumnIndexOrThrow(alias + "." + name); + String columnName = alias + "." + name; + int columnIndex = c.getColumnIndexOrThrow(columnName); int columnType = c.getType(columnIndex); Object value = null; if (columnType == Cursor.FIELD_TYPE_INTEGER) { - if (type.equals(Integer.class) || type.equals(int.class)) { + if (type.equals(Boolean.class) || type.equals(boolean.class)) { + value = c.getInt(columnIndex) != 0; + + } else if (type.equals(Integer.class) || type.equals(int.class)) { value = c.getInt(columnIndex); } else if (type.equals(Long.class) || type.equals(long.class)) { @@ -203,7 +207,7 @@ public final Object parseCursor(Cursor c, String alias) { ((Calendar) value).setTimeInMillis(c.getLong(columnIndex)); } else { - throw new PojoException("Incompatible data type: expected " + type.getSimpleName() + ", found Integer"); + throw new PojoException("Incompatible data type for column '" + columnName + "': expected " + type.getSimpleName() + ", found Integer"); } } else if (columnType == Cursor.FIELD_TYPE_FLOAT) { @@ -214,7 +218,7 @@ public final Object parseCursor(Cursor c, String alias) { value = c.getDouble(columnIndex); } else { - throw new PojoException("Incompatible data type: expected " + type.getSimpleName() + ", found Float"); + throw new PojoException("Incompatible data type for column '" + columnName + "': expected " + type.getSimpleName() + ", found Float"); } } else if (columnType == Cursor.FIELD_TYPE_STRING) { @@ -225,7 +229,7 @@ public final Object parseCursor(Cursor c, String alias) { value = c.getString(columnIndex); } else { - throw new PojoException("Incompatible data type: expected " + type.getSimpleName() + ", found String"); + throw new PojoException("Incompatible data type for column '" + columnName + "': expected " + type.getSimpleName() + ", found String"); } } diff --git a/release-bintray.gradle b/release-bintray.gradle index ea12947..67314f2 100644 --- a/release-bintray.gradle +++ b/release-bintray.gradle @@ -19,7 +19,7 @@ **/ ext { bintrayRepo = 'KaolDB' - libraryVersion = '1.0.5' + libraryVersion = '1.0.6' publishedGroupId = 'it.mscuttari.kaoldb' libraryName = 'KaolDB'