static Converter newConverter()

in parquet-pig/src/main/java/org/apache/parquet/pig/convert/TupleConverter.java [105:149]


  static Converter newConverter(FieldSchema pigField, Type type, final ParentValueContainer parent, boolean elephantBirdCompatible, boolean columnIndexAccess) {
    try {
      switch (pigField.type) {
      case DataType.BAG:
        return new BagConverter(type.asGroupType(), pigField, parent, elephantBirdCompatible, columnIndexAccess);
      case DataType.MAP:
        return new MapConverter(type.asGroupType(), pigField, parent, elephantBirdCompatible, columnIndexAccess);
      case DataType.TUPLE:
        return new TupleConverter(type.asGroupType(), pigField.schema, elephantBirdCompatible, columnIndexAccess) {
          @Override
          public void end() {
            super.end();
            parent.add(this.currentTuple);
          }
        };
      case DataType.CHARARRAY:
          //If the orignal type isn't a string, we don't want to use the dictionary because
          //a custom implementation will be needed for each type.  Just default to no dictionary.
        return new FieldStringConverter(parent, type.getLogicalTypeAnnotation() instanceof LogicalTypeAnnotation.StringLogicalTypeAnnotation);
      case DataType.BYTEARRAY:
        return new FieldByteArrayConverter(parent);
      case DataType.INTEGER:
        return new FieldIntegerConverter(parent);
      case DataType.BOOLEAN:
        if (elephantBirdCompatible) {
          return new FieldIntegerConverter(parent);
        } else {
          return new FieldBooleanConverter(parent);
        }
      case DataType.FLOAT:
        return new FieldFloatConverter(parent);
      case DataType.DOUBLE:
        return new FieldDoubleConverter(parent);
      case DataType.LONG:
        return new FieldLongConverter(parent);
      case DataType.BIGDECIMAL:
        return new FieldBigDecimalConverter(type, parent);
      default:
        throw new TupleConversionException("unsupported pig type: " + pigField);
      }
    } catch (FrontendException | RuntimeException e) {
      throw new TupleConversionException(
          "error while preparing converter for:\n" + pigField + "\n" + type, e);
    }
  }