0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Triggerベース

Posted at

/**

  • 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(){
      }

}

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?