UniqueItems

open class UniqueItems @JvmOverloads constructor(emitAllRepetitions: Boolean = true, val treatNullAsUnique: Boolean = true, code: String = DEFAULT_CODE, severity: ValidationIssueSeverity = ValidationIssueSeverity.Error) : UniqueItemsBy<Any?, Any?> (source)

Validation that ensures that a value does not contain repeated items. Values of type Collection, Array (including variants), and Table are supported.

Depending on emitAllRepetitions, an issue with the provided code (defaults to DEFAULT_CODE) is emitted for each pair of repeated items (when true), or only for the first found repetition (when false). emitAllRepetitions defaults to true.

Each emitted issue has a firstIndex and secondIndex data properties with the two indices of the conflicting items. When running this validation on a table, issues will also contain firstRowId and secondRowId data properties with the ids of the conflicting table rows.

Depending on treatNullAsUnique, null values can be considered unique. I.e. when true (the default), the value listOf(null, null) is considered to not contain repeated items.

This validation is not stateful and depends on all descendants of the value.

Parameters

emitAllRepetitions

Whether to emit an issue per each repeated item or only for the first repetition.

code

Issue code to use when two items of the value are repeated.

severity

Severity of the issue emitted when two items of the value are repeated.

Constructors

Link copied to clipboard
constructor(emitAllRepetitions: Boolean = true, treatNullAsUnique: Boolean = true, code: String = DEFAULT_CODE, severity: ValidationIssueSeverity = ValidationIssueSeverity.Error)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Issue code to use when two items of the value are repeated.

Link copied to clipboard
open override val dependencies: Map<String, DependencyInfo>

Dependencies of the validation. Mapping of keys to the paths this validation depends on. Keys can be used within a ValidationContext to access the value of the dependencies.

Link copied to clipboard
open override val dependsOnDescendants: Boolean = true

Whether the form manager should reevaluate this validation whenever a descendant of the value being validated changes. This is false by default.

Link copied to clipboard

Whether to emit an issue per each repeated item or only for the first repetition.

Link copied to clipboard

Set of external context dependencies of the validation.

Link copied to clipboard

Schema of the value being validated.

Link copied to clipboard
val selector: (item: Any?) -> Any?

Selector function used to specify the key of an item of the value.

Link copied to clipboard

Severity of the issue emitted when two items of the value are repeated.

Link copied to clipboard

Whether to treat null values as being unique.

Link copied to clipboard
protected val ValidationContext.value: Any

Value being validated.

Functions

Link copied to clipboard
@JvmName(name = "reifiedAddDependency")
protected inline fun <TDependency> addDependency(dependencyKey: String, path: String)
protected fun addDependency(dependencyKey: String, path: String)
@JvmName(name = "reifiedAddDependency")
protected inline fun <TDependency> addDependency(dependencyKey: String, path: Path)
protected fun addDependency(dependencyKey: String, path: Path)

Declares a dependency to path, accessible in the validation's context via key dependencyKey.

Link copied to clipboard
protected fun addExternalContextDependency(externalContextName: String)

Declares an external context dependency to externalContextName.

Link copied to clipboard

Function used to declare a dependency to a path and delegate access to its value within a ValidationContext.

Link copied to clipboard

Function used to declare a dependency to a path and delegate access to its value within a ValidationContext.

Link copied to clipboard

Function used to declare a dependency to an external context and delegate access to its value within a ValidationContext.

Link copied to clipboard

Function used to declare a dependency to an external context and delegate access to its value within a ValidationContext.

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard

Runs the validation within a ValidationContext containing the value being validated and the value of all declared dependencies. Returns a flow over all found issues.