protected Object getArray()

in core/src/main/java/org/apache/calcite/avatica/util/ArrayImpl.java [97:163]


  protected Object getArray(List<?> list, AbstractCursor.ArrayAccessor arrayAccessor)
      throws SQLException {
    int i = 0;
    switch (arrayAccessor.componentType.rep) {
    case PRIMITIVE_DOUBLE:
      final double[] doubles = new double[list.size()];
      for (double v : (List<Double>) list) {
        doubles[i++] = v;
      }
      return doubles;
    case PRIMITIVE_FLOAT:
      final float[] floats = new float[list.size()];
      for (float v : (List<Float>) list) {
        floats[i++] = v;
      }
      return floats;
    case PRIMITIVE_INT:
      final int[] ints = new int[list.size()];
      for (int v : (List<Integer>) list) {
        ints[i++] = v;
      }
      return ints;
    case PRIMITIVE_LONG:
      final long[] longs = new long[list.size()];
      for (long v : (List<Long>) list) {
        longs[i++] = v;
      }
      return longs;
    case PRIMITIVE_SHORT:
      final short[] shorts = new short[list.size()];
      for (short v : (List<Short>) list) {
        shorts[i++] = v;
      }
      return shorts;
    case PRIMITIVE_BOOLEAN:
      final boolean[] booleans = new boolean[list.size()];
      for (boolean v : (List<Boolean>) list) {
        booleans[i++] = v;
      }
      return booleans;
    case PRIMITIVE_BYTE:
      final byte[] bytes = new byte[list.size()];
      for (byte v : (List<Byte>) list) {
        bytes[i++] = v;
      }
      return bytes;
    case PRIMITIVE_CHAR:
      final char[] chars = new char[list.size()];
      for (char v : (List<Character>) list) {
        chars[i++] = v;
      }
      return chars;
    default:
      // fall through
    }
    final Object[] objects = list.toArray();
    switch (arrayAccessor.componentType.id) {
    case Types.ARRAY:
      final AbstractCursor.ArrayAccessor componentAccessor =
          (AbstractCursor.ArrayAccessor) arrayAccessor.componentAccessor;
      for (i = 0; i < objects.length; i++) {
        // Convert the element into a Object[] or primitive array, recurse!
        objects[i] = getArrayData(objects[i], componentAccessor);
      }
    }
    return objects;
  }