    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                        String errMsg = "カーソルが定義されていません。" ;
    065                        throw new RuntimeException( errMsg );
    066                }
    067                table = createTableBySql( cursor() );
    068        }
    069
    070        /**
    071         * このクラスは、テーブルモデルが外部から指定されている必要はありません。
    072         *
    073         * このメソッド自体は、protected属性であるため、サブクラスから直接参照することができます。
    074         * 但し、これは、各業務ロジックで直接参照することを想定したものではなく、BizLogicの
    075         * メイン構造を拡張するサブクラスを定義する際に使用することを想定しています。
    076         * (この想定がなければ、本来は、package privateにすべきです)
    077         * このため、業務ロジックを各実装クラスでは直接参照しないで下さい。
    078         *
    079         * @see AbstractBizLogic#isRequireTable()
    080         *
    081         * @return      テーブルモデルが外部から指定されているかどうか(常にfalse)
    082         */
    083        @Override
    084        protected boolean isRequireTable() {
    085                return false;
    086        }
    087}