in measure/src/main/scala/org/apache/griffin/measure/configuration/dqdefinition/DQConfig.scala [72:112]
def getValidSinkTypes: Seq[SinkType] = SinkType.validSinkTypes(sinks)
def validate(): Unit = {
assert(StringUtils.isNotBlank(name), "dq config name should not be blank")
assert(StringUtils.isNotBlank(procType), "process.type should not be blank")
assert(dataSources != null, "data.sources should not be null")
getDataSources.foreach(_.validate())
if (measures != null && measures.nonEmpty) {
measures.foreach(_.validate())
val repeatedMeasures = measures
.map(_.getName)
.groupBy(x => x)
.mapValues(_.size)
.filter(_._2 > 1)
.keys
assert(
repeatedMeasures.isEmpty,
"Measure names must be unique. " +
s"Duplicate Measures names ['${repeatedMeasures.mkString("', '")}'] were found.")
val invalidMeasureSources = measures
.map(_.getDataSource)
.map(dataSource => (dataSource, getDataSources.exists(_.getName.matches(dataSource))))
.filterNot(_._2)
.map(_._1)
assert(
invalidMeasureSources.isEmpty,
"Measure source(s) undefined." +
s" Unknown source(s) ['${invalidMeasureSources.mkString("', '")}'] were found.")
} else if (evaluateRule != null) {
evaluateRule.validate()
} else {
assert(
assertion = false,
"Either 'measure' or 'evaluate.rule' must be defined in the Application Config.")
}
}