if (row.isNull(i)) {
return null;
}
DataType type = columns.getType(i);
if (type.isCollection()) {
List<DataType> collectionTypes = type.getTypeArguments();
if (collectionTypes.size() == 2) {
return row.getMap(i, collectionTypes.get(0).asJavaClass(), collectionTypes.get(1).asJavaClass());
}
if (type.equals(DataType.list(collectionTypes.get(0)))) {
return row.getList(i, collectionTypes.get(0).asJavaClass());
}
if (type.equals(DataType.set(collectionTypes.get(0)))) {
return row.getSet(i, collectionTypes.get(0).asJavaClass());
}
throw new IllegalStateException("Unknown Collection type encountered. Valid collections are Set, List and Map.");
}
if (type.equals(DataType.text()) || type.equals(DataType.ascii()) || type.equals(DataType.varchar())) {
return row.getString(i);
}
if (type.equals(DataType.cint()) || type.equals(DataType.varint())) {
return new Integer(row.getInt(i));
}
if (type.equals(DataType.cdouble())) {
return new Double(row.getDouble(i));
}
if (type.equals(DataType.bigint()) || type.equals(DataType.counter())) {
return new Long(row.getLong(i));
}
if (type.equals(DataType.cfloat())) {
return new Float(row.getFloat(i));
}
if (type.equals(DataType.decimal())) {
return row.getDecimal(i);
}
if (type.equals(DataType.cboolean())) {
return new Boolean(row.getBool(i));
}
if (type.equals(DataType.timestamp())) {
return row.getDate(i);
}
if (type.equals(DataType.blob())) {
return row.getBytes(i);
}
if (type.equals(DataType.inet())) {
return row.getInet(i);
}
if (type.equals(DataType.uuid()) || type.equals(DataType.timeuuid())) {
return row.getUUID(i);
}
return row.getBytesUnsafe(i);
}