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経由でファイルの絶対パスのリストを行います。
022 *
023 * 読取対象は、(スキャン対象のファイルまたはディレクトリ) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/)
024 * の形式で指定します。
025 *
026 * 例)読取対象 : C:\FOLDER\ http://localhost:8824/gf/
027 *
028 * その他の処理内容については、{@link org.opengion.fukurou.transfer.TransferRead_HTTP}及び
029 * {@link org.opengion.fukurou.transfer.TransferRead_FILELIST}のJavaDocを参照して下さい。
030 *
031 * @og.group 伝送システム
032 *
033 * @version  5.0
034 * @author   Hiroki.Nakamura
035 * @since    JDK1.6
036 */
037public class TransferRead_HTTP_FILELIST extends TransferRead_HTTP {
038
039        private String remoteHost = null;               // リモート接続先URL
040        private String remoteReadObj = null;    // リモート接続先の読取対象
041
042        /**
043         * ローカルの読取対象を、リモート接続先の読取対象とリモート接続先URLに分解します。
044         *
045         * @param localReadObj ローカルの読取対象
046         */
047        @Override
048        protected void splitReadObj( final String localReadObj ) {
049                String[] obj = StringUtil.csv2Array( localReadObj, ' ' );
050                if( obj.length < 2 ) {
051                        String errMsg = "読取対象は、(ファイルまたはディレクトリ) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/) の形式で指定して下さい。[READOBJ=" + localReadObj + "]";
052                        throw new RuntimeException( errMsg );
053                }
054                String file = obj[0];
055                remoteHost = obj[1];
056                if( file == null || file.length() == 0
057                 || remoteHost  == null || remoteHost.length()  == 0 ) {
058                        String errMsg = "読取対象は、(ファイルまたはディレクトリ) ([プロトコル]://[ホスト名]:[ポート番号]/[コンテキスト名]/) は必須です。[READOBJ=" + localReadObj + "]";
059                        throw new RuntimeException( errMsg );
060                }
061
062                remoteReadObj = file;
063        }
064
065        /**
066         * リモート接続先URLを返します。
067         * このメソッドは、{@link #splitReadObj(String)}の後に呼び出しする必要があります。
068         *
069         * @return リモート接続先URL
070         */
071        @Override
072        public String getRemoteHost() {
073                if( remoteHost == null || remoteHost.length() == 0 ) {
074                        String errMsg = "先に#splitReadObj(String)を実行して下さい";
075                        throw new RuntimeException( errMsg );
076                }
077                return remoteHost;
078        }
079
080        /**
081         * リモート接続先の読取対象を返します。
082         * このメソッドは、{@link #splitReadObj(String)}の後に呼び出しする必要があります。
083         *
084         * @return 接続URL
085         */
086        @Override
087        public String getRemoteReadObj() {
088                if( remoteHost == null || remoteHost.length() == 0 ) {
089                        String errMsg = "先に#splitReadObj(String)を実行して下さい";
090                        throw new RuntimeException( errMsg );
091                }
092                return remoteReadObj;
093        }
094}