in src/main/java/software/amazon/neptune/csv2rdf/NeptuneCsvHeader.java [101:140]
public static NeptuneCsvHeader parse(@NonNull CSVRecord record) {
Set<String> names = new HashSet<>();
Map<String, Integer> system = new HashMap<>();
List<NeptuneCsvUserDefinedColumn> user = new ArrayList<>();
for (int i = 0; i < record.size(); ++i) {
String name = record.get(i);
if (name == null) {
throw new Csv2RdfException("Empty column header encountered.");
}
String normalized = name.trim().toLowerCase();
if (SYSTEM_COLUMNS.contains(normalized)) {
system.put(normalized, i);
} else if (normalized.startsWith(SYSTEM_COLUMN_PREFIX)) {
throw new Csv2RdfException("Invalid system column encountered: " + normalized);
} else {
NeptuneCsvUserDefinedColumn column = NeptuneCsvUserDefinedColumn.parse(name);
column.setIndex(i);
user.add(column);
normalized = column.getName();
}
if (!names.add(normalized)) {
throw new Csv2RdfException("Found duplicate field: " + name);
}
}
NeptuneCsvHeader header;
if (system.get(FROM) != null || system.get(TO) != null) {
header = new NeptuneCsvEdgeHeader(system.get(ID), system.get(FROM), system.get(TO), system.get(LABEL),
user);
} else {
header = new NeptuneCsvVertexHeader(system.get(ID), system.get(LABEL), user);
}
return header;
}