intra-mart Accel Kaiden! プログラミングガイド 第21版 2024-04-01

4.2.2.7.2. マスタメンテナンス機能 Controller

Controllerクラスでのポイントは以下の通りです。
  • 継承するクラス
期間化マスタの場合はjp.co.slcs.kaiden.v2.base.foundation.master.AbstractTermMasterA2MaintenanceControllerクラスを継承し、
非期間化マスタの場合はjp.co.slcs.kaiden.v2.base.foundation.master.AbstractMasterA2MaintenanceControllerクラスを継承します。
  • 権限コードの宣言
対象の機能の権限コードを宣言します。
ここで宣言するコードは項目マスタに登録されていることが前提です。
  • 実装するフィルタメソッド
READERアクセス権フィルタ取得メソッドとWRITERアクセス権フィルタ取得メソッドをそれぞれ記述します。
  • Logic取得メソッド
Logicにフィルタ情報をセットして返却します。
/* **************************************************************************************
 * ここでは期間化マスタの例として
 * jp.co.slcs.kaiden.v2.base.foundation.master.AbstractTermMasterA2MaintenanceControllerクラスを継承します。
 * 非期間化マスタの場合はjp.co.slcs.kaiden2.base.foundation.master.AbstractMasterA2MaintenanceControllerクラスを継承します。
 * ************************************************************************************** */
public class DeptAdminFuncController extends AbstractTermMasterA2MaintenanceController {
    
    @Autowired
    public DeptAdminFuncLogic deptAdminFuncLogic;
    
    /* **************************************************************************************
     * 管理組織に所属するユーザ、を判定する基準日。
     * ************************************************************************************** */
    protected Timestamp a2CriteriaDate;
    
    /* **************************************************************************************
     * 権限コードを宣言します。
     * 権限コードは項目マスタに登録します。
     * ************************************************************************************** */
    protected static final String TARGET_AUTHORITY_ID_CD = "310004-XXX";
    
    /* **************************************************************************************
     * データ読み取り時(READER)のアクセス権フィルタ取得メソッドを記述します。
     * ************************************************************************************** */
    @Override
    protected AuthorizedAccessUserFilterIF[] getReadAuthorizedAccessUserFilter() {
        
        AuthorityCriteriaDto authCriteria = new AuthorityCriteriaDto();
        authCriteria.action = CompanyAuthzActionType.READER;
        authCriteria.locale = contextHelper.getLoginUserLocale();
        /* **************************************************************************************
         * 管理組織を取得する際の基準日を設定します。
         * ************************************************************************************** */
        authCriteria.searchCriteriaDate = dateHelper.getNowTimestamp();
        authCriteria.userCd = contextHelper.getLoginUserCd();
        LaborSupAuthorizedAccessUserFilter filter = new LaborSupAuthorizedAccessUserFilter(authCriteria,
                "%会社コード%", a2CriteriaDate, TARGET_AUTHORITY_ID_CD, false);
        
        return new AuthorizedAccessUserFilterIF[] {filter};
    }
    
    /* **************************************************************************************
     * データ書き込み時(WRITER)のアクセス権フィルタ取得メソッドを記述します。
     * ************************************************************************************** */
    @Override
    protected AuthorizedAccessUserFilterIF[] getWriteAuthorizedAccessUserFilter() {
        AuthorityCriteriaDto authCriteria = new AuthorityCriteriaDto();
        authCriteria.action = CompanyAuthzActionType.WRITER;
        authCriteria.locale = contextHelper.getLoginUserLocale();
        authCriteria.searchCriteriaDate = dateHelper.getNowTimestamp();
        authCriteria.userCd = contextHelper.getLoginUserCd();
        LaborSupAuthorizedAccessUserFilter filter = new LaborSupAuthorizedAccessUserFilter(authCriteria,
                "%会社コード%", a2CriteriaDate, TARGET_AUTHORITY_ID_CD, false);
        
        return new AuthorizedAccessUserFilterIF[] {filter};
    }
    
    /* **************************************************************************************
     * Logic取得メソッド。AbstractTermMasterA2MaintenanceActionが利用します。
     * Logicにフィルタ情報をセットして返却します。
     * ************************************************************************************** */
    @Override
    protected AbstractMasterA2MaintenanceLogic getLogic() {
        deptAdminFuncLogic.setReadA2Filter(getReadAuthorizedAccessUserFilter());
        deptAdminFuncLogic.setWriteA2Filter(getWriteAuthorizedAccessUserFilter());
        deptAdminFuncLogic.setCallerAction(this.getClass());
        return deptAdminFuncLogic;
    }
    
    /* **************************************************************************************
     * 検索画面で検索ボタンを押下したときのアクション。
     * ************************************************************************************** */
    @Override
    public String search(HttpServletRequest request, HttpServletResponse response, Form form, Model model) {
        /* **************************************************************************************
         * 管理組織に所属するユーザ、を判定する基準日をセットします。
         * ************************************************************************************** */
        a2CriteriaDate = dateHelper.toTimestamp("%基準日%");
        return super.search(request, response, form, model);
    }
    // ・
    // ・
    // ・
    // ・
    // 以降、イベントに対応するメソッドを記述
}