add getIdFieldByStringField()
This commit is contained in:
@@ -29,6 +29,7 @@ Protected methods
|
||||
- [getDoubleFieldValues](#getdoublefieldvalues)
|
||||
- [getFieldByField](#getfieldbyfield)
|
||||
- [getFieldsByField](#getfieldsbyfield)
|
||||
- [getIdFieldByStringField](#getidfieldbystringfield)
|
||||
- [getIdFieldByIdField](#getidfieldbyidfield)
|
||||
- [getIdFieldsByIdField](#getidfieldsbyidfield)
|
||||
- [getIdFieldValues](#getidfieldvalues)
|
||||
@@ -138,6 +139,18 @@ Contacts contacts = Contacts.newInstance(records);
|
||||
Map<Object, Set<Object>> contactIdByAccountId = contacts.getFieldsByField(Contact.Id, Contact.AccountId);
|
||||
```
|
||||
<br/><br/>
|
||||
#### getIdFieldByStringField
|
||||
Get a map with the string field as the key and the ID as values. Key fields containing null values are omitted.
|
||||
|
||||
`protected Map<String, Id> getIdFieldByStringField(Schema.SObjectField valueField, Schema.SObjectField keyField)`
|
||||
|
||||
_Example_
|
||||
|
||||
```apex
|
||||
Contacts contacts = Contacts.newInstance(records);
|
||||
Map<String, Id> accountIdByContactId = contacts.getIdFieldByStringField(Contact.Id, Contact.Name);
|
||||
```
|
||||
<br/><br/>
|
||||
|
||||
#### getIdFieldByIdField
|
||||
Get a map with the values of two Id fields. Key fields containing null values are omitted.
|
||||
|
||||
@@ -397,6 +397,35 @@ public virtual class fflib_SObjects2
|
||||
return getRecords().get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map with the values of a String field as key and Id field
|
||||
* Key fields containing null values are omitted
|
||||
*
|
||||
* @param valueField The Id field to use as the Value of the Map
|
||||
* @param keyField The String field to use as the Key of the map
|
||||
*
|
||||
* @return Returns a map with the values of two fields
|
||||
*
|
||||
* @example
|
||||
* Contacts contacts = Contacts.newInstance(records);
|
||||
* Map<String, Id> accountIdByContactId = contacts.getIdFieldByStringField(Contact.Id, Contact.Name);
|
||||
*/
|
||||
@TestVisible
|
||||
protected virtual Map<String, Id> getIdFieldByStringField(Schema.SObjectField valueField, Schema.SObjectField keyField)
|
||||
{
|
||||
Map<String, Id> result = new Map<String, Id>();
|
||||
for (SObject record : getRecords())
|
||||
{
|
||||
if (record.get(keyField) == null) continue;
|
||||
|
||||
result.put(
|
||||
(String) record.get(keyField),
|
||||
(Id) record.get(valueField)
|
||||
);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map with the values of two Id fields
|
||||
* Key fields containing null values are omitted
|
||||
|
||||
@@ -124,6 +124,19 @@ private class fflib_SObjects2Test
|
||||
// todo - add assertions
|
||||
}
|
||||
|
||||
@IsTest
|
||||
static void itShouldReturnStringById()
|
||||
{
|
||||
final Id accountId = fflib_IDGenerator.generate(Schema.Account.SObjectType);
|
||||
final Account record = new Account(Id = accountId, Name = 'Test');
|
||||
fflib_SObjects2 domain = new fflib_SObjects2(new List<Account>{ record });
|
||||
System.Test.startTest();
|
||||
Map<String, Id> nameById = domain.getIdFieldByStringField(Schema.Account.Id, Schema.Account.Name);
|
||||
System.Test.stopTest();
|
||||
System.assert(nameById.containsKey('Test'));
|
||||
System.assertEquals(accountId, nameById.get(accountId));
|
||||
}
|
||||
|
||||
@IsTest
|
||||
static void itShouldReturnRecordIdById()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user