in src/main/java/com/univocity/parsers/common/AbstractWriter.java [225:267]
private void updateIndexesToWrite(CommonSettings<?> settings) {
FieldSelector selector = settings.getFieldSelector();
if (selector != null) {
if (headers != null && headers.length > 0) {
indexesToWrite = selector.getFieldIndexes(headers);
if (columnReorderingEnabled) { //column reordering enabled?
outputRow = new Object[indexesToWrite.length];
} else {
outputRow = new Object[headers.length];
}
} else if (!(selector instanceof FieldNameSelector) && !(selector instanceof ExcludeFieldNameSelector)) {
int rowLength = largestRowLength;
if ((selector instanceof FieldIndexSelector)) {
boolean gotLengthFromSelection = false;
for (Integer index : ((FieldIndexSelector) selector).get()) {
if (rowLength <= index) {
rowLength = index;
gotLengthFromSelection = true;
}
}
if (gotLengthFromSelection) {
rowLength++;
}
if (rowLength < largestRowLength) {
rowLength = largestRowLength;
}
} else {
rowLength = settings.getMaxColumns();
}
indexesToWrite = selector.getFieldIndexes(new String[rowLength]); //generates a dummy header array - only the indexes matter so we are good
if (columnReorderingEnabled) { //column reordering enabled?
outputRow = new Object[indexesToWrite.length];
} else {
outputRow = new Object[rowLength];
}
} else {
throw new IllegalStateException("Cannot select fields by name with no headers defined");
}
} else {
outputRow = null;
indexesToWrite = null;
}
}