@Override
protected ObjectAdapter setFromDBColumn(final Results results, final String columnName, final ObjectAssociation field) {
ObjectAdapter restoredValue;
final Class<?> correspondingClass = field.getSpecification().getCorrespondingClass();
Object resultObject = results.getObject(columnName);
if (resultObject == null) {
return null;
}
if (resultObject.getClass() != correspondingClass) {
if (checkIfIsClass(correspondingClass, Integer.class, int.class)) {
resultObject = results.getInt(columnName);
} else if (checkIfIsClass(correspondingClass, Double.class, double.class)) {
resultObject = results.getDouble(columnName);
} else if (checkIfIsClass(correspondingClass, Float.class, float.class)) {
resultObject = results.getFloat(columnName);
} else if (checkIfIsClass(correspondingClass, Short.class, short.class)) {
resultObject = results.getShort(columnName);
} else if (checkIfIsClass(correspondingClass, Long.class, long.class)) {
resultObject = results.getLong(columnName);
} else if (checkIfIsClass(correspondingClass, Boolean.class, boolean.class)) {
resultObject = results.getBoolean(columnName);
} else {
throw new IsisApplicationException("Unhandled type: " + correspondingClass.getCanonicalName());
}
}
restoredValue = IsisContext.getPersistenceSession().getAdapterManager().adapterFor(resultObject);
return restoredValue;
}