    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.db.Transaction;
    019import org.opengion.fukurou.util.ErrorMessage;
    020import org.opengion.fukurou.util.HybsLoader;
    021
    022/**
    023 * 業務ロジックを実行するためのヘルパークラスです。
    024 *
    025 * このクラスの役割は、外部パッケージ(タグクラスなど)からの各種の設定情報を
    026 * 業務ロジックの実体のクラスにセットすることです。
    027 *
    028 * 業務ロジックの実体となるクラス(AbstractBizLogic)では、各種設定情報のセッター
    029 * メソッドを、サブクラス(各業務ロジックの実装クラス)から隠蔽するため、パッケージ
    030 * プライベートで定義しています。
    031 *
    032 * このため、外部クラスから、直接設定情報をセットすることができないため、このヘルパー
    033 * クラスを介して、各種情報をセットしています。
    034 *
    035 * @og.rev 5.1.1.0 (2009/12/01) 新規作成
    036 * @og.group 業務ロジック
    037 *
    038 * @version 5.0
    039 * @author Hiroki Nakamura
    040 * @since JDK1.6,
    041 */
    042public class BizLogicHelper {
    043
    044//      private HybsLoader loader = null;
    045//      private AbstractBizLogic logic = null;
    046        private final AbstractBizLogic logic ;          // 5.1.9.0 (2010/08/01)
    047
    048        /**
    049         * コンストラクターを定義しています。
    050         *
    051         * @param name 業務ロジックのクラス名
    052         * @param ldr クラスローダー
    053         */
    054        public BizLogicHelper( final String name, final HybsLoader ldr ) {
    055//              loader = ldr;
    056//              logic = (AbstractBizLogic)loader.newInstance( name );
    057                logic = (AbstractBizLogic)ldr.newInstance( name );
    058        }
    059
    060//      /**
    061//       * DBのコネクションオブジェクトを指定します。
    062//       * 各実装クラスでは、コネクションのcommit,rollbackは行われません。
    063//       * (全てのDB処理は、1つのトランザクションとして処理されます。)
    064//       * このため、commit,rollbackは呼び出し元で行う必要があります。
    065//       * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    066//       *
    067//       * @param cn DB接続
    068//       */
    069//      public void setConnection( final Connection cn ) {
    070//              logic.setConnection( cn );
    071//      }
    072
    073        /**
    074         * DBのトランザクションオブジェクトを指定します。
    075         * 各実装クラスでは、コネクションのcommit,rollbackは行われません。
    076         * (全てのDB処理は、1つのトランザクションとして処理されます。)
    077         * このため、commit,rollbackは呼び出し元で行う必要があります。
    078         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    079         *
    080         * @og.rev 5.1.9.0 (2010/08/01) 新規作成
    081         *
    082         * @param tran トランザクション
    083         */
    084        public void setTransaction( final Transaction tran ) {
    085                logic.setTransaction( tran );
    086        }
    087
    088        /**
    089         * 接続先IDを指定します。
    090         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    091         *
    092         * @og.rev 5.1.9.0 (2010/08/01) 新規作成
    093         *
    094         * @param id 接続先ID
    095         */
    096        public void setDbid( final String id ) {
    097                logic.setDbid( id );
    098        }
    099
    100        /**
    101         * 業務ロジックのクラスをロードするためのクラスローダーをセットします。
    102         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    103         *
    104         * @param ldr クラスローダー
    105         */
    106        public void setLoader( final HybsLoader ldr ) {
    107                logic.setLoader( ldr );
    108        }
    109
    110        /**
    111         * 配列型テーブルモデルをセットします。
    112         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    113         *
    114         * @param tbl 配列型テーブルモデル
    115         */
    116        public void setTable( final ArrayTableModel tbl ) {
    117                logic.setTable( tbl );
    118        }
    119
    120        /**
    121         * 固定値のキーをCSV形式で指定します。
    122         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    123         *
    124         * @param ks キー
    125         */
    126        public void setKeys( final String[] ks ) {
    127                logic.setKeys( ks );
    128        }
    129
    130        /**
    131         * 固定値の値をCSV形式で指定します。
    132         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
    133         *
    134         * @param vs 値
    135         */
    136        public void setVals( final String[] vs ) {
    137                logic.setVals( vs );
    138        }
    139
    140        /**
    141         * この処理の実行ユーザーIDを指定します。
    142         *
    143         * @param id 実行ユーザーID
    144         */
    145        public void setUserId( final String id ) {
    146                logic.setUserId( id );
    147        }
    148
    149        /**
    150         * 親(呼び出し)PGIDを指定します。
    151         *
    152         * @param id 親PGID
    153         */
    154        public void setParentPgId( final String id ) {
    155                logic.setParentPgId( id );
    156        }
    157
    158        /**
    159         * デバッグモードにします。
    160         */
    161        public void setDebug() {
    162                logic.setDebug();
    163        }
    164
    165        /**
    166         * デバッグメッセージを取得します。
    167         *
    168         * @return      デバッグメッセージ
    169         */
    170        public String getDebugMsg() {
    171                return logic.getDebugMsg();
    172        }
    173
    174        /**
    175         * 処理を実行します。
    176         * 処理の方法は、main()メソッドにより定義されます。
    177         * 実装クラスで発生した全ての例外は、Throwableオブジェクトとしてスローされます。
    178         * 呼び出し元では、例外を確実にcatchして、commit,rollbackを行ってください。
    179         *
    180         * @return      処理が成功したかどうか
    181         * @throws Throwable 実行時の全エラーを上位に転送します。
    182         */
    183        public boolean exec() throws Throwable {
    184                return logic.exec();
    185        }
    186
    187        /**
    188         * 結果ステータスを返します。
    189         *
    190         * @return      結果ステータス
    191         */
    192        public int getKekka() {
    193                return logic.getKekka();
    194        }
    195
    196        /**
    197         * エラーメッセージオブジェクトを返します。
    198         *
    199         * @return      エラーメッセージ
    200         */
    201        public ErrorMessage getErrMsg() {
    202                return logic.getErrMsg();
    203        }
    204
    205        /**
    206         * 業務ロジックの戻り値を返します。
    207         *
    208         * @return      戻り値
    209         */
    210        public String getReturn() {
    211                return logic.getReturn();
    212        }
    213
    214        /**
    215         * このクラスは、テーブルモデルが外部から指定されている必要はありません。
    216         *
    217         * @see AbstractBizLogic#isRequireTable()
    218         *
    219         * @return      テーブルモデルが外部からセットされる必要があるかどうか
    220         */
    221        public boolean isRequireTable() {
    222                return logic.isRequireTable();
    223        }
    224}