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 */
016 package org.opengion.fukurou.business;
017
018 import org.opengion.fukurou.util.ErrorMessage;
019
020 /**
021 * 配å?型テーブルモãƒ?ƒ«をメインカーソルとした業務ロジãƒ?‚¯の構é?を定義しますã?
022 *
023 * 配å?型テーブルモãƒ?ƒ«につã�?�¦は、setTable( ArrayTableModel )によりセãƒ?ƒˆしますã?
024 * 配å?型テーブルモãƒ?ƒ«が定義されてã�?�ªã�??合ã?エラーとなりますã?
025 *
026 * こã?クラスでは、以下に示すメソãƒ?ƒ‰が呼び出されるタイミングのみを定義してã�?�¾すã?
027 * メソãƒ?ƒ‰の中身につã�?�¦は、サブクラスでオーバã?ライドし実è£?�—て下さã�??
028 *
029 * 処ç�?�Œ途中で中断される条件は、以下ã?3つですã?
030 * â‘?�„メソãƒ?ƒ‰の戻りå?がfalseの場å�?
031 * ②チェãƒ?‚¯メソãƒ?ƒ‰(chk***())がå?ての行で実行された後ã?エラーメãƒ?‚»ージに"エラー"が含まれてã�?‚‹場å�?
032 * ③実行時エラーが発生したå?å�?
033 *
034 * fstchk() 変更区åˆ?�«関わらã�? 処ç�?‚’始める前に呼び出ã�?
035 * befchk( int row ) 変更区åˆ?�«関わらã�? å�?¡Œにつã�?�¦呼び出ã�?insert,modify,deleteの前に呼び出ã�?
036 * inschk( int row ) 変更区åˆ?�Œ"A"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
037 * modchk( int row ) 変更区åˆ?�Œ"C"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
038 * delchk( int row ) 変更区åˆ?�Œ"D"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
039 * allchk( int row ) 変更区åˆ?�«関わらã�? å�?¡Œにつã�?�¦呼び出ã�?insert,modify,deleteの後に呼び出ã�?
040 * first() 変更区åˆ?�«関わらã�? æœ??の行でのみ呼び出ã�?
041 * befall( int row ) 変更区åˆ?�«関わらã�? å�?¡Œにつã�?�¦呼び出ã�?insert,modify,deleteの前に呼び出ã�?
042 * insert( int row ) 変更区åˆ?�Œ"A"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
043 * modify( int row ) 変更区åˆ?�Œ"C"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
044 * delete( int row ) 変更区åˆ?�Œ"D"の場å�?å�?¡Œにつã�?�¦呼び出ã�?
045 * allrow( int row ) 変更区åˆ?�«関わらã�? å�?¡Œにつã�?�¦呼び出ã�?insert,modify,deleteの後に呼び出ã�?
046 * last() 変更区åˆ?�«関わらã�? æœ?¾Œã?行でのみ呼び出ã�?
047 *
048 * ※ インãƒ?ƒƒクス(row)とは、このArrayTableModel に持つ vals 配å?の行ã?インãƒ?ƒƒクスですã?
049 * よって、オリジナルのDBTableModelの行番号ではありませんã€?
050 *
051 * @og.rev 5.1.1.0 (2009/12/01) 新規作æ?
052 * @og.group 業務ロジãƒ?‚¯
053 *
054 * @version 5.0
055 * @author Hiroki Nakamura
056 * @since JDK1.6,
057 */
058 public class BizLogic_TABLE extends AbstractBizLogic {
059
060 /**
061 * 処ç�??メインロジãƒ?‚¯の前å?ç�?‚’記述しますã?
062 * (ここでは何もしません)
063 *
064 * こã?メソãƒ?ƒ‰自体ã?、protected属æ?であるため、サブクラスから直接参ç?することができますã?
065 * ä½?�—、これã?、各業務ロジãƒ?‚¯で直接参ç?することを想定したものではなくã?BizLogicの
066 * メイン構é?を拡張するサブクラスを定義する際に使用することを想定してã�?�¾すã?
067 * (こã?想定がなければ、本来は、package privateにすべきでã�?
068 * こã?ため、業務ロジãƒ?‚¯を各実è£?‚¯ラスでは直接参ç?しなã�?�§下さã�??
069 */
070 @Override
071 protected void init() {
072 // Document empty method チェãƒ?‚¯対ç?
073 }
074
075 /**
076 * 処ç�??メインロジãƒ?‚¯を記述しますã?
077 *
078 * こã?メソãƒ?ƒ‰自体ã?、protected属æ?であるため、サブクラスから直接参ç?することができますã?
079 * ä½?�—、これã?、各業務ロジãƒ?‚¯で直接参ç?することを想定したものではなくã?BizLogicの
080 * メイン構é?を拡張するサブクラスを定義する際に使用することを想定してã�?�¾すã?
081 * (こã?想定がなければ、本来は、package privateにすべきでã�?
082 * こã?ため、業務ロジãƒ?‚¯を各実è£?‚¯ラスでは直接参ç?しなã�?�§下さã�??
083 *
084 * @og.rev 5.1.8.0 (2010/07/01) first,lastは行ループã?中で呼び出ã�?
085 * @og.rev 5.6.7.0 (2013/07/27) Exception ã‚?throw するときã?ä¸?—¦、errMsg 変数にセãƒ?ƒˆしますã?
086 *
087 * @return 処ç�?�Œ正常終äº?�—たか
088 */
089 @Override
090 protected boolean main() {
091 if( table == null ) {
092 // 5.6.7.0 (2013/07/27) Exception ã‚?throw するときã?ä¸?—¦、errMsg 変数にセãƒ?ƒˆしますã?
093 // throw new RuntimeException( "配å?型テーブルモãƒ?ƒ«がセãƒ?ƒˆされてã�?�¾せんã€? );
094 String errMsg = "配å?型テーブルモãƒ?ƒ«がセãƒ?ƒˆされてã�?�¾せんã€? ;
095 throw new RuntimeException( errMsg );
096 }
097
098 String modType = null;
099
100 row = 0;
101 if( !fstchk() ) { return false; }
102 for( int i = 0; i < table.getRowCount(); i++ ) {
103 if( !befchk( row ) ) { return false; }
104
105 modType = table.getModifyType( row );
106 if( "A".equals( modType ) ) {
107 if( !inschk( row ) ) { return false; }
108 }
109 else if( "C".equals( modType ) ) {
110 if( !modchk( row ) ) { return false; }
111 }
112 else if( "D".equals( modType ) ) {
113 if( !delchk( row ) ) { return false; }
114 }
115
116 if( !allchk( row ) ) { return false; }
117
118 row++;
119 }
120 if( getKekka() >= ErrorMessage.NG ) { return false; }
121
122 row = 0;
123 // if( !first() ) { return false; }
124 for( int i = 0; i < table.getRowCount(); i++ ) {
125 // 5.1.8.0 (2010/07/01) firstは行ループã?中で呼び出ã�?
126 if( row == 0 ) {
127 if( !first() ) { return false; }
128 }
129
130 if( !befall( row ) ) { return false; }
131
132 modType = table.getModifyType( row );
133 if( "A".equals( modType ) ) {
134 if( !insert( row ) ) { return false; }
135 }
136 else if( "C".equals( modType ) ) {
137 if( !modify( row ) ) { return false; }
138 }
139 else if( "D".equals( modType ) ) {
140 if( !delete( row ) ) { return false; }
141 }
142
143 if( !allrow( row ) ) { return false; }
144
145 // 5.1.8.0 (2010/07/01) lastは行ループã?中で呼び出ã�?
146 if( row == table.getRowCount() - 1 ) {
147 if( !last() ) { return false; }
148 }
149 row++;
150 }
151 // if( !last() ) { return false; }
152
153 return true;
154 }
155
156 /**
157 * こã?クラスは、テーブルモãƒ?ƒ«が外部からæŒ?®šされてã�?‚‹å¿?¦�がありますã?
158 *
159 * こã?メソãƒ?ƒ‰自体ã?、protected属æ?であるため、サブクラスから直接参ç?することができますã?
160 * ä½?�—、これã?、各業務ロジãƒ?‚¯で直接参ç?することを想定したものではなくã?BizLogicの
161 * メイン構é?を拡張するサブクラスを定義する際に使用することを想定してã�?�¾すã?
162 * (こã?想定がなければ、本来は、package privateにすべきでã�?
163 * こã?ため、業務ロジãƒ?‚¯を各実è£?‚¯ラスでは直接参ç?しなã�?�§下さã�??
164 *
165 * @see AbstractBizLogic#isRequireTable()
166 *
167 * @return ãƒ??ブルモãƒ?ƒ«が外部からæŒ?®šされてã�?‚‹å¿?¦�があるかどã�?�‹(常にtrue)
168 */
169 @Override
170 protected boolean isRequireTable() {
171 return true;
172 }
173
174 /**
175 * メインカーソルのä¸?•ª初めで呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
176 * ここでは何も実è£?�•れてã�?�¾せんã€?
177 *
178 * @return 処ç�?�Œ正常終äº?�—たか
179 */
180 protected boolean fstchk() {
181 return true;
182 }
183
184 /**
185 * メインカーソルのå�?¡?変更区åˆ??å�??ç�??å‰?で呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
186 * ここでは何も実è£?�•れてã�?�¾せんã€?
187 *
188 * @param row 行番号(インãƒ?ƒƒクス)
189 *
190 * @return 処ç�?�Œ正常終äº?�—たか
191 */
192 protected boolean befchk( final int row ) {
193 return true;
194 }
195
196 /**
197 * メインカーソルのå�?¡?変更区åˆ??å�??ç�??å¾?で呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
198 * ここでは何も実è£?�•れてã�?�¾せんã€?
199 *
200 * @param row 行番号(インãƒ?ƒƒクス)
201 *
202 * @return 処ç�?�Œ正常終äº?�—たか
203 */
204 protected boolean allchk( final int row ) {
205 return true;
206 }
207
208 /**
209 * メインカーソルのå�?¡?変更区åˆ?"A")で呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
210 * ここでは何も実è£?�•れてã�?�¾せんã€?
211 *
212 * @param row 行番号(インãƒ?ƒƒクス)
213 *
214 * @return 処ç�?�Œ正常終äº?�—たか
215 */
216 protected boolean inschk( final int row ) {
217 return true;
218 }
219
220 /**
221 * メインカーソルのå�?¡?変更区åˆ?"C")で呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
222 * ここでは何も実è£?�•れてã�?�¾せんã€?
223 *
224 * @param row 行番号(インãƒ?ƒƒクス)
225 *
226 * @return 処ç�?�Œ正常終äº?�—たか
227 */
228 protected boolean modchk( final int row ) {
229 return true;
230 }
231
232 /**
233 * メインカーソルのå�?¡?変更区åˆ?"D")で呼ばれるチェãƒ?‚¯ロジãƒ?‚¯を定義しますã?
234 * ここでは何も実è£?�•れてã�?�¾せんã€?
235 *
236 * @param row 行番号(インãƒ?ƒƒクス)
237 *
238 * @return 処ç�?�Œ正常終äº?�—たか
239 */
240 protected boolean delchk( final int row ) {
241 return true;
242 }
243
244 /**
245 * メインカーソルのä¸?•ª初めで呼ばれるロジãƒ?‚¯を定義しますã?
246 * ここでは何も実è£?�•れてã�?�¾せんã€?
247 *
248 * @return 処ç�?�Œ正常終äº?�—たか
249 */
250 protected boolean first() {
251 return true;
252 }
253
254 /**
255 * メインカーソルのä¸?•ªæœ?¾Œで呼ばれるロジãƒ?‚¯を定義しますã?
256 * ここでは何も実è£?�•れてã�?�¾せんã€?
257 *
258 * @return 処ç�?�Œ正常終äº?�—たか
259 */
260 protected boolean last() {
261 return true;
262 }
263
264 /**
265 * メインカーソルのå�?¡?変更区åˆ??å�??ç�??å‰?で呼ばれるロジãƒ?‚¯を定義しますã?
266 * ここでは何も実è£?�•れてã�?�¾せんã€?
267 *
268 * @param row 行番号(インãƒ?ƒƒクス)
269 *
270 * @return 処ç�?�Œ正常終äº?�—たか
271 */
272 protected boolean befall( final int row ) {
273 return true;
274 }
275
276 /**
277 * メインカーソルのå�?¡?変更区åˆ??å�??ç�??å¾?で呼ばれるロジãƒ?‚¯を定義しますã?
278 * ここでは何も実è£?�•れてã�?�¾せんã€?
279 *
280 * @param row 行番号(インãƒ?ƒƒクス)
281 *
282 * @return 処ç�?�Œ正常終äº?�—たか
283 */
284 protected boolean allrow( final int row ) {
285 return true;
286 }
287
288 /**
289 * メインカーソルのå�?¡?変更区åˆ?"A")で呼ばれるロジãƒ?‚¯を定義しますã?
290 * ここでは何も実è£?�•れてã�?�¾せんã€?
291 *
292 * @param row 行番号(インãƒ?ƒƒクス)
293 *
294 * @return 処ç�?�Œ正常終äº?�—たか
295 */
296 protected boolean insert( final int row ) {
297 return true;
298 }
299
300 /**
301 * メインカーソルのå�?¡?変更区åˆ?"C")で呼ばれるロジãƒ?‚¯を定義しますã?
302 * ここでは何も実è£?�•れてã�?�¾せんã€?
303 *
304 * @param row 行番号(インãƒ?ƒƒクス)
305 *
306 * @return 処ç�?�Œ正常終äº?�—たか
307 */
308 protected boolean modify( final int row ) {
309 return true;
310 }
311
312 /**
313 * メインカーソルのå�?¡?変更区åˆ?"D")で呼ばれるロジãƒ?‚¯を定義しますã?
314 * ここでは何も実è£?�•れてã�?�¾せんã€?
315 *
316 * @param row 行番号(インãƒ?ƒƒクス)
317 *
318 * @return 処ç�?�Œ正常終äº?�—たか
319 */
320 protected boolean delete( final int row ) {
321 return true;
322 }
323 }