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 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 * @param tbl 配列型テーブルモデル 098 */ 099 public void setTable( final ArrayTableModel tbl ) { 100 logic.setTable( tbl ); 101 } 102 103 /** 104 * 固定値のキーをCSV形式で指定します。 105 * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。 106 * 107 * @param ks キー 108 */ 109 public void setKeys( final String[] ks ) { 110 logic.setKeys( ks ); 111 } 112 113 /** 114 * 固定値の値をCSV形式で指定します。 115 * このメソッドは、1度しかセットすることができません。2回以上呼び出しするとエラーになります。 116 * 117 * @param vs 値 118 */ 119 public void setVals( final String[] vs ) { 120 logic.setVals( vs ); 121 } 122 123 /** 124 * この処理の実行ユーザーIDを指定します。 125 * 126 * @param id 実行ユーザーID 127 */ 128 public void setUserId( final String id ) { 129 logic.setUserId( id ); 130 } 131 132 /** 133 * 親(呼び出し)PGIDを指定します。 134 * 135 * @param id 親PGID 136 */ 137 public void setParentPgId( final String id ) { 138 logic.setParentPgId( id ); 139 } 140 141 /** 142 * デバッグモードにします。 143 */ 144 public void setDebug() { 145 logic.setDebug(); 146 } 147 148 /** 149 * デバッグメッセージを取得します。 150 * 151 * @return デバッグメッセージ 152 */ 153 public String getDebugMsg() { 154 return logic.getDebugMsg(); 155 } 156 157 /** 158 * 処理を実行します。 159 * 処理の方法は、main()メソッドにより定義されます。 160 * 実装クラスで発生した全ての例外は、Throwableオブジェクトとしてスローされます。 161 * 呼び出し元では、例外を確実にcatchして、commit,rollbackを行ってください。 162 * 163 * @return 処理が成功したかどうか 164 * @throws Throwable 実行時の全エラーを上位に転送します。 165 */ 166 public boolean exec() throws Throwable { 167 return logic.exec(); 168 } 169 170 /** 171 * 結果ステータスを返します。 172 * 173 * @return 結果ステータス 174 */ 175 public int getKekka() { 176 return logic.getKekka(); 177 } 178 179 /** 180 * エラーメッセージオブジェクトを返します。 181 * 182 * @return エラーメッセージ 183 */ 184 public ErrorMessage getErrMsg() { 185 return logic.getErrMsg(); 186 } 187 188 /** 189 * 業務ロジックの戻り値を返します。 190 * 191 * @return 戻り値 192 */ 193 public String getReturn() { 194 return logic.getReturn(); 195 } 196 197 /** 198 * このクラスは、テーブルモデルが外部から指定されている必要はありません。 199 * 200 * @see AbstractBizLogic#isRequireTable() 201 * 202 * @return テーブルモデルが外部からセットされる必要があるかどうか 203 */ 204 public boolean isRequireTable() { 205 return logic.isRequireTable(); 206 } 207}