private Schema parseSchemaFromPrimitive()

in gobblin-iceberg/src/main/java/org/apache/gobblin/iceberg/Utils/TypeInfoToSchemaParser.java [161:219]


  private Schema parseSchemaFromPrimitive(PrimitiveTypeInfo primitiveTypeInfo) {
    Schema schema;
    switch (primitiveTypeInfo.getPrimitiveCategory()) {
      case LONG:
        schema = Schema.create(Type.LONG);
        break;
      case DATE:
        schema = Schema.create(Type.INT);
        schema.addProp("logicalType", "date");
        break;
      case TIMESTAMP:
        schema = Schema.create(Type.LONG);
        schema.addProp("logicalType", "timestamp-millis");
        break;
      case BINARY:
        schema = Schema.create(Type.BYTES);
        break;
      case BOOLEAN:
        schema = Schema.create(Type.BOOLEAN);
        break;
      case DOUBLE:
        schema = Schema.create(Type.DOUBLE);
        break;
      case DECIMAL:
        DecimalTypeInfo dti = (DecimalTypeInfo) primitiveTypeInfo;
        JsonNodeFactory factory = JsonNodeFactory.instance;
        schema = Schema.create(Type.BYTES);
        schema.addProp("logicalType", "decimal");
        schema.addProp("precision", factory.numberNode(dti.getPrecision()));
        schema.addProp("scale", factory.numberNode(dti.getScale()));
        break;
      case FLOAT:
        schema = Schema.create(Type.FLOAT);
        break;
      case BYTE:
        schema = Schema.create(Type.INT);
        schema.addProp("logicalType", "byte");
        break;
      case SHORT:
        schema = Schema.create(Type.INT);
        schema.addProp("logicalType", "short");
        break;
      case INT:
        schema = Schema.create(Type.INT);
        break;
      case CHAR:
      case STRING:
      case VARCHAR:
        schema = Schema.create(Type.STRING);
        break;
      case VOID:
        schema = Schema.create(Type.NULL);
        break;
      default:
        throw new UnsupportedOperationException(primitiveTypeInfo + " is not supported.");
    }

    return schema;
  }