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

Whether the FormManager 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
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.

Functions

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
open override fun ValidationContext.validate(): Flow<ValidationIssue>

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.