Skip to content

Instantly share code, notes, and snippets.

@lfreeland
Created February 7, 2019 10:05
Show Gist options
  • Save lfreeland/1079bbf1cb81aacdcdfd77d359b054c2 to your computer and use it in GitHub Desktop.
Save lfreeland/1079bbf1cb81aacdcdfd77d359b054c2 to your computer and use it in GitHub Desktop.
Simple Trigger Handler Base Class
public virtual with sharing class TriggerHandlerBase {
public void run() {
// dispatch to the correct handler method
if(Trigger.isBefore) {
if (Trigger.isInsert) {
this.beforeInsert(Trigger.New);
}
else if(Trigger.isUpdate) {
this.beforeUpdate(Trigger.oldMap, Trigger.newMap);
}
else if(Trigger.isDelete) {
this.beforeDelete(Trigger.oldMap);
}
}
// Is After
else {
if(Trigger.isInsert) {
this.afterInsert(Trigger.New);
}
else if(Trigger.isUpdate) {
this.afterUpdate(Trigger.oldMap, Trigger.newMap);
}
else if(Trigger.isDelete) {
this.afterDelete(Trigger.oldMap);
}
else if(Trigger.isUndelete) {
this.afterUndelete(Trigger.New);
}
}
}
protected virtual void beforeInsert(List<Sobject> newRecords) { }
protected virtual void beforeUpdate(Map<Id, Sobject> oldRecordsMap, Map<Id, Sobject> newRecordsMap) { }
protected virtual void beforeDelete(Map<Id, Sobject> deletedRecordsMap) { }
protected virtual void afterInsert(List<Sobject> newRecords) { }
protected virtual void afterUpdate(Map<Id, Sobject> oldRecordsMap, Map<Id, Sobject> newRecordsMap) { }
protected virtual void afterDelete(Map<Id, Sobject> deletedRecordsMap) { }
protected virtual void afterUndelete(List<Sobject> undeletedRecords) { }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment