    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.transfer;
    017
    018import org.opengion.fukurou.db.Transaction;
    019import org.opengion.fukurou.util.ApplicationInfo;
    020
    021/**
    022 * 伝送要求に対するの読取方法を定義するインターフェースです。
    023 *
    024 * 各実装クラスでは、読取処理{@link #read(TransferConfig, Transaction)}
    025 * 、完了処理{@link #complete(TransferConfig, Transaction)}、エラー処理{@link #error(TransferConfig, ApplicationInfo)}を実装する必要があります。
    026 * サブクラス内部で、DB関連の処理を行う場合は、引数のTransactionオブジェクトを利用して下さい。
    027 * また、接続に対するCommit/Rollbackは、呼び出し元で行いますので、実行処理の中では行わないで下さい。
    028 *
    029 * また、HTTP経由での実行などで、読取処理とその後の完了/エラー処理でオブジェクトが同一出ない場合に、
    030 * 外部から読取キーの取得及び設定を行うことができます。
    031 * 具体的には、{@link #read(TransferConfig, Transaction)}を実行後、{@link #getKeys()}を呼び出しすることで
    032 * 終了処理で処理対象となるキー情報を取得することができます。
    033 * このキー情報を保持し、{@link #setKeys(String[])}で別オブジェクトに対してキーを設定することで、
    034 * 完了処理{@link #complete(TransferConfig, Transaction)}、エラー処理{@link #error(TransferConfig, ApplicationInfo)}
    035 * を呼び出しすることができます。
    036 *
    037 * @og.group 伝送システム
    038 *
    039 * @version  5.0
    040 * @author   Hiroki.Nakamura
    041 * @since    JDK1.6
    042 */
    043public interface TransferRead {
    044
    045        /**
    046         * 読取処理を実行し、結果をテキストデータの配列として返します。
    047         *
    048         * @param config 伝送設定オブジェクト
    049         * @param tran トランザクションオブジェクト
    050         *
    051         * @return 読み取りしたデータ(配列)
    052         */
    053        String[] read( final TransferConfig config, final Transaction tran );
    054
    055        /**
    056         * 更新キー(配列)を返します。
    057         *
    058         * @return 更新キー(配列)
    059         */
    060        String[] getKeys();
    061
    062        /**
    063         * 更新キー(配列)をセットします。
    064         *
    065         * @param keys 更新キー(配列)
    066         */
    067        void setKeys( final String[] keys );
    068
    069        /**
    070         * 完了処理を実行します。
    071         * この処理は実行方法で定義された実行処理が正常終了した場合に呼び出しされます。
    072         * 更新対象のキーについては、{@link #setKeys(String[])}で外部からセットすることもできます。
    073         *
    074         * @param config 伝送設定オブジェクト
    075         * @param tran トランザクションオブジェクト
    076         */
    077        void complete( final TransferConfig config, final Transaction tran );
    078
    079        /**
    080         * エラー処理を実行します。
    081         * この処理は実行方法で定義された実行処理が以上終了した場合に呼び出しされます。
    082         * 更新対象のキーについては、{@link #setKeys(String[])}で外部からセットすることもできます。
    083         *
    084         * @param config 伝送設定オブジェクト
    085         * @param appInfo DB接続情報
    086         */
    087        void error( final TransferConfig config, final ApplicationInfo appInfo );
    088}