public Type field(NestedField field) {
Type.Repetition repetition = field.isOptional() ?
Type.Repetition.OPTIONAL : Type.Repetition.REQUIRED;
int id = field.fieldId();
String name = field.name();
if (field.type().isPrimitiveType()) {
return primitive(field.type().asPrimitiveType(), repetition, id, name);
} else {
NestedType nested = field.type().asNestedType();
if (nested.isStructType()) {
return struct(nested.asStructType(), repetition, id, name);
} else if (nested.isMapType()) {
return map(nested.asMapType(), repetition, id, name);
} else if (nested.isListType()) {
return list(nested.asListType(), repetition, id, name);
}
throw new UnsupportedOperationException("Can't convert unknown type: " + nested);
}
}