/**
-
TriggerCoreクラスが必ず継承するクラス
*/
public abstract class BaseTriggerCore {/**
- 保存前のレコード一覧
*/
protected SObject[] oldObjects;
/**
- 保存後のレコード一覧。
*/
protected SObject[] newObjects;
/**
- 操作実施前のオブジェクトMap。キーはカスタムオブジェクトID、値はレコード。
/
protected Map oldMap;
/* - 操作実施後のオブジェクトMap。キーはカスタムオブジェクトID、値はレコード。
*/
protected Map newMap;
/**
- コンストラクタ。Trigger変数から操作前後のオブジェクト情報を渡す。
- @param oldObjects 保存前のレコード一覧
- @param newObjects 保存後のレコード一覧
- @param oldMap 操作実施前のオブジェクトMap
-
@param newMap 操作実施後のオブジェクトMap
*/
public BaseTriggerCore(SObject[] oldObjects, SObject[] newObjects,
Map oldMap, Map newMap) {
this.oldObjects = oldObjects;
this.newObjects = newObjects;
this.oldMap = oldMap;
this.newMap = newMap;
}
/**
- トリガーの処理を実行する。
- [before, after], [insert, update, delete, undelete]のどれであるかを判別し、
- 自動的に実行するメソッドを選ぶ。
- @param isBefore Beforeトリガーかどうか
- @param isInsert 行った操作がInsertかどうか
- @param isUpdate 行った操作がUpdateかどうか
- @param isDelete 行った操作がDeleteかどうか
-
@param isUndelete 行った操作がUndeleteかどうか
*/
public void invoke(boolean isBefore, boolean isInsert,
boolean isUpdate, boolean isDelete, boolean isUndelete) {
//ロールバックポイントの取得
Savepoint sp = Database.setSavepoint();
try {
if(isBefore) {
if(isInsert) {
this.onBeforeInsert();
} else if(isUpdate) {
this.onBeforeUpdate();
} else if(isDelete) {
this.onBeforeDelete();
}
} else {
if(isInsert) {
this.onAfterInsert();
} else if(isUpdate) {
this.onAfterUpdate();
} else if(isDelete) {
this.onAfterDelete();
} else if(isUndelete) {
this.onAfterUndelete();
}
}
} catch(Exception e) {
Database.rollback(sp);
throw e;
}
}
/**
- before insertの処理を実行する。
*/
protected virtual void onBeforeInsert() {
}
/**
- after insertの処理を実行する。
*/
protected virtual void onAfterInsert(){
}
/**
- before updateの処理を実行する。
*/
protected virtual void onBeforeUpdate(){
}
/**
- after updateの処理を実行する。
*/
protected virtual void onAfterUpdate(){
}
/**
- before deleteの処理を実行する。
*/
protected virtual void onBeforeDelete(){
}
/**
- before deleteの処理を実行する。
*/
protected virtual void onAfterDelete(){
}
/**
- after undeleteの処理を実行する。
*/
protected virtual void onAfterUndelete(){
}
- 保存前のレコード一覧
}