mirror of
https://github.com/corda/corda.git
synced 2024-12-28 00:38:55 +00:00
CORDA-2442: Added wither methods to the vault query classes (#4585)
(cherry picked from commit 498db538d7
)
This commit is contained in:
parent
f5148e8b6c
commit
9286278f59
@ -88,61 +88,63 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
/**
|
||||
* VaultQueryCriteria: provides query by attributes defined in [VaultSchema.VaultStates]
|
||||
*/
|
||||
data class VaultQueryCriteria @JvmOverloads constructor(
|
||||
data class VaultQueryCriteria(
|
||||
override val status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED,
|
||||
override val contractStateTypes: Set<Class<out ContractState>>? = null,
|
||||
val stateRefs: List<StateRef>? = null,
|
||||
val notary: List<AbstractParty>? = null,
|
||||
val softLockingCondition: SoftLockingCondition? = null,
|
||||
val timeCondition: TimeCondition? = null
|
||||
val timeCondition: TimeCondition? = null,
|
||||
override val relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL,
|
||||
override val constraintTypes: Set<Vault.ConstraintInfo.Type> = emptySet(),
|
||||
override val constraints: Set<Vault.ConstraintInfo> = emptySet(),
|
||||
override val participants: List<AbstractParty>? = null
|
||||
) : CommonQueryCriteria() {
|
||||
// These extra fields are handled this way to preserve Kotlin wire compatibility wrt additional parameters with default values.
|
||||
// V3 c'tors
|
||||
// These have to be manually specified as @JvmOverloads for some reason causes declaration clashes
|
||||
constructor(
|
||||
status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED,
|
||||
contractStateTypes: Set<Class<out ContractState>>? = null,
|
||||
stateRefs: List<StateRef>? = null,
|
||||
notary: List<AbstractParty>? = null,
|
||||
softLockingCondition: SoftLockingCondition? = null,
|
||||
timeCondition: TimeCondition? = null,
|
||||
relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL,
|
||||
constraintTypes: Set<Vault.ConstraintInfo.Type> = emptySet(),
|
||||
constraints: Set<Vault.ConstraintInfo> = emptySet(),
|
||||
participants: List<AbstractParty>? = null
|
||||
) : this(status, contractStateTypes, stateRefs, notary, softLockingCondition, timeCondition) {
|
||||
this.relevancyStatus = relevancyStatus
|
||||
this.constraintTypes = constraintTypes
|
||||
this.constraints = constraints
|
||||
this.participants = participants
|
||||
}
|
||||
|
||||
override var relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL
|
||||
private set
|
||||
|
||||
override var constraintTypes: Set<Vault.ConstraintInfo.Type> = emptySet()
|
||||
private set
|
||||
|
||||
override var constraints: Set<Vault.ConstraintInfo> = emptySet()
|
||||
private set
|
||||
|
||||
override var participants: List<AbstractParty>? = null
|
||||
private set
|
||||
timeCondition: TimeCondition? = null
|
||||
) : this(status, contractStateTypes, stateRefs, notary, softLockingCondition, timeCondition, participants = null)
|
||||
constructor(status: Vault.StateStatus) : this(status, participants = null)
|
||||
constructor(status: Vault.StateStatus, contractStateTypes: Set<Class<out ContractState>>?) : this(status, contractStateTypes, participants = null)
|
||||
constructor(status: Vault.StateStatus, contractStateTypes: Set<Class<out ContractState>>?, stateRefs: List<StateRef>?) : this(
|
||||
status, contractStateTypes, stateRefs, participants = null
|
||||
)
|
||||
constructor(status: Vault.StateStatus, contractStateTypes: Set<Class<out ContractState>>?, stateRefs: List<StateRef>?, notary: List<AbstractParty>?) : this(
|
||||
status, contractStateTypes, stateRefs, notary, participants = null
|
||||
)
|
||||
constructor(status: Vault.StateStatus, contractStateTypes: Set<Class<out ContractState>>?, stateRefs: List<StateRef>?, notary: List<AbstractParty>?, softLockingCondition: SoftLockingCondition?) : this(
|
||||
status, contractStateTypes, stateRefs, notary, softLockingCondition, participants = null
|
||||
)
|
||||
|
||||
override fun visit(parser: IQueryCriteriaParser): Collection<Predicate> {
|
||||
super.visit(parser)
|
||||
return parser.parseCriteria(this)
|
||||
}
|
||||
|
||||
fun withStatus(status: Vault.StateStatus): VaultQueryCriteria = copy(status = status)
|
||||
fun withContractStateTypes(contractStateTypes: Set<Class<out ContractState>>): VaultQueryCriteria = copy(contractStateTypes = contractStateTypes)
|
||||
fun withStateRefs(stateRefs: List<StateRef>): VaultQueryCriteria = copy(stateRefs = stateRefs)
|
||||
fun withNotary(notary: List<AbstractParty>): VaultQueryCriteria = copy(notary = notary)
|
||||
fun withSoftLockingCondition(softLockingCondition: SoftLockingCondition): VaultQueryCriteria = copy(softLockingCondition = softLockingCondition)
|
||||
fun withTimeCondition(timeCondition: TimeCondition): VaultQueryCriteria = copy(timeCondition = timeCondition)
|
||||
fun withRelevancyStatus(relevancyStatus: Vault.RelevancyStatus): VaultQueryCriteria = copy(relevancyStatus = relevancyStatus)
|
||||
fun withConstraintTypes(constraintTypes: Set<Vault.ConstraintInfo.Type>): VaultQueryCriteria = copy(constraintTypes = constraintTypes)
|
||||
fun withConstraints(constraints: Set<Vault.ConstraintInfo>): VaultQueryCriteria = copy(constraints = constraints)
|
||||
fun withParticipants(participants: List<AbstractParty>): VaultQueryCriteria = copy(participants = participants)
|
||||
|
||||
fun copy(
|
||||
status: Vault.StateStatus = this.status,
|
||||
contractStateTypes: Set<Class<out ContractState>>? = this.contractStateTypes,
|
||||
stateRefs: List<StateRef>? = this.stateRefs,
|
||||
notary: List<AbstractParty>? = this.notary,
|
||||
softLockingCondition: SoftLockingCondition? = this.softLockingCondition,
|
||||
timeCondition: TimeCondition? = this.timeCondition,
|
||||
relevancyStatus: Vault.RelevancyStatus = this.relevancyStatus,
|
||||
constraintTypes: Set<Vault.ConstraintInfo.Type> = this.constraintTypes,
|
||||
constraints: Set<Vault.ConstraintInfo> = this.constraints,
|
||||
participants: List<AbstractParty>? = this.participants
|
||||
timeCondition: TimeCondition? = this.timeCondition
|
||||
): VaultQueryCriteria {
|
||||
return VaultQueryCriteria(
|
||||
status,
|
||||
@ -201,6 +203,13 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
return parser.parseCriteria(this)
|
||||
}
|
||||
|
||||
fun withParticipants(participants: List<AbstractParty>): LinearStateQueryCriteria = copy(participants = participants)
|
||||
fun withUuid(uuid: List<UUID>): LinearStateQueryCriteria = copy(uuid = uuid)
|
||||
fun withExternalId(externalId: List<String>): LinearStateQueryCriteria = copy(externalId = externalId)
|
||||
fun withStatus(status: Vault.StateStatus): LinearStateQueryCriteria = copy(status = status)
|
||||
fun withContractStateTypes(contractStateTypes: Set<Class<out ContractState>>): LinearStateQueryCriteria = copy(contractStateTypes = contractStateTypes)
|
||||
fun withRelevancyStatus(relevancyStatus: Vault.RelevancyStatus): LinearStateQueryCriteria = copy(relevancyStatus = relevancyStatus)
|
||||
|
||||
fun copy(
|
||||
participants: List<AbstractParty>? = this.participants,
|
||||
uuid: List<UUID>? = this.uuid,
|
||||
@ -233,12 +242,18 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
super.visit(parser)
|
||||
return parser.parseCriteria(this)
|
||||
}
|
||||
|
||||
fun withParticipants(participants: List<AbstractParty>): FungibleStateQueryCriteria = copy(participants = participants)
|
||||
fun withQuantity(quantity: ColumnPredicate<Long>): FungibleStateQueryCriteria = copy(quantity = quantity)
|
||||
fun withStatus(status: Vault.StateStatus): FungibleStateQueryCriteria = copy(status = status)
|
||||
fun withContractStateTypes(contractStateTypes: Set<Class<out ContractState>>): FungibleStateQueryCriteria = copy(contractStateTypes = contractStateTypes)
|
||||
fun withRelevancyStatus(relevancyStatus: Vault.RelevancyStatus): FungibleStateQueryCriteria = copy(relevancyStatus = relevancyStatus)
|
||||
}
|
||||
|
||||
/**
|
||||
* FungibleStateQueryCriteria: provides query by attributes defined in [VaultSchema.VaultFungibleStates]
|
||||
*/
|
||||
data class FungibleAssetQueryCriteria constructor(
|
||||
data class FungibleAssetQueryCriteria(
|
||||
override val participants: List<AbstractParty>? = null,
|
||||
val owner: List<AbstractParty>? = null,
|
||||
val quantity: ColumnPredicate<Long>? = null,
|
||||
@ -248,7 +263,8 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
override val contractStateTypes: Set<Class<out ContractState>>? = null,
|
||||
override val relevancyStatus: Vault.RelevancyStatus
|
||||
) : CommonQueryCriteria() {
|
||||
@JvmOverloads constructor(
|
||||
@JvmOverloads
|
||||
constructor(
|
||||
participants: List<AbstractParty>? = null,
|
||||
owner: List<AbstractParty>? = null,
|
||||
quantity: ColumnPredicate<Long>? = null,
|
||||
@ -263,6 +279,15 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
return parser.parseCriteria(this)
|
||||
}
|
||||
|
||||
fun withParticipants(participants: List<AbstractParty>): FungibleAssetQueryCriteria = copy(participants = participants)
|
||||
fun withOwner(owner: List<AbstractParty>): FungibleAssetQueryCriteria = copy(owner = owner)
|
||||
fun withQuantity(quantity: ColumnPredicate<Long>): FungibleAssetQueryCriteria = copy(quantity = quantity)
|
||||
fun withIssuer(issuer: List<AbstractParty>): FungibleAssetQueryCriteria = copy(issuer = issuer)
|
||||
fun withissuerRef(issuerRef: List<OpaqueBytes>): FungibleAssetQueryCriteria = copy(issuerRef = issuerRef)
|
||||
fun withStatus(status: Vault.StateStatus): FungibleAssetQueryCriteria = copy(status = status)
|
||||
fun withContractStateTypes(contractStateTypes: Set<Class<out ContractState>>): FungibleAssetQueryCriteria = copy(contractStateTypes = contractStateTypes)
|
||||
fun withRelevancyStatus(relevancyStatus: Vault.RelevancyStatus): FungibleAssetQueryCriteria = copy(relevancyStatus = relevancyStatus)
|
||||
|
||||
fun copy(
|
||||
participants: List<AbstractParty>? = this.participants,
|
||||
owner: List<AbstractParty>? = this.owner,
|
||||
@ -293,13 +318,14 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
* Params
|
||||
* [expression] refers to a (composable) type safe [CriteriaExpression]
|
||||
*/
|
||||
data class VaultCustomQueryCriteria<L : StatePersistable> constructor(
|
||||
data class VaultCustomQueryCriteria<L : StatePersistable>(
|
||||
val expression: CriteriaExpression<L, Boolean>,
|
||||
override val status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED,
|
||||
override val contractStateTypes: Set<Class<out ContractState>>? = null,
|
||||
override val relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL
|
||||
) : CommonQueryCriteria() {
|
||||
@JvmOverloads constructor(
|
||||
@JvmOverloads
|
||||
constructor(
|
||||
expression: CriteriaExpression<L, Boolean>,
|
||||
status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED,
|
||||
contractStateTypes: Set<Class<out ContractState>>? = null
|
||||
@ -310,6 +336,11 @@ sealed class QueryCriteria : GenericQueryCriteria<QueryCriteria, IQueryCriteriaP
|
||||
return parser.parseCriteria(this)
|
||||
}
|
||||
|
||||
fun withExpression(expression: CriteriaExpression<L, Boolean>): VaultCustomQueryCriteria<L> = copy(expression = expression)
|
||||
fun withStatus(status: Vault.StateStatus): VaultCustomQueryCriteria<L> = copy(status = status)
|
||||
fun withContractStateTypes(contractStateTypes: Set<Class<out ContractState>>): VaultCustomQueryCriteria<L> = copy(contractStateTypes = contractStateTypes)
|
||||
fun withRelevancyStatus(relevancyStatus: Vault.RelevancyStatus): VaultCustomQueryCriteria<L> = copy(relevancyStatus = relevancyStatus)
|
||||
|
||||
fun copy(
|
||||
expression: CriteriaExpression<L, Boolean> = this.expression,
|
||||
status: Vault.StateStatus = this.status,
|
||||
@ -376,13 +407,13 @@ sealed class AttachmentQueryCriteria : GenericQueryCriteria<AttachmentQueryCrite
|
||||
)
|
||||
}
|
||||
|
||||
fun withUploader(uploaderPredicate: ColumnPredicate<String>) = copy(uploaderCondition = uploaderPredicate)
|
||||
fun withFilename(filenamePredicate: ColumnPredicate<String>) = copy(filenameCondition = filenamePredicate)
|
||||
fun withUploadDate(uploadDatePredicate: ColumnPredicate<Instant>) = copy(uploadDateCondition = uploadDatePredicate)
|
||||
fun withContractClassNames(contractClassNamesPredicate: ColumnPredicate<List<ContractClassName>>) = copy(contractClassNamesCondition = contractClassNamesPredicate)
|
||||
fun withSigners(signersPredicate: ColumnPredicate<List<PublicKey>>) = copy(signersCondition = signersPredicate)
|
||||
fun isSigned(isSignedPredicate: ColumnPredicate<Boolean>) = copy(isSignedCondition = isSignedPredicate)
|
||||
fun withVersion(versionPredicate: ColumnPredicate<Int>) = copy(versionCondition = versionPredicate)
|
||||
fun withUploader(uploaderPredicate: ColumnPredicate<String>): AttachmentsQueryCriteria = copy(uploaderCondition = uploaderPredicate)
|
||||
fun withFilename(filenamePredicate: ColumnPredicate<String>): AttachmentsQueryCriteria = copy(filenameCondition = filenamePredicate)
|
||||
fun withUploadDate(uploadDatePredicate: ColumnPredicate<Instant>): AttachmentsQueryCriteria = copy(uploadDateCondition = uploadDatePredicate)
|
||||
fun withContractClassNames(contractClassNamesPredicate: ColumnPredicate<List<ContractClassName>>): AttachmentsQueryCriteria = copy(contractClassNamesCondition = contractClassNamesPredicate)
|
||||
fun withSigners(signersPredicate: ColumnPredicate<List<PublicKey>>): AttachmentsQueryCriteria = copy(signersCondition = signersPredicate)
|
||||
fun isSigned(isSignedPredicate: ColumnPredicate<Boolean>): AttachmentsQueryCriteria = copy(isSignedCondition = isSignedPredicate)
|
||||
fun withVersion(versionPredicate: ColumnPredicate<Int>): AttachmentsQueryCriteria = copy(versionCondition = versionPredicate)
|
||||
}
|
||||
|
||||
class AndComposition(override val a: AttachmentQueryCriteria, override val b: AttachmentQueryCriteria): AttachmentQueryCriteria(), GenericQueryCriteria.ChainableQueryCriteria.AndVisitor<AttachmentQueryCriteria, AttachmentsQueryCriteriaParser, AttachmentSort>
|
||||
|
Loading…
Reference in New Issue
Block a user