static ParentValueContainer getConversionContainer()

in parquet-avro/src/main/java/org/apache/parquet/avro/ParentValueContainer.java [126:222]


  static ParentValueContainer getConversionContainer(
      final ParentValueContainer parent, final Conversion<?> conversion, final Schema schema) {
    if (conversion == null) {
      return parent;
    }

    final LogicalType logicalType = schema.getLogicalType();

    switch (schema.getType()) {
      case STRING:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromCharSequence((CharSequence) value, schema, logicalType));
          }
        };
      case BOOLEAN:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion) {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromBoolean((Boolean) value, schema, logicalType));
          }
        };
      case INT:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion) {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromInt((Integer) value, schema, logicalType));
          }
        };
      case LONG:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion) {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromLong((Long) value, schema, logicalType));
          }
        };
      case FLOAT:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion) {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromFloat((Float) value, schema, logicalType));
          }
        };
      case DOUBLE:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion) {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromDouble((Double) value, schema, logicalType));
          }
        };
      case BYTES:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromBytes((ByteBuffer) value, schema, logicalType));
          }
        };
      case FIXED:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromFixed((GenericData.Fixed) value, schema, logicalType));
          }
        };
      case RECORD:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromRecord((IndexedRecord) value, schema, logicalType));
          }
        };
      case ARRAY:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromArray((Collection<?>) value, schema, logicalType));
          }
        };
      case MAP:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromMap((Map<?, ?>) value, schema, logicalType));
          }
        };
      case ENUM:
        return new ParentValueContainer() {
          @Override
          public void add(Object value) {
            parent.add(conversion.fromEnumSymbol((GenericEnumSymbol) value, schema, logicalType));
          }
        };
      default:
        return new LogicalTypePrimitiveContainer(parent, schema, conversion);
    }
  }