def mapValues()

in spark/common/src/main/scala/org/apache/sedona/sql/datasources/geopackage/transform/ValuesMapper.scala [27:79]


  def mapValues(metadata: PartitionOptions, rs: java.sql.ResultSet): Seq[Any] = {
    metadata.columns.map(column => {
      (column.dataType, metadata.tableType) match {
        case (GeoPackageType.INTEGER | GeoPackageType.INT, _) => rs.getInt(column.name)
        case (GeoPackageType.TINY_INT, _) => rs.getInt(column.name)
        case (GeoPackageType.SMALLINT, _) => rs.getInt(column.name)
        case (GeoPackageType.MEDIUMINT, _) => rs.getInt(column.name)
        case (GeoPackageType.FLOAT, _) => rs.getFloat(column.name)
        case (GeoPackageType.DOUBLE, _) => rs.getDouble(column.name)
        case (GeoPackageType.REAL, _) => rs.getDouble(column.name)
        case (startsWith: String, _) if startsWith.startsWith(GeoPackageType.TEXT) =>
          UTF8String.fromString(rs.getString(column.name))
        case (startsWith: String, TILES)
            if startsWith.startsWith(GeoPackageType.BLOB) && column.name == "tile_data" =>
          metadata.tile match {
            case Some(value) =>
              value.tileRowMetadata
                .map(tileRowMetadata => {
                  RasterUDT.serialize(
                    Image.readImageFile(rs.getBytes(column.name), value, tileRowMetadata))
                })
                .orNull
            case None => null
          }
        case (startsWith: String, _) if startsWith.startsWith(GeoPackageType.BLOB) =>
          rs.getBytes(column.name)
        case (GeoPackageType.BOOLEAN, _) =>
          rs.getBoolean(column.name)
        case (GeoPackageType.DATE, _) =>
          DataTypesTransformations.getDays(rs.getString(column.name))
        case (GeoPackageType.DATETIME, _) =>
          DataTypesTransformations.epoch(rs.getString(column.name)) * 1000
        case (GeoPackageType.POINT, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.LINESTRING, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.POLYGON, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.GEOMETRY, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.MULTIPOINT, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.MULTILINESTRING, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.MULTIPOLYGON, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case (GeoPackageType.GEOMETRYCOLLECTION, _) =>
          GeometryReader.extractWKB(rs.getBytes(column.name))
        case _ =>
          UTF8String.fromString(rs.getString(column.name))
      }
    })
  }