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