    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.fukurou.business;
    017
    018import org.opengion.fukurou.model.DataModel;                                    // 6.7.9.1 (2017/05/19) ArrayTableModel を、DataModel I/F に変更
    019import org.opengion.fukurou.db.Transaction;
    020import org.opengion.fukurou.util.ErrorMessage;
    021import org.opengion.fukurou.util.HybsLoader;
    022import java.util.Map;                                                                                   // 6.9.9.0 (2018/08/20)
    023
    024/**
    025 * 業務ロジックを実行するためのヘルパークラスです。
    026 *
    027 * このクラスの役割は、外部パッケージ(タグクラスなど)からの各種の設定情報を
    028 * 業務ロジックの実体のクラスにセットすることです。
    029 *
    030 * 業務ロジックの実体となるクラス(AbstractBizLogic)では、各種設定情報のセッター
    031 * メソッドを、サブクラス(各業務ロジックの実装クラス)から隠蔽するため、パッケージ
    032 * プライベートで定義しています。
    033 *
    034 * このため、外部クラスから、直接設定情報をセットすることができないため、このヘルパー
    035 * クラスを介して、各種情報をセットしています。
    036 *
    037 * @og.rev 5.1.1.0 (2009/12/01) 新規作成
    038 * @og.group 業務ロジック
    039 *
    040 * @version 5.0
    041 * @author Hiroki Nakamura
    042 * @since JDK1.6,
    043 */
    044public class BizLogicHelper {
    045        private final AbstractBizLogic logic ;          // 5.1.9.0 (2010/08/01)
    046
    047        /**
    048         * コンストラクターを定義しています。
    049         *
    050         * @param name 業務ロジックのクラス名
    051         * @param ldr クラスローダー
    052         */
    053        public BizLogicHelper( final String name, final HybsLoader ldr ) {
    054                logic = (AbstractBizLogic)ldr.newInstance( name );
    055        }
    056
    057        /**
    058         * DBのトランザクションオブジェクトを指定します。
    059         * 各実装クラスでは、コネクションのcommit,rollbackは行われません。
    060         * (全てのDB処理は、1つのトランザクションとして処理されます。)
    061         * このため、commit,rollbackは呼び出し元で行う必要があります。
    062         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    063         *
    064         * @og.rev 5.1.9.0 (2010/08/01) 新規作成
    065         *
    066         * @param tran トランザクション
    067         */
    068        public void setTransaction( final Transaction tran ) {
    069                logic.setTransaction( tran );
    070        }
    071
    072        /**
    073         * 接続先IDを指定します。
    074         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    075         *
    076         * @og.rev 5.1.9.0 (2010/08/01) 新規作成
    077         *
    078         * @param id 接続先ID
    079         */
    080        public void setDbid( final String id ) {
    081                logic.setDbid( id );
    082        }
    083
    084        /**
    085         * 業務ロジックのクラスをロードするためのクラスローダーをセットします。
    086         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    087         *
    088         * @param ldr クラスローダー
    089         */
    090        public void setLoader( final HybsLoader ldr ) {
    091                logic.setLoader( ldr );
    092        }
    093
    094        /**
    095         * 配列型テーブルモデルをセットします。
    096         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    097         *
    098         * @og.rev 6.7.9.1 (2017/05/19) ArrayTableModel を、DataModel I/F に変更
    099         *
    100         * @param tbl 配列型テーブルモデル
    101         */
    102        public void setTable( final DataModel<String> tbl ) {
    103                logic.setTable( tbl );
    104        }
    105
    106        /**
    107         * 固定値のキー配列を指定します。
    108         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    109         *
    110         * @param ks キー配列(可変長引数)
    111         */
    112        public void setKeys( final String... ks ) {
    113                logic.setKeys( ks );
    114        }
    115
    116        /**
    117         * 固定値の値配列を指定します。
    118         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    119         *
    120         * @param vs 値配列(可変長引数)
    121         */
    122        public void setVals( final String... vs ) {
    123                logic.setVals( vs );
    124        }
    125
    126        /**
    127         * この処理の実行ユーザーIDを指定します。
    128         *
    129         * @param id 実行ユーザーID
    130         */
    131        public void setUserId( final String id ) {
    132                logic.setUserId( id );
    133        }
    134
    135        /**
    136         * 親(呼び出し)PGIDを指定します。
    137         *
    138         * @param id 親PGID
    139         */
    140        public void setParentPgId( final String id ) {
    141                logic.setParentPgId( id );
    142        }
    143
    144        /**
    145         * デバッグモードにします。
    146         */
    147        public void setDebug() {
    148                logic.setDebug();
    149        }
    150
    151        /**
    152         * デバッグメッセージを取得します。
    153         *
    154         * @return      デバッグメッセージ
    155         */
    156        public String getDebugMsg() {
    157                return logic.getDebugMsg();
    158        }
    159
    160        /**
    161         * 処理を実行します。
    162         * 処理の方法は、main()メソッドにより定義されます。
    163         * 実装クラスで発生した全ての例外は、Throwableオブジェクトとしてスローされます。
    164         * 呼び出し元では、例外を確実にcatchして、commit,rollbackを行ってください。
    165         *
    166         * @return      処理が成功したかどうか
    167         * @throws Throwable 実行時の全エラーを上位に転送します。
    168         */
    169        public boolean exec() throws Throwable {
    170                return logic.exec();
    171        }
    172
    173        /**
    174         * 結果ステータスを返します。
    175         *
    176         * @return      結果ステータス
    177         */
    178        public int getKekka() {
    179                return logic.getKekka();
    180        }
    181
    182        /**
    183         * エラーメッセージオブジェクトを返します。
    184         *
    185         * @return      エラーメッセージ
    186         */
    187        public ErrorMessage getErrMsg() {
    188                return logic.getErrMsg();
    189        }
    190
    191        /**
    192         * 業務ロジックの戻り値を返します。
    193         *
    194         * @return      戻り値
    195         */
    196        public String getReturn() {
    197                return logic.getReturn();
    198        }
    199
    200        /**
    201         * 変数に関連付けた値を、返します。
    202         * これは、BizLogicから、呼び出し元のJSPに、RETURN 変数以外の {&#064;XXXX} パラメータを返します。
    203         * 既存のアトリビュートがあれば、上書きされます。
    204         *
    205         * @og.rev 6.9.9.0 (2018/08/20) 戻り値を返せるようにします。
    206         *
    207         * @return      変数に関連付けた値の内部マップオブジェクト
    208         */
    209        public Map<String,String> getReturnMap() {
    210                return logic.getReturnMap();
    211        }
    212
    213        /**
    214         * このクラスは、テーブルモデルが外部から指定されている必要はありません。
    215         *
    216         * @see AbstractBizLogic#isRequireTable()
    217         *
    218         * @return      テーブルモデルが外部からセットされる必要があるかどうか
    219         */
    220        public boolean isRequireTable() {
    221                return logic.isRequireTable();
    222        }
    223}