Guest User

Untitled

a guest
Jan 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. public virtual class TriggerHandler {
  2. public static Boolean shouldRun = true;
  3. public static Boolean shouldHandlersRun = true;
  4. public TriggerContext context;
  5.  
  6. private Boolean isTriggerExecuting;
  7.  
  8. public static void disable() {
  9. TriggerHandler.shouldRun = false;
  10. }
  11.  
  12. public static void enable() {
  13. TriggerHandler.shouldRun = true;
  14. }
  15.  
  16. public enum TriggerContext {
  17. BEFORE_INSERT, BEFORE_UPDATE, BEFORE_DELETE,
  18. AFTER_INSERT, AFTER_UPDATE, AFTER_DELETE, AFTER_UNDELETE
  19. }
  20.  
  21. protected TriggerHandler() {
  22. this.isTriggerExecuting = Trigger.isExecuting;
  23. if(!this.isTriggerExecuting) return;
  24. else if(Trigger.isBefore && Trigger.isInsert) this.context = TriggerContext.BEFORE_INSERT;
  25. else if(Trigger.isBefore && Trigger.isUpdate) this.context = TriggerContext.BEFORE_UPDATE;
  26. else if(Trigger.isBefore && Trigger.isDelete) this.context = TriggerContext.BEFORE_DELETE;
  27. else if(Trigger.isAfter && Trigger.isInsert) this.context = TriggerContext.AFTER_INSERT;
  28. else if(Trigger.isAfter && Trigger.isUpdate) this.context = TriggerContext.AFTER_UPDATE;
  29. else if(Trigger.isAfter && Trigger.isDelete) this.context = TriggerContext.AFTER_DELETE;
  30. else if(Trigger.isAfter && Trigger.isUndelete) this.context = TriggerContext.AFTER_UNDELETE;
  31. }
  32.  
  33. public void execute() {
  34. if(!TriggerHandler.shouldRun) return;
  35. this.executeHandlers();
  36. }
  37.  
  38. public void executeHandlers() {
  39. if(this.context == TriggerContext.BEFORE_INSERT) this.beforeInsert(Trigger.new);
  40. else if(this.context == TriggerContext.BEFORE_UPDATE) this.beforeUpdate(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
  41. else if(this.context == TriggerContext.BEFORE_DELETE) this.beforeDelete(Trigger.old, Trigger.oldMap);
  42. else if(this.context == TriggerContext.AFTER_INSERT) this.afterInsert(Trigger.new, Trigger.newMap);
  43. else if(this.context == TriggerContext.AFTER_UPDATE) this.afterUpdate(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
  44. else if(this.context == TriggerContext.AFTER_DELETE) this.afterDelete(Trigger.old, Trigger.oldMap);
  45. else if(this.context == TriggerContext.AFTER_UNDELETE) this.afterUndelete(Trigger.new, Trigger.newMap);
  46. }
  47.  
  48. protected virtual void beforeInsert(List<SObject> newRecords) {}
  49. protected virtual void beforeUpdate(List<SObject> updatedRecords, Map<Id, SObject> updatedRecordsMap, List<SObject> oldRecords, Map<Id, SObject> oldRecordsMap) {}
  50. protected virtual void beforeDelete(List<SObject> deletedRecords, Map<Id, SObject> deletedRecordsMap) {}
  51. protected virtual void afterInsert(List<SObject> newRecords, Map<Id, SObject> newRecordsMap) {}
  52. protected virtual void afterUpdate(List<SObject> updatedRecords, Map<Id, SObject> updatedRecordsMap, List<SObject> oldRecords, Map<Id, SObject> oldRecordsMap) {}
  53. protected virtual void afterDelete(List<SObject> deletedRecords, Map<Id, SObject> deletedRecordsMap) {}
  54. protected virtual void afterUndelete(List<SObject> undeletedRecords, Map<Id, SObject> undeletedRecordsMap) {}
  55. }
Add Comment
Please, Sign In to add comment