private List readIntoBuffer()

in vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java [716:848]


  private List<ArrowBuf> readIntoBuffer(
      BufferAllocator allocator,
      BufferType bufferType,
      MinorType type,
      int count,
      List<Integer> variadicBufferIndices)
      throws IOException {
    ArrowBuf buf;

    BufferHelper helper = new BufferHelper();
    BufferReader reader;

    if (bufferType.equals(VALIDITY)) {
      reader = helper.BIT;
    } else if (bufferType.equals(OFFSET) || bufferType.equals(SIZE)) {
      if (type == MinorType.LARGELIST
          || type == MinorType.LARGEVARCHAR
          || type == MinorType.LARGEVARBINARY
          || type == MinorType.LARGELISTVIEW) {
        reader = helper.INT8;
      } else {
        reader = helper.INT4;
      }
    } else if (bufferType.equals(TYPE)) {
      reader = helper.INT1;
    } else if (bufferType.equals(DATA)) {
      switch (type) {
        case BIT:
          reader = helper.BIT;
          break;
        case TINYINT:
          reader = helper.INT1;
          break;
        case SMALLINT:
          reader = helper.INT2;
          break;
        case INT:
          reader = helper.INT4;
          break;
        case BIGINT:
          reader = helper.INT8;
          break;
        case UINT1:
          reader = helper.UINT1;
          break;
        case UINT2:
          reader = helper.UINT2;
          break;
        case UINT4:
          reader = helper.UINT4;
          break;
        case UINT8:
          reader = helper.UINT8;
          break;
        case FLOAT4:
          reader = helper.FLOAT4;
          break;
        case FLOAT8:
          reader = helper.FLOAT8;
          break;
        case DECIMAL:
          reader = helper.DECIMAL;
          break;
        case DECIMAL256:
          reader = helper.DECIMAL256;
          break;
        case FIXEDSIZEBINARY:
          reader = helper.FIXEDSIZEBINARY;
          break;
        case VARCHAR:
          reader = helper.VARCHAR;
          break;
        case LARGEVARCHAR:
          reader = helper.LARGEVARCHAR;
          break;
        case VARBINARY:
          reader = helper.VARBINARY;
          break;
        case LARGEVARBINARY:
          reader = helper.LARGEVARBINARY;
          break;
        case DATEDAY:
          reader = helper.INT4;
          break;
        case DATEMILLI:
          reader = helper.INT8;
          break;
        case TIMESEC:
        case TIMEMILLI:
          reader = helper.INT4;
          break;
        case TIMEMICRO:
        case TIMENANO:
          reader = helper.INT8;
          break;
        case TIMESTAMPNANO:
        case TIMESTAMPMICRO:
        case TIMESTAMPMILLI:
        case TIMESTAMPSEC:
        case TIMESTAMPNANOTZ:
        case TIMESTAMPMICROTZ:
        case TIMESTAMPMILLITZ:
        case TIMESTAMPSECTZ:
          reader = helper.INT8;
          break;
        case INTERVALYEAR:
          reader = helper.INT4;
          break;
        case INTERVALDAY:
          reader = helper.DAY_MILLIS;
          break;
        case INTERVALMONTHDAYNANO:
          reader = helper.MONTH_DAY_NANOS;
          break;
        case DURATION:
          reader = helper.INT8;
          break;
        default:
          throw new UnsupportedOperationException("Cannot read array of type " + type);
      }
    } else if (bufferType.equals(VIEWS)) {
      return Collections.singletonList(
          readViewBuffers(allocator, count, variadicBufferIndices, type));
    } else if (bufferType.equals(VARIADIC_DATA_BUFFERS)) {
      return readVariadicBuffers(allocator, variadicBufferIndices.size());
    } else {
      throw new InvalidArrowFileException("Unrecognized buffer type " + bufferType);
    }

    buf = reader.readBuffer(allocator, count);
    Preconditions.checkNotNull(buf);
    return Collections.singletonList(buf);
  }