static ParentValueContainer getConversionContainer()

in parquet-avro/src/main/java/org/apache/parquet/avro/ParentValueContainer.java [128:237]


  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);
    }
  }