Add comparing to related (parent) record field values

This commit is contained in:
Wim Velzeboer
2021-08-10 13:28:21 +01:00
parent 0277af7df2
commit 3540e56fe8
5 changed files with 373 additions and 9 deletions
+198 -2
View File
@@ -20,20 +20,32 @@ Adds a sub criteria with OR comparator
Adds a sub criteria with AND comparator
- <<equalTo, equalTo(Schema.SObjectField field, Object value)>> +
Add an equal to criteria comparing a fields value to a given value
- <<equalTo2, equalTo(String relatedField, Object value)>> +
Add an equal to criteria comparing a related fields value to a given value
- <<evaluate, evaluate(Object record)>> +
Evaluates the stored criteria based on the given SObject
- <<greaterOrEqualTo, greaterOrEqualTo(Schema.SObjectField field, Object value)>> +
Compares the fields values to be greater or equal to the given value
- <<greaterOrEqualTo2, greaterOrEqualTo(String relatedField, Object value)>> +
Compares the related field values to be greater or equal to the given value
- <<greaterThan, greaterThan(Schema.SObjectField field, Object value)>> +
Compares the fields values to be greater or equal to the given value
- <<greaterThan2, greaterThan(String relatedField, Object value)>> +
Compares the related field values to be greater or equal to the given value
- <<inSet, inSet(Schema.SObjectField field, Set<Object> values)>> +
Checks if the given sets contains the fields values
- <<lessOrEqualTo, lessOrEqualTo(Schema.SObjectField field, Object value)>> +
Compares the fields values to be less or equal to the given value
- <<lessOrEqualTo2, lessOrEqualTo(String relatedField, Object value)>> +
Compares the related field values to be less or equal to the given value
- <<lessThan, lessThan(Schema.SObjectField field, Object value)>> +
Compares the fields values to be greater or equal to the given value
- <<lessThan2, lessThan(String relatedField, Object value)>> +
Compares the related field values to be greater or equal to the given value
- <<notEqualTo, notEqualTo(Schema.SObjectField field, Object value)>> +
Add an equal to criteria comparing a fields value to a given value
- <<notEqualTo2, notEqualTo(String relatedField, Object value)>> +
Add an equal to criteria comparing a related fields value to a given value
- <<notInSet, notInSet(Schema.SObjectField field, Set<Date> values)>> +
Checks if the given sets does not contain the fields values
- <<toSQL, toSOQL()>> +
@@ -67,8 +79,6 @@ new fflib_Criteria()
___
[[andCriteria]]
=== andCriteria()
Changes the default comparator for each criteria to AND. +
@@ -181,6 +191,36 @@ new fflib_Criteria()
// Name = 'Example'
```
___
[[equalTo2]]
=== equalTo(String relatedField, Object value)
Add an equal to criteria comparing a related fields value to a given value
==== _Signature_
```java
public virtual fflib_Criteria equalTo(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The related field to evaluate
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.Name FROM Contact LIMIT 1];
new fflib_Criteria()
.equalTo('Account.Name', 'Example')
.evaluate(record)
// Evaluates:
// Account.Name = 'Example'
```
___
[[evaluate]]
=== evaluate(Object record)
Evaluates the stored criteria based on the given SObject
@@ -237,6 +277,38 @@ new fflib_Criteria()
// AnnualRevenue >= 54321
```
___
[[greaterOrEqualTo2]]
=== greaterOrEqualTo(String relatedField, Object value)
Compares the fields values to be greater or equal to the given value.
Evaluates to false if the field value is null.
==== _Signature_
```java
public virtual fflib_Criteria greaterOrEqualTo(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The relatedField name to use its value
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.AnnualRevenue FROM Contact LIMIT 1];
new fflib_Criteria()
.greaterOrEqualTo('Account.AnnualRevenue', 54321)
.evaluate(record);
// Evaluates:
// Account.AnnualRevenue >= 54321
```
___
[[greaterThan]]
=== greaterThan(Schema.SObjectField field, Object value)
@@ -267,6 +339,38 @@ new fflib_Criteria()
// AnnualRevenue > 54321
```
___
[[greaterThan2]]
=== greaterThan(String relatedField, Object value)
Compares the fields values to be greater or equal to the given value
Evaluates to false if the field value is null
==== _Signature_
```java
public virtual fflib_Criteria greaterThan(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The relatedField name to use its value
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.AnnualRevenue FROM Contact LIMIT 1];
new fflib_Criteria()
.greaterThan('Account.AnnualRevenue', 54321)
.evaluate(record);
// Evaluates:
// Account.AnnualRevenue > 54321
```
___
[[inSet]]
@@ -327,6 +431,37 @@ new fflib_Criteria()
// AnnualRevenue > 54321
```
___
[[lessOrEqualTo2]]
=== lessOrEqualTo(String relatedField, Object value)
Compares the related fields values to be less or equal to the given value
Evaluates to true if the field value is null
==== _Signature_
```java
public virtual fflib_Criteria lessOrEqualTo(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The relatedField name to use its value
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.AnnualRevenue FROM Contact LIMIT 1];
new fflib_Criteria()
.lessOrEqualTo('Account.AnnualRevenue', 54321)
.evaluate(record);
// Evaluates:
// Account.AnnualRevenue > 54321
```
___
[[lessThan]]
@@ -358,6 +493,37 @@ new fflib_Criteria()
// AnnualRevenue < 54321
```
[[lessThan2]]
=== lessThan(String relatedField, Object value)
Compares the related fields values to be less or equal to the given value
Evaluates to true if the field value is null
==== _Signature_
```java
public virtual fflib_Criteria lessThan(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The relatedField name to use its value
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.AnnualRevenue FROM Contact LIMIT 1];
new fflib_Criteria()
.lessThan('Account.AnnualRevenue', 54321)
.evaluate(record);
// Evaluates:
// AnnualRevenue < 54321
```
___
[[notEqualTo]]
@@ -388,6 +554,36 @@ new fflib_Criteria()
// Name != 'Example'
```
___
[[notEqualTo2]]
=== notEqualTo(String relatedField, Object value)
Add a not equal to criteria comparing a related fields value to a given value
==== _Signature_
```java
public virtual fflib_Criteria notEqualTo(String relatedField, Object value)
```
==== _Parameters_
_**relatedField**_ +
The relatedField name to evaluate
_**value**_ +
The value to be compared to the fields value
==== _Returns_
An instance of itself to enable method chaining
==== _Example_
```java
Contact record = [SELECT Id, Account.Name FROM Contact LIMIT 1];
new fflib_Criteria()
.notEqualTo('Account.Name', 'Example')
.evaluate(record);
// Evaluates:
// Account.Name != 'Example'
```
___
[[notInSet]]
=== notInSet(Schema.SObjectField field, Set<Object> values)