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
018/**
019 * カーソル定義による配列型テーブルモデルをメインカーソルとした業務ロジックの構造を定義します。
020 *
021 * 配列型テーブルモデルについては、cursor()メソッドを実装により定義します。
022 * cursor()メソッドを実装し、この戻り値をSQL文として実行し、その結果セットから配列型
023 * テーブルモデルを生成し、これをメインカーソルとして使用します。
024 * 配列型テーブルモデルが定義されていない場合、エラーとなります。
025 *
026 * このクラスでは、以下に示すメソッドが呼び出されるタイミングのみを定義しています。
027 * メソッドの中身については、{@link BizLogic_TABLE}を参照して下さい。
028 *
029 * @og.rev 5.1.1.0 (2009/12/01) 新規作成
030 * @og.group 業務ロジック
031 *
032 * @version 5.0
033 * @author Hiroki Nakamura
034 * @since JDK1.6,
035 */
036public class BizLogic_CURSOR extends BizLogic_TABLE {
037
038        /**
039         * 配列型テーブルモデルを生成するためのSQL文を定義します。
040         * このメソッドからSQL文から返された場合、この結果セットから配列型テーブルモデルを生成し、
041         * メインカーソルとして使用します。
042         *
043         * @return 配列型テーブルモデルを生成するためのSQL文
044         */
045        protected String cursor() {
046                return null;
047        }
048
049        /**
050         * 処理のメインロジックの前処理を記述します。
051         *
052         * @og.rev 5.6.7.0 (2013/07/27) Exception を throw するとき、一旦、errMsg 変数にセットします。
053         *
054         * このメソッド自体は、protected属性であるため、サブクラスから直接参照することができます。
055         * 但し、これは、各業務ロジックで直接参照することを想定したものではなく、BizLogicの
056         * メイン構造を拡張するサブクラスを定義する際に使用することを想定しています。
057         * (この想定がなければ、本来は、package privateにすべきです)
058         * このため、業務ロジックを各実装クラスでは直接参照しないで下さい。
059         */
060        @Override
061        protected void init() {
062                if( cursor() == null ) {
063                        // 5.6.7.0 (2013/07/27) Exception を throw するとき、一旦、errMsg 変数にセットします。
064//                      throw new RuntimeException( "カーソルが定義されていません" );
065                        String errMsg = "カーソルが定義されていません。" ;
066                        throw new RuntimeException( errMsg );
067                }
068                table = createTableBySql( cursor() );
069        }
070
071        /**
072         * このクラスは、テーブルモデルが外部から指定されている必要はありません。
073         *
074         * このメソッド自体は、protected属性であるため、サブクラスから直接参照することができます。
075         * 但し、これは、各業務ロジックで直接参照することを想定したものではなく、BizLogicの
076         * メイン構造を拡張するサブクラスを定義する際に使用することを想定しています。
077         * (この想定がなければ、本来は、package privateにすべきです)
078         * このため、業務ロジックを各実装クラスでは直接参照しないで下さい。
079         *
080         * @see AbstractBizLogic#isRequireTable()
081         *
082         * @return      テーブルモデルが外部から指定されているかどうか(常にfalse)
083         */
084        @Override
085        protected boolean isRequireTable() {
086                return false;
087        }
088}