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}