in auditlog/src/main/scala/com/gerritforge/analytics/auditlog/spark/dataframe/ops/DataFrameOps.scala [37:54]
private def hasColumn(path: String) = Try(dataFrame(path)).isSuccess
private def ifExistThenGetOrNull(column: String, targetColumn: => Column) =
if (hasColumn(column)) targetColumn else lit(null)
def hydrateWithUserIdentifierColumn(
userIdentifierCol: String,
gerritAccounts: GerritUserIdentifiers
): DataFrame = {
def extractIdentifier: UserDefinedFunction =
udf((who: Int) => gerritAccounts.getIdentifier(who))
dataFrame.withColumn(
userIdentifierCol,
ifExistThenGetOrNull("who", extractIdentifier(col("who")))
)
}