Skip to content

Commit

Permalink
finos#1296 SchemaMapper improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
junaidzm13 committed Apr 24, 2024
1 parent af4772c commit d6660ca
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions vuu/src/main/scala/org/finos/vuu/util/schema/SchemaMapper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,13 @@ object SchemaMapper {

private def canSupportRequiredTypeConversions(extFieldToColMap: Map[SchemaField, Column],
container: TypeConverterContainer): ValidationError = {
val error = extFieldToColMap
val errorStr = extFieldToColMap
.flatMap({ case (extF, col) => Seq((extF.dataType, col.dataType), (col.dataType, extF.dataType)) })
.filter({ case (t1, t2) => !TypeUtils.areTypesEqual(t1, t2) && container.typeConverter(t1, t2).isEmpty })
.map({ case (t1, t2) => s"[ ${TypeConverter.buildConverterName(t1, t2)} ]" })
.mkString("\n")

Option(error).filter(_.nonEmpty).map("Following `TypeConverter` are required but not found:\n" + _)
Option(errorStr).filter(_.nonEmpty).map("Following `TypeConverter` are required but not found:\n" + _)
}

private def extFieldToColMap(extSchema: ExternalEntitySchema, columns: Array[Column], fieldsMap: Map[String, String]): Map[SchemaField, Column] = {
Expand All @@ -140,11 +140,11 @@ private class SchemaMapperImpl(private val externalSchema: ExternalEntitySchema,
override def toInternalRowMap(externalDto: Product): Map[String, Any] = toInternalRowMap(externalDto.productIterator.toArray)

private def toInternalRowMap(externalValues: Array[_]): Map[String, Any] = {
externalFieldByColumnName.map({case (_, extField) =>
externalFieldByColumnName.map({ case (_, extField) =>
val extFieldValue = externalValues(extField.index)
val extFieldDataType = extField.dataType.asInstanceOf[Class[Any]]
val column = tableColumn(extField.name).get
// @todo improve this type casting if possible?
val columnValue = typeConverterContainer.convert(extFieldValue, extField.dataType.asInstanceOf[Class[Any]], column.dataType).get
val columnValue = typeConverterContainer.convert(extFieldValue, extFieldDataType, column.dataType).get
(column.name, columnValue)
})
}
Expand Down

0 comments on commit d6660ca

Please sign in to comment.