@Override public Converter getConverter(int fieldIndex) { // get the real converter from the delegate Converter delegateConverter = checkNotNull(delegate.getConverter(fieldIndex), "delegate converter"); // determine the indexFieldPath for the converter proxy we're about to make, which is // this converter's path + the requested fieldIndex List<Integer> newIndexFieldPath = new ArrayList<Integer>(indexFieldPath.size() + 1); newIndexFieldPath.addAll(indexFieldPath); newIndexFieldPath.add(fieldIndex); if (delegateConverter.isPrimitive()) { PrimitiveColumnIO columnIO = getColumnIO(newIndexFieldPath); ColumnPath columnPath = ColumnPath.get(columnIO.getColumnDescriptor().getPath()); ValueInspector[] valueInspectors = getValueInspectors(columnPath); return new FilteringPrimitiveConverter(delegateConverter.asPrimitiveConverter(), valueInspectors); } else { return new FilteringGroupConverter(delegateConverter.asGroupConverter(), newIndexFieldPath, valueInspectorsByColumn, columnIOsByIndexFieldPath); } }
@Override public Converter getConverter(int fieldIndex) { // get the real converter from the delegate Converter delegateConverter = checkNotNull(delegate.getConverter(fieldIndex), "delegate converter"); // determine the indexFieldPath for the converter proxy we're about to make, which is // this converter's path + the requested fieldIndex List<Integer> newIndexFieldPath = new ArrayList<Integer>(indexFieldPath.size() + 1); newIndexFieldPath.addAll(indexFieldPath); newIndexFieldPath.add(fieldIndex); if (delegateConverter.isPrimitive()) { PrimitiveColumnIO columnIO = getColumnIO(newIndexFieldPath); ColumnPath columnPath = ColumnPath.get(columnIO.getColumnDescriptor().getPath()); ValueInspector[] valueInspectors = getValueInspectors(columnPath); return new FilteringPrimitiveConverter(delegateConverter.asPrimitiveConverter(), valueInspectors); } else { return new FilteringGroupConverter(delegateConverter.asGroupConverter(), newIndexFieldPath, valueInspectorsByColumn, columnIOsByIndexFieldPath); } }