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}