in baremaps-core/src/main/java/org/apache/baremaps/geocoder/GeonamesReader.java [37:73]
public Stream<GeonamesRecord> stream(InputStream inputStream) throws IOException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = CsvSchema.builder()
.addColumn("geonameid")
.addColumn("name")
.addColumn("asciiname")
.addColumn("alternatenames")
.addColumn("latitude")
.addColumn("longitude")
.addColumn("featureClass")
.addColumn("featureCode")
.addColumn("countryCode")
.addColumn("cc2")
.addColumn("admin1Code")
.addColumn("admin2Code")
.addColumn("admin3Code")
.addColumn("admin4Code")
.addColumn("population")
.addColumn("elevation")
.addColumn("dem")
.addColumn("timezone")
.addColumn("modificationDate")
.build()
.withColumnSeparator('\t')
.withoutQuoteChar();
var reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
MappingIterator<GeonamesRecord> recordIterator = mapper
.readerFor(GeonamesRecord.class)
.with(schema)
.readValues(reader);
Spliterator<GeonamesRecord> recordSpliterator =
Spliterators.spliteratorUnknownSize(recordIterator, 0);
return StreamSupport.stream(recordSpliterator, false);
}