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;
022
023/**
024 * 業務ロジックを実行するためのヘルパークラスです。
025 *
026 * このクラスの役割は、外部パッケージ(タグクラスなど)からの各種の設定情報を
027 * 業務ロジックの実体のクラスにセットすることです。
028 *
029 * 業務ロジックの実体となるクラス(AbstractBizLogic)では、各種設定情報のセッター
030 * メソッドを、サブクラス(各業務ロジックの実装クラス)から隠蔽するため、パッケージ
031 * プライベートで定義しています。
032 *
033 * このため、外部クラスから、直接設定情報をセットすることができないため、このヘルパー
034 * クラスを介して、各種情報をセットしています。
035 *
036 * @og.rev 5.1.1.0 (2009/12/01) 新規作成
037 * @og.group 業務ロジック
038 *
039 * @version 5.0
040 * @author Hiroki Nakamura
041 * @since JDK1.6,
042 */
043public class BizLogicHelper {
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         * @og.rev 6.7.9.1 (2017/05/19) ArrayTableModel を、DataModel I/F に変更
098         *
099         * @param tbl 配列型テーブルモデル
100         */
101        public void setTable( final DataModel<String> tbl ) {
102                logic.setTable( tbl );
103        }
104
105        /**
106         * 固定値のキー配列を指定します。
107         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
108         *
109         * @param ks キー配列(可変長引数)
110         */
111        public void setKeys( final String... ks ) {
112                logic.setKeys( ks );
113        }
114
115        /**
116         * 固定値の値配列を指定します。
117         * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。
118         *
119         * @param vs 値配列(可変長引数)
120         */
121        public void setVals( final String... vs ) {
122                logic.setVals( vs );
123        }
124
125        /**
126         * この処理の実行ユーザーIDを指定します。
127         *
128         * @param id 実行ユーザーID
129         */
130        public void setUserId( final String id ) {
131                logic.setUserId( id );
132        }
133
134        /**
135         * 親(呼び出し)PGIDを指定します。
136         *
137         * @param id 親PGID
138         */
139        public void setParentPgId( final String id ) {
140                logic.setParentPgId( id );
141        }
142
143        /**
144         * デバッグモードにします。
145         */
146        public void setDebug() {
147                logic.setDebug();
148        }
149
150        /**
151         * デバッグメッセージを取得します。
152         *
153         * @return      デバッグメッセージ
154         */
155        public String getDebugMsg() {
156                return logic.getDebugMsg();
157        }
158
159        /**
160         * 処理を実行します。
161         * 処理の方法は、main()メソッドにより定義されます。
162         * 実装クラスで発生した全ての例外は、Throwableオブジェクトとしてスローされます。
163         * 呼び出し元では、例外を確実にcatchして、commit,rollbackを行ってください。
164         *
165         * @return      処理が成功したかどうか
166         * @throws Throwable 実行時の全エラーを上位に転送します。
167         */
168        public boolean exec() throws Throwable {
169                return logic.exec();
170        }
171
172        /**
173         * 結果ステータスを返します。
174         *
175         * @return      結果ステータス
176         */
177        public int getKekka() {
178                return logic.getKekka();
179        }
180
181        /**
182         * エラーメッセージオブジェクトを返します。
183         *
184         * @return      エラーメッセージ
185         */
186        public ErrorMessage getErrMsg() {
187                return logic.getErrMsg();
188        }
189
190        /**
191         * 業務ロジックの戻り値を返します。
192         *
193         * @return      戻り値
194         */
195        public String getReturn() {
196                return logic.getReturn();
197        }
198
199        /**
200         * このクラスは、テーブルモデルが外部から指定されている必要はありません。
201         *
202         * @see AbstractBizLogic#isRequireTable()
203         *
204         * @return      テーブルモデルが外部からセットされる必要があるかどうか
205         */
206        public boolean isRequireTable() {
207                return logic.isRequireTable();
208        }
209}