Skip to content

Commit

Permalink
Merge pull request apex-enterprise-patterns#32 from OrtooApps/feature…
Browse files Browse the repository at this point in the history
…/add-dynamic-uow

Feature/add dynamic uow
  • Loading branch information
rob-baillie-ortoo committed Apr 22, 2022
2 parents bf2ffc9 + fdc89e8 commit 01ca71e
Show file tree
Hide file tree
Showing 12 changed files with 1,332 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@
public virtual class fflib_SObjectUnitOfWork
implements fflib_ISObjectUnitOfWork
{
// NOTE:
// If registration methods are added to this class, then they should probably also be added
// to ortoo_DynamicSobjectUnitOfWork
//
@testVisible
protected List<Schema.SObjectType> m_sObjectTypes = new List<Schema.SObjectType>();

protected Map<String, List<SObject>> m_newListByType = new Map<String, List<SObject>>();
Expand Down Expand Up @@ -174,7 +179,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param sObjectType - The type to register
*
*/
private void handleRegisterType(Schema.SObjectType sObjectType)
protected void handleRegisterType(Schema.SObjectType sObjectType)
{
String sObjectName = sObjectType.getDescribe().getName();

Expand Down Expand Up @@ -214,7 +219,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record An deleted record
**/
public void registerEmptyRecycleBin(SObject record)
public virtual void registerEmptyRecycleBin(SObject record)
{
String sObjectType = record.getSObjectType().getDescribe().getName();
assertForSupportedSObjectType(m_emptyRecycleBinMapByType, sObjectType);
Expand All @@ -227,7 +232,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records Deleted records
**/
public void registerEmptyRecycleBin(List<SObject> records)
public virtual void registerEmptyRecycleBin(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -240,7 +245,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A newly created SObject instance to be inserted during commitWork
**/
public void registerNew(SObject record)
public virtual void registerNew(SObject record)
{
registerNew(record, null, null);
}
Expand All @@ -250,7 +255,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of newly created SObject instances to be inserted during commitWork
**/
public void registerNew(List<SObject> records)
public virtual void registerNew(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -266,7 +271,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param relatedToParentField A SObjectField reference to the child field that associates the child record with its parent
* @param relatedToParentRecord A SObject instance of the parent record (should also be registered as new separately)
**/
public void registerNew(SObject record, Schema.SObjectField relatedToParentField, SObject relatedToParentRecord)
public virtual void registerNew(SObject record, Schema.SObjectField relatedToParentField, SObject relatedToParentRecord)
{
if (record.Id != null)
throw new UnitOfWorkException('Only new records can be registered as new');
Expand All @@ -288,7 +293,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param relatedToField A SObjectField reference to the lookup field that relates the two records together
* @param relatedTo A SObject instance (yet to be committed to the database)
*/
public void registerRelationship(SObject record, Schema.SObjectField relatedToField, SObject relatedTo)
public virtual void registerRelationship(SObject record, Schema.SObjectField relatedToField, SObject relatedTo)
{
String sObjectType = record.getSObjectType().getDescribe().getName();

Expand All @@ -306,7 +311,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param email a single email message instance
* @param relatedTo A SObject instance (yet to be committed to the database)
*/
public void registerRelationship( Messaging.SingleEmailMessage email, SObject relatedTo )
public virtual void registerRelationship( Messaging.SingleEmailMessage email, SObject relatedTo )
{
m_relationships.get( Messaging.SingleEmailMessage.class.getName() ).add(email, relatedTo);
}
Expand All @@ -324,7 +329,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* Wraps putSObject, creating a new instance of the lookup sobject using the external id field and value.
*/
public void registerRelationship(SObject record, Schema.SObjectField relatedToField, Schema.SObjectField externalIdField, Object externalId)
public virtual void registerRelationship(SObject record, Schema.SObjectField relatedToField, Schema.SObjectField externalIdField, Object externalId)
{
// NOTE: Due to the lack of ExternalID references on Standard Objects, this method can not be provided a standardized Unit Test. - Rick Parker
String sObjectType = record.getSObjectType().getDescribe().getName();
Expand All @@ -338,7 +343,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record An existing record
**/
public void registerDirty(SObject record)
public virtual void registerDirty(SObject record)
{
registerDirty(record, new List<SObjectField>());
}
Expand All @@ -349,7 +354,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param records SObjects to register as dirty
* @param dirtyFields A list of modified fields
*/
public void registerDirty(List<SObject> records, List<SObjectField> dirtyFields)
public virtual void registerDirty(List<SObject> records, List<SObjectField> dirtyFields)
{
for (SObject record : records)
{
Expand All @@ -363,7 +368,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param record SObject to register as dirty
* @param dirtyFields A list of modified fields
*/
public void registerDirty(SObject record, List<SObjectField> dirtyFields)
public virtual void registerDirty(SObject record, List<SObjectField> dirtyFields)
{
if (record.Id == null)
throw new UnitOfWorkException('New records cannot be registered as dirty');
Expand Down Expand Up @@ -406,7 +411,7 @@ public virtual class fflib_SObjectUnitOfWork
* @param relatedToParentField A SObjectField reference to the child field that associates the child record with its parent
* @param relatedToParentRecord A SObject instance of the parent record (should also be registered as new separately)
**/
public void registerDirty(SObject record, Schema.SObjectField relatedToParentField, SObject relatedToParentRecord)
public virtual void registerDirty(SObject record, Schema.SObjectField relatedToParentField, SObject relatedToParentRecord)
{
registerDirty(record);
if (relatedToParentRecord!=null && relatedToParentField!=null)
Expand All @@ -418,7 +423,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerDirty(List<SObject> records)
public virtual void registerDirty(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -431,7 +436,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A new or existing record
**/
public void registerUpsert(SObject record)
public virtual void registerUpsert(SObject record)
{
if (record.Id == null)
{
Expand All @@ -448,7 +453,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of mix of new and existing records
**/
public void registerUpsert(List<SObject> records)
public virtual void registerUpsert(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -461,7 +466,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record An existing record
**/
public void registerDeleted(SObject record)
public virtual void registerDeleted(SObject record)
{
if (record.Id == null)
throw new UnitOfWorkException('New records cannot be registered for deletion');
Expand All @@ -478,7 +483,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerDeleted(List<SObject> records)
public virtual void registerDeleted(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -491,7 +496,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerPermanentlyDeleted(List<SObject> records)
public virtual void registerPermanentlyDeleted(List<SObject> records)
{
this.registerEmptyRecycleBin(records);
this.registerDeleted(records);
Expand All @@ -502,7 +507,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A list of existing records
**/
public void registerPermanentlyDeleted(SObject record)
public virtual void registerPermanentlyDeleted(SObject record)
{
this.registerEmptyRecycleBin(record);
this.registerDeleted(record);
Expand All @@ -513,7 +518,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A newly created SObject (Platform Event) instance to be inserted during commitWork
**/
public void registerPublishBeforeTransaction(SObject record)
public virtual void registerPublishBeforeTransaction(SObject record)
{
String sObjectType = record.getSObjectType().getDescribe().getName();

Expand All @@ -528,7 +533,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerPublishBeforeTransaction(List<SObject> records)
public virtual void registerPublishBeforeTransaction(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -541,7 +546,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A newly created SObject (Platform Event) instance to be inserted during commitWork
**/
public void registerPublishAfterSuccessTransaction(SObject record)
public virtual void registerPublishAfterSuccessTransaction(SObject record)
{
String sObjectType = record.getSObjectType().getDescribe().getName();

Expand All @@ -556,7 +561,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerPublishAfterSuccessTransaction(List<SObject> records)
public virtual void registerPublishAfterSuccessTransaction(List<SObject> records)
{
for (SObject record : records)
{
Expand All @@ -568,7 +573,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param record A newly created SObject (Platform Event) instance to be inserted during commitWork
**/
public void registerPublishAfterFailureTransaction(SObject record)
public virtual void registerPublishAfterFailureTransaction(SObject record)
{
String sObjectType = record.getSObjectType().getDescribe().getName();

Expand All @@ -583,7 +588,7 @@ public virtual class fflib_SObjectUnitOfWork
*
* @param records A list of existing records
**/
public void registerPublishAfterFailureTransaction(List<SObject> records)
public virtual void registerPublishAfterFailureTransaction(List<SObject> records)
{
for (SObject record : records)
{
Expand Down
Loading

0 comments on commit 01ca71e

Please sign in to comment.