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