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}