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