3.3.1.1.2.3. Managerクラスの作成¶
コラム
マスタメンテナンスのManagerクラスの詳細は「マスタメンテナンスManagerクラスプログラミング」を参照ください。
3.3.1.1.2.3.1. Managerインターフェースの作成¶
jp.co.slcs.kaiden2.base.foundation.master.TermMasterManager を継承してMasterTutorialManagerインターフェースを作成します。package jp.co.slcs.kaiden2.tutorial.foundation.manager.tutorial; import java.util.List; import jp.co.slcs.kaiden2.base.foundation.master.TermMasterManager; import jp.co.slcs.kaiden2.base.foundation.util.validate.model.dto.ValidateDefsDto; /** * チュートリアルマスタマネージャクラスのinterface. */ public interface MasterTutorialManager extends TermMasterManager<MasterTutorialManagerDto> { /** * 新規登録用の検証定義リストを返却します. */ public List<ValidateDefsDto> getValidateDefsDtoList4Entry(); /** * 更新登録用の検証定義リストを返却します. */ public List<ValidateDefsDto> getValidateDefsDtoList4Renew(); }
3.3.1.1.2.3.2. Manager実装クラスの作成¶
jp.co.slcs.kaiden2.base.foundation.manager.AbstractTermMasterManager を継承してMasterTutorialManagerImplクラスを作成します。package jp.co.slcs.kaiden2.tutorial.foundation.manager.tutorial.impl; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_COMPANY_EXISTS; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_DATE; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_DATE_MIN; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_FLAG; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_KAIDEN_ID; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_LOCALE; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_MAX_LENGTH; import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_REQUIRED; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import jp.co.slcs.kaiden2.base.foundation.exception.KaidenDuplicationEntryException; import jp.co.slcs.kaiden2.base.foundation.exception.KaidenHaventAuthorityToCompanyException; import jp.co.slcs.kaiden2.base.foundation.exception.KaidenIllegalParametersException; import jp.co.slcs.kaiden2.base.foundation.exception.KaidenOptimisticLockException; import jp.co.slcs.kaiden2.base.foundation.exception.KaidenValidateException; import jp.co.slcs.kaiden2.base.foundation.manager.AbstractTermMasterManager; import jp.co.slcs.kaiden2.base.foundation.manager.AuthorityCriteriaDto; import jp.co.slcs.kaiden2.base.foundation.manager.KeywordsCriteriaDto; import jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenDto; import jp.co.slcs.kaiden2.base.foundation.model.dto.OrderDto; import jp.co.slcs.kaiden2.base.foundation.util.validate.KaidenValidateResult; import jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ErrorMode; import jp.co.slcs.kaiden2.base.foundation.util.validate.model.dto.ValidateDefsDto; import jp.co.slcs.kaiden2.tutorial.foundation.manager.tutorial.MasterTutorialManager; import jp.co.slcs.kaiden2.tutorial.foundation.manager.tutorial.MasterTutorialManagerDto; import jp.co.slcs.kaiden2.tutorial.foundation.model.service.K99mTutorialService; public class MasterTutorialManagerImpl extends AbstractTermMasterManager<MasterTutorialManagerDto> implements MasterTutorialManager { /** サービスクラス. */ @Resource protected K99mTutorialService k99mTutorialService; /** 主キー検索 */ @Override public MasterTutorialManagerDto select(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) { return super.select(k99mTutorialService, criteria, authCriteria); } /** 主キー検索(認可設定無視) */ @Override public MasterTutorialManagerDto selectIgnoreAuthCompany(MasterTutorialManagerDto criteria) { return super.selectIgnoreAuthCompany(k99mTutorialService, criteria); } /** 汎用検索 */ @Override public List<MasterTutorialManagerDto> selectList(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria, List<OrderDto> order) { return super.selectList(k99mTutorialService, criteria, authCriteria, order); } /** 汎用検索(認可設定無視) */ @Override public List<MasterTutorialManagerDto> selectListIgnoreAuthCompany(MasterTutorialManagerDto criteria, List<OrderDto> order) { return super.selectListIgnoreAuthority(k99mTutorialService, criteria, order); } /** ロケール検索 */ @Override public List<MasterTutorialManagerDto> selectLocales(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) { return super.selectLocales(k99mTutorialService, criteria, authCriteria); } /** ロケール検索(認可設定無視) */ @Override public List<MasterTutorialManagerDto> selectLocalesIgnoreAuthCompany(MasterTutorialManagerDto criteria) { return super.selectLocalesIgnoreAuthCompany(k99mTutorialService, criteria); } /** 参照検索 */ @Override public List<MasterTutorialManagerDto> selectListWithReference(KaidenDto criteria, List<OrderDto> order, AuthorityCriteriaDto authCriteria) { String[] likeTarget = {"tutorialName", "extensionA", "extensionB", "extensionC", "extensionD", "extensionE", "extensionF", "extensionG", "extensionH", "extensionI", "extensionJ", "companyName"}; return super.selectBySql(k99mTutorialService, "selectView.sql", criteria, order, authCriteria, likeTarget); } /** 参照検索(認可設定無視) */ @Override public List<MasterTutorialManagerDto> selectListWithReferenceIgnoreAuthCompany(KaidenDto criteria, List<OrderDto> order) { String[] likeTarget = {"tutorialName", "extensionA", "extensionB", "extensionC", "extensionD", "extensionE", "extensionF", "extensionG", "extensionH", "extensionI", "extensionJ", "companyName"}; return super.selectBySqlIgnoreAuthority(k99mTutorialService, "selectView.sql", criteria, order, likeTarget); } /** キーワード検索 */ @Override public Map<String, Object> selectListKeywordFilter(KaidenDto criteria, List<OrderDto> order, KeywordsCriteriaDto keywordsCriteria, AuthorityCriteriaDto authCriteria) { String[] likeTarget = {"tutorialName", "extensionA", "extensionB", "extensionC", "extensionD", "extensionE", "extensionF", "extensionG", "extensionH", "extensionI", "extensionJ", "companyName"}; return super.selectListByKeywords(k99mTutorialService, "selectView.sql", criteria, order, keywordsCriteria, authCriteria, likeTarget); } /** キーワード検索(認可設定無視) */ @Override public Map<String, Object> selectListKeywordFilterIgnoreAuthCompany(KaidenDto criteria, List<OrderDto> order, KeywordsCriteriaDto keywordsCriteria) { String[] likeTarget = {"tutorialName", "extensionA", "extensionB", "extensionC", "extensionD", "extensionE", "extensionF", "extensionG", "extensionH", "extensionI", "extensionJ", "companyName"}; return super.selectListByKeywordsIgnoreAuthority(k99mTutorialService, "selectView.sql", criteria, order, keywordsCriteria, likeTarget); } /** 有効化 */ @Override public void toEnabled(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException { super.toEnabled(k99mTutorialService, criteria, authCriteria); } /** 有効化(認可設定無視) */ @Override public void toEnabledIgnoreAuthCompany(MasterTutorialManagerDto criteria) throws KaidenOptimisticLockException { super.toEnabledIgnoreAuthCompany(k99mTutorialService, criteria); } /** 無効化 */ @Override public void toDisabled(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException { super.toDisabled(k99mTutorialService, criteria, authCriteria); } /** 無効化(認可設定無視) */ @Override public void toDisabledIgnoreAuthCompany(MasterTutorialManagerDto criteria) throws KaidenOptimisticLockException { super.toDisabledIgnoreAuthCompany(k99mTutorialService, criteria); } /** 登録 */ @Override public int entry(List<MasterTutorialManagerDto> dataList, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenDuplicationEntryException { return super.entry(k99mTutorialService, dataList, authCriteria); } /** 登録(認可設定無視) */ @Override public int entryIgnoreAuthCompany(List<MasterTutorialManagerDto> dataList) throws KaidenDuplicationEntryException { return super.entryIgnoreAuthCompany(k99mTutorialService, dataList); } /** 削除 */ @Override public int remove(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException { return super.remove(k99mTutorialService, criteria, authCriteria); } /** 削除(認可設定無視) */ @Override public int removeIgnoreAuthCompany(MasterTutorialManagerDto criteria) { return super.removeIgnoreAuthCompany(k99mTutorialService, criteria); } /** 更新 */ @Override public int renew(List<MasterTutorialManagerDto> dataList, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException { return super.renew(k99mTutorialService, dataList, authCriteria); } /** 更新(認可設定無視) */ @Override public int renewIgnoreAuthCompany(List<MasterTutorialManagerDto> dataList) throws KaidenOptimisticLockException { return super.renewIgnoreAuthCompany(k99mTutorialService, dataList); } /** 期間検索 */ @Override public List<MasterTutorialManagerDto> selectTerms(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria) { return super.selectTerms(k99mTutorialService, criteria, authCriteria); } /** 期間検索(認可設定無視) */ @Override public List<MasterTutorialManagerDto> selectTermsIgnoreAuthCompany(MasterTutorialManagerDto criteria) { return super.selectTermsIgnoreAuthCompany(k99mTutorialService, criteria); } /** 基準日指定検索 */ @Override public List<MasterTutorialManagerDto> selectListIncluedsSearchDate(MasterTutorialManagerDto criteria, AuthorityCriteriaDto authCriteria, List<OrderDto> order) { return super.selectListIncluedsSearchDate(k99mTutorialService, criteria, authCriteria, order); } /** 基準日指定検索(認可設定無視) */ @Override public List<MasterTutorialManagerDto> selectListIncluedsSearchDateIgnoreAuthCompany( MasterTutorialManagerDto criteria, List<OrderDto> order) { return super.selectListIncluedsSearchDateIgnoreAuthCompany(k99mTutorialService, criteria, order); } /** 期間分割 */ @Override public void divideTerm(MasterTutorialManagerDto criteria, Date divideDate, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException, KaidenValidateException { super.divideTerm(k99mTutorialService, criteria, divideDate, authCriteria); } /** 期間分割(認可設定無視) */ @Override public void divideTermIgnoreAuthCompany(MasterTutorialManagerDto criteria, Date divideDate) throws KaidenOptimisticLockException, KaidenValidateException { super.divideTermIgnoreAuthCompany(k99mTutorialService, criteria, divideDate); } /** 期間変更 */ @Override public void moveTerm(MasterTutorialManagerDto criteria, Date newStartDate, Date newEndDate, AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException, KaidenValidateException { super.moveTerm(k99mTutorialService, criteria, newStartDate, newEndDate, authCriteria); } /** 期間変更(認可設定無視) */ @Override public void moveTermIgnoreAuthCompany(MasterTutorialManagerDto criteria, Date newStartDate, Date newEndDate) throws KaidenOptimisticLockException, KaidenValidateException { super.moveTermIgnoreAuthCompany(k99mTutorialService, criteria, newStartDate, newEndDate); } /** DTOのクラスを返却. */ @Override public Class<? extends KaidenDto> getDtoClass() { return super.dtoClass; } /** 重複チェック確認フィールドを返却. */ @Override protected List<String> getDuplicationCheckField() { return Arrays.asList(new String[] {"companyCd", "tutorialCd"}); } /** 登録時入力チェック. */ @Override public List<KaidenValidateResult> validate4Entry(List<?> dtoList, Map<String, String> surfaces) { if (dtoList == null) { throw KaidenIllegalParametersException.makeInstance(); } return makeValidateExecuter(dtoList, surfaces, getValidateDefsDtoList4Entry()).executeAll( ErrorMode.ERROR_CONTINUE); } /** 更新時入力チェック. */ @Override public List<KaidenValidateResult> validate4Renew(List<?> dtoList, Map<String, String> surfaces) { if (dtoList == null) { throw KaidenIllegalParametersException.makeInstance(); } return makeValidateExecuter(dtoList, surfaces, getValidateDefsDtoList4Renew()).executeAll( ErrorMode.ERROR_CONTINUE); } /** 登録時入力チェック. */ @Override public List<ValidateDefsDto> getValidateDefsDtoList4Entry() { List<ValidateDefsDto> result = new ArrayList<ValidateDefsDto>(); result.add(new ValidateDefsDto("companyCd", VALID_REQUIRED)); result.add(new ValidateDefsDto("companyCd", VALID_COMPANY_EXISTS, "companyCd", "", "true")); result.add(new ValidateDefsDto("tutorialCd", VALID_REQUIRED)); result.add(new ValidateDefsDto("tutorialCd", VALID_MAX_LENGTH, "100")); result.add(new ValidateDefsDto("tutorialCd", VALID_KAIDEN_ID)); result.add(new ValidateDefsDto("localeId", VALID_REQUIRED)); result.add(new ValidateDefsDto("localeId", VALID_LOCALE)); result.add(new ValidateDefsDto("tutorialName", VALID_REQUIRED)); result.add(new ValidateDefsDto("tutorialName", VALID_MAX_LENGTH, "250")); result.add(new ValidateDefsDto("startDate", VALID_REQUIRED)); result.add(new ValidateDefsDto("startDate", VALID_DATE)); result.add(new ValidateDefsDto("endDate", VALID_REQUIRED)); result.add(new ValidateDefsDto("endDate", VALID_DATE)); result.add(new ValidateDefsDto("endDate", VALID_DATE_MIN, "startDate")); result.add(new ValidateDefsDto("deleteFlag", VALID_FLAG)); return result; } /** 更新時入力チェック. */ @Override public List<ValidateDefsDto> getValidateDefsDtoList4Renew() { List<ValidateDefsDto> result = new ArrayList<ValidateDefsDto>(); result.add(new ValidateDefsDto("companyCd", VALID_REQUIRED)); result.add(new ValidateDefsDto("companyCd", VALID_COMPANY_EXISTS, "companyCd", "", "true")); result.add(new ValidateDefsDto("tutorialCd", VALID_REQUIRED)); result.add(new ValidateDefsDto("tutorialCd", VALID_MAX_LENGTH, "100")); result.add(new ValidateDefsDto("tutorialCd", VALID_KAIDEN_ID)); result.add(new ValidateDefsDto("termCd", VALID_REQUIRED)); result.add(new ValidateDefsDto("termCd", VALID_MAX_LENGTH, "50")); result.add(new ValidateDefsDto("termCd", VALID_KAIDEN_ID)); result.add(new ValidateDefsDto("localeId", VALID_REQUIRED)); result.add(new ValidateDefsDto("localeId", VALID_LOCALE)); result.add(new ValidateDefsDto("tutorialName", VALID_REQUIRED)); result.add(new ValidateDefsDto("tutorialName", VALID_MAX_LENGTH, "250")); result.add(new ValidateDefsDto("startDate", VALID_REQUIRED)); result.add(new ValidateDefsDto("startDate", VALID_DATE)); result.add(new ValidateDefsDto("endDate", VALID_REQUIRED)); result.add(new ValidateDefsDto("endDate", VALID_DATE)); result.add(new ValidateDefsDto("endDate", VALID_DATE_MIN, "startDate")); return result; } }コラム
Managerクラスのメソッドにはそれぞれ「会社認可設定を含める」「会社認可設定を無視する」の2種類存在します。チュートリアルマスタメンテナンス機能では「会社認可設定を含める」メソッドを使用します。コラム
Actionクラス⇒Logicクラス⇒Managerクラスが処理の流れとなりますが、ほとんどの処理は intra-mart Accel Kaiden! 内部の基底クラスで行っています。ActionクラスメソッドとManagerクラスメソッドのマッピングを以下に示します。
Actionクラスメソッド 処理 Managerクラスメソッド search 検索画面 検索 selectListKeywordFilter select メンテナンス画面 表示 selectLocales entry メンテナンス画面 登録 entry toDisabled メンテナンス画面 無効化 toDisabled remove メンテナンス画面 削除 remove renew メンテナンス画面 更新 renew selectTerm メンテナンス画面 期間データ取得 selectTerms toEnabled メンテナンス画面 有効化 toEnabled divideTerm メンテナンス画面 期間分割 divideTerm moveTerm メンテナンス画面 期間変更 moveTerm
3.3.1.1.2.3.3. ManagerDtoの作成¶
jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenMasterManagerDto を継承してMasterTutorialManagerDtoクラスを作成します。対象テーブルのカラムと、同時に取得するカラムがある場合は定義します。package jp.co.slcs.kaiden2.tutorial.foundation.manager.tutorial; import java.sql.Timestamp; import jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenMasterManagerDto; public class MasterTutorialManagerDto extends KaidenMasterManagerDto { /** 会社コード. */ public String companyCd; /** チュートリアルコード. */ public String tutorialCd; /** 期間コード. */ public String termCd; /** ロケールid. */ public String localeId; /** チュートリアル名称. */ public String tutorialName; /** 開始日. */ public Timestamp startDate; /** 終了日. */ public Timestamp endDate; /** 削除フラグ. */ public String deleteFlag; /** 予備項目A. */ public String extensionA; /** 予備項目B. */ public String extensionB; /** 予備項目C. */ public String extensionC; /** 予備項目D. */ public String extensionD; /** 予備項目E. */ public String extensionE; /** 予備項目F. */ public String extensionF; /** 予備項目G. */ public String extensionG; /** 予備項目H. */ public String extensionH; /** 予備項目I. */ public String extensionI; /** 予備項目J. */ public String extensionJ; /** 登録日時. */ public Timestamp entryTs; /** 登録者コード. */ public String entryUserCd; /** 更新カウンタ. */ public Long renewCnt; /** 更新日時. */ public Timestamp renewTs; /** 更新者コード. */ public String renewUserCd; /** 会社名称(他マスタ名称). */ public String companyName; }コラム
ManagerDtoクラスは検索条件の設定、取得結果の保持で使用します。
3.3.1.1.2.3.4. SQLファイルの作成¶
Managerのキーワード検索で使用するSQLファイルを作成します。配置場所は「WEB-INF/classes/META-INF/sql/jp/co/slcs/kaiden2/tutorial/foundation/model/service/K99mTutorialService」です。ファイル名はselectView.sqlとします。(上記マネージャで使用しているファイル名です)select tutorial.company_cd , tutorial.tutorial_cd , tutorial.term_cd , tutorial.locale_id , tutorial.tutorial_name , tutorial.start_date , tutorial.end_date , tutorial.delete_flag , tutorial.extension_a , tutorial.extension_b , tutorial.extension_c , tutorial.extension_d , tutorial.extension_e , tutorial.extension_f , tutorial.extension_g , tutorial.extension_h , tutorial.extension_i , tutorial.extension_j , tutorial.entry_ts , tutorial.entry_user_cd , tutorial.renew_cnt , tutorial.renew_ts , tutorial.renew_user_cd , dept.department_name as company_name from k99m_tutorial tutorial left join ( select imm_department.company_cd , imm_department.department_set_cd , imm_department.department_cd , imm_department.locale_id , imm_department.start_date , imm_department.end_date , imm_department.department_name from imm_department) dept on tutorial.company_cd = dept.company_cd and tutorial.company_cd = dept.department_set_cd and tutorial.company_cd = dept.department_cd and tutorial.locale_id = dept.locale_id /*IF searchCriteriaDate != null*/ and dept.start_date <= /*searchCriteriaDate*/'' and dept.end_date > /*searchCriteriaDate*/'' --ELSE and dept.start_date <= tutorial.start_date --ELSE and dept.end_date > tutorial.start_date /*END*/ /*BEGIN*/ where /*IF companyCd != null*/ tutorial.company_cd in/*companyCd*/('') /*END*/ /*IF tutorialCd != null*/ and tutorial.tutorial_cd = /*tutorialCd*/'' /*END*/ /*IF termCd != null*/ and tutorial.term_cd = /*termCd*/'' /*END*/ /*IF localeId != null*/ and tutorial.locale_id = /*localeId*/'' /*END*/ /*IF tutorialName != null*/ and tutorial.tutorial_name like /*tutorialName*/'%' ESCAPE '$' /*END*/ /*IF searchCriteriaDate != null*/ and tutorial.start_date <= /*searchCriteriaDate*/'' and tutorial.end_date > /*searchCriteriaDate*/'' /*END*/ /*IF deleteFlag != null*/ and tutorial.delete_flag = /*deleteFlag*/'' /*END*/ /*IF extensionA != null*/ and tutorial.extension_a like /*extensionA*/'%' ESCAPE '$' /*END*/ /*IF extensionB != null*/ and tutorial.extension_b like /*extensionB*/'%' ESCAPE '$' /*END*/ /*IF extensionC != null*/ and tutorial.extension_c like /*extensionC*/'%' ESCAPE '$' /*END*/ /*IF extensionD != null*/ and tutorial.extension_d like /*extensionD*/'%' ESCAPE '$' /*END*/ /*IF extensionE != null*/ and tutorial.extension_e like /*extensionE*/'%' ESCAPE '$' /*END*/ /*IF extensionF != null*/ and tutorial.extension_f like /*extensionF*/'%' ESCAPE '$' /*END*/ /*IF extensionG != null*/ and tutorial.extension_g like /*extensionG*/'%' ESCAPE '$' /*END*/ /*IF extensionH != null*/ and tutorial.extension_h like /*extensionH*/'%' ESCAPE '$' /*END*/ /*IF extensionI != null*/ and tutorial.extension_i like /*extensionI*/'%' ESCAPE '$' /*END*/ /*IF extensionJ != null*/ and tutorial.extension_j like /*extensionJ*/'%' ESCAPE '$' /*END*/ /*IF companyName != null*/ and dept.department_name like /*companyName*/'' ESCAPE '$' /*END*/ /*END*/ /*IF orderBy != null*/ ORDER BY /*$orderBy*/company_cd /*END*/