【Apex Trigger】
trigger ObjectTrigger on Object__c(before insert, after insert, before update, after update, before delete, after delete, after undelete) {
ObjectTriggerHandler handler = new ObjectTriggerHandler(Trigger.isExecuting, Trigger.size);
if(Trigger.isInsert) {
if(Trigger.isBefore) {
handler.OnBeforeInsert(Trigger.new);
} else if(Trigger.isAfter) {
handler.OnAfterInsert(Trigger.new);
}
} else if(Trigger.isUpdate) {
if(Trigger.isBefore) {
handler.OnBeforeUpdate(Trigger.old, Trigger.new, Trigger.newMap);
} else if(Trigger.isAfter) {
handler.OnAfterUpdate(Trigger.old, Trigger.new, Trigger.newMap);
}
} else if(Trigger.isDelete) {
if(Trigger.isBefore) {
handler.OnBeforeDelete(Trigger.old, Trigger.oldMap);
} else if(Trigger.isAfter) {
handler.OnAfterDelete(Trigger.old, Trigger.oldMap);
}
} else if(Trigger.isUndelete) {
handler.OnAfterUndelete(Trigger.new);
}
}
【Apex Class】
public with sharing class ObjectTriggerHandler {
private boolean m_isExecuting = false;
private Integer batchSize = 0;
public ObjectTriggerHandler(boolean isExecuting, Integer size) {
m_isExecuting = isExecuting;
batchSize = size;
}
public void OnBeforeInsert(Object__c[] newObjects) {
// TODO:LOGIC
}
public void OnAfterInsert(Object__c[] newObjects) {
// TODO:LOGIC
}
public void OnBeforeUpdate(Object__c[] oldObjects, Object__c[] newObjects, Map newMap) {
// TODO:LOGIC
}
public void OnAfterUpdate(Object__c[] oldObjects, Object__c[] newObjects, Map newMap) {
// TODO:LOGIC
}
public void OnBeforeDelete(Object__c[] delObjects) {
// TODO:LOGIC
}
public void OnAfterDelete(Object__c[] delObjects) {
// TODO:LOGIC
}
public void OnAfterUndelete(Object__c[] restoredObjects) {
// TODO:LOGIC
}
public boolean IsTriggerContext{
get{ return m_isExecuting; }
}
}