From 4eaf9fc83c035e03eda5ddbf25ef9bbf1adeb63d Mon Sep 17 00:00:00 2001 From: adeet1 Date: Thu, 28 Mar 2024 20:22:10 +0000 Subject: [PATCH] Implement methods instead of lazy vals --- .../parquet/ParquetConverterFactory.scala | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/geomesa-convert/geomesa-convert-parquet/src/main/scala/org/locationtech/geomesa/convert/parquet/ParquetConverterFactory.scala b/geomesa-convert/geomesa-convert-parquet/src/main/scala/org/locationtech/geomesa/convert/parquet/ParquetConverterFactory.scala index 6a8fc8702c14..66450489c0eb 100644 --- a/geomesa-convert/geomesa-convert-parquet/src/main/scala/org/locationtech/geomesa/convert/parquet/ParquetConverterFactory.scala +++ b/geomesa-convert/geomesa-convert-parquet/src/main/scala/org/locationtech/geomesa/convert/parquet/ParquetConverterFactory.scala @@ -107,38 +107,39 @@ class ParquetConverterFactory } private def computeTransformFunction(name: String, path: String, descriptor: AttributeDescriptor, schemaVersion: Int): String = { - // Make both expression vals lazy so that we only compute the one we need to, once we determine what the schema version is - lazy val expressionV2 = ObjectType.selectType(descriptor) match { - case Seq(ObjectType.GEOMETRY, ObjectType.POINT) => s"point(avroPath($$0, '/$name'))" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOINT) => s"multipoint(avroPath($$0, '/$name'))" - case Seq(ObjectType.GEOMETRY, ObjectType.LINESTRING) => s"linestring(avroPath($$0, '/$name'))" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTILINESTRING) => s"multilinestring(avroPath($$0, '/$name'))" - case Seq(ObjectType.GEOMETRY, ObjectType.POLYGON) => s"polygon(avroPath($$0, '/$name'))" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOLYGON) => s"multipolygon(avroPath($$0, '/$name'))" - case Seq(ObjectType.UUID) => s"avroBinaryUuid($path)" - case _ => path + def expressionV2(name: String, path: String, descriptor: AttributeDescriptor): String = { + ObjectType.selectType(descriptor) match { + case Seq(ObjectType.GEOMETRY, ObjectType.POINT) => s"point(avroPath($$0, '/$name'))" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOINT) => s"multipoint(avroPath($$0, '/$name'))" + case Seq(ObjectType.GEOMETRY, ObjectType.LINESTRING) => s"linestring(avroPath($$0, '/$name'))" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTILINESTRING) => s"multilinestring(avroPath($$0, '/$name'))" + case Seq(ObjectType.GEOMETRY, ObjectType.POLYGON) => s"polygon(avroPath($$0, '/$name'))" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOLYGON) => s"multipolygon(avroPath($$0, '/$name'))" + case Seq(ObjectType.UUID) => s"avroBinaryUuid($path)" + case _ => path + } } - lazy val expressionV0V1 = ObjectType.selectType(descriptor) match { - case Seq(ObjectType.GEOMETRY, ObjectType.POINT) => s"parquetPoint($$0, '/$name')" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOINT) => s"parquetMultiPoint($$0, '/$name')" - case Seq(ObjectType.GEOMETRY, ObjectType.LINESTRING) => s"parquetLineString($$0, '/$name')" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTILINESTRING) => s"parquetMultiLineString($$0, '/$name')" - case Seq(ObjectType.GEOMETRY, ObjectType.POLYGON) => s"parquetPolygon($$0, '/$name')" - case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOLYGON) => s"parquetMultiPolygon($$0, '/$name')" - case Seq(ObjectType.UUID) => s"avroBinaryUuid($path)" - case _ => path + def expressionV0V1(name: String, path: String, descriptor: AttributeDescriptor): String = { + ObjectType.selectType(descriptor) match { + case Seq(ObjectType.GEOMETRY, ObjectType.POINT) => s"parquetPoint($$0, '/$name')" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOINT) => s"parquetMultiPoint($$0, '/$name')" + case Seq(ObjectType.GEOMETRY, ObjectType.LINESTRING) => s"parquetLineString($$0, '/$name')" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTILINESTRING) => s"parquetMultiLineString($$0, '/$name')" + case Seq(ObjectType.GEOMETRY, ObjectType.POLYGON) => s"parquetPolygon($$0, '/$name')" + case Seq(ObjectType.GEOMETRY, ObjectType.MULTIPOLYGON) => s"parquetMultiPolygon($$0, '/$name')" + case Seq(ObjectType.UUID) => s"avroBinaryUuid($path)" + case _ => path + } } schemaVersion match { - case 2 => expressionV2 - case 1 => expressionV0V1 - case 0 => expressionV0V1 + case 2 => expressionV2(name, path, descriptor) + case 1 => expressionV0V1(name, path, descriptor) + case 0 => expressionV0V1(name, path, descriptor) case v => throw new IllegalArgumentException(s"Unknown SimpleFeatureParquetSchema version: $v") } } - - } object ParquetConverterFactory {