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.util.StringUtil;
019
020/**
021 * 伝送要求に対してのHTTP経由で旧伝送DB(CB01)への登録を行います。
022 *
023 * 実行対象は、(データコード) (送り先) (テキスト種別) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/)
024 * の形式で指定します。
025 *
026 * 例)実行対象 : 3 D9 B991 http://localhost:8824/gf/
027 *
028 * 要求を受けた際の動作は_CB01と同じです。
029 * _CB01同様にCB01テーブル以外に次のテーブル及びシーケンスが必要です
030 *  テーブル:CB02
031 *  シーケンス:CB010001,CB010002
032 *
033 * その他の処理内容については、{@link org.opengion.fukurou.transfer.TransferExec_HTTP}及び
034 * {@link org.opengion.fukurou.transfer.TransferExec_CB01}のJavaDocを参照して下さい。
035 *
036 * @og.rev 5.4.4.1 (2012/02/02) HybsSystemExceptionは利用しない
037 * @og.group 伝送システム
038 *
039 * @version  5.0
040 * @author   Hiroki.Nakamura
041 * @since    JDK1.6
042 */
043public class TransferExec_HTTP_CB01 extends TransferExec_HTTP {
044
045        private String remoteHost = null;               // リモート接続先URL
046        private String remoteExecObj = null;    // リモート接続先の実行対象
047
048        /**
049         * ローカルの実行対象を、リモート接続先の実行対象とリモート接続先URLに分解します。
050         *
051         * @param localExecObj ローカルの実行対象
052         */
053        @Override
054        protected void splitExecObj( final String localExecObj ) {
055                String[] obj = StringUtil.csv2Array( localExecObj, ' ' );
056                if( obj.length < 4 ) {
057                        String errMsg = "実行対象は、(データコード) (送り先) (テキスト種別) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/) の形式で指定して下さい。[EXECOBJ=" + localExecObj + "]";
058                        // throw new HybsSystemException( errMsg );
059                        throw new RuntimeException( errMsg ); // 5.4.4.1 (2012/02/02)
060                }
061                String hcdd = obj[0];
062                String hto = obj[1];
063                String hsyu = obj[2];
064                remoteHost = obj[3];
065                if( hcdd == null || hcdd.length() == 0
066                 || hto  == null || hto.length()  == 0
067                 || hsyu == null || hsyu.length() == 0
068                 || remoteHost == null || remoteHost.length() == 0 ) {
069                        String errMsg = "実行対象は、(データコード) (送り先) (テキスト種別) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/) は必須です。[EXECOBJ=" + localExecObj + "]";
070                        throw new RuntimeException( errMsg );
071                }
072
073                remoteExecObj = hcdd + " " + hto + " " + hsyu;
074        }
075
076        /**
077         * リモート接続先URLを返します。
078         * このメソッドは、{@link #splitExecObj(String)}の後に呼び出しする必要があります。
079         *
080         * @return リモート接続先URL
081         */
082        @Override
083        public String getRemoteHost() {
084                if( remoteHost == null || remoteHost.length() == 0 ) {
085                        String errMsg = "先に#splitExecObj(String)を実行して下さい";
086                        throw new RuntimeException( errMsg );
087                }
088                return remoteHost;
089        }
090
091        /**
092         * リモート接続先の実行対象を返します。
093         * このメソッドは、{@link #splitExecObj(String)}の後に呼び出しする必要があります。
094         *
095         * @return 接続URL
096         */
097        @Override
098        public String getRemoteExecObj() {
099                if( remoteExecObj == null || remoteExecObj.length() == 0 ) {
100                        String errMsg = "先に#splitExecObj(String)を実行して下さい";
101                        throw new RuntimeException( errMsg );
102                }
103                return remoteExecObj;
104        }
105}