パッケージ org.opengion.fukurou.util

## クラス AbstractConnect

- java.lang.Object
- - org.opengion.fukurou.util.AbstractConnect

- すべての実装されたインタフェース:
    `ConnectIF`
  直系の既知のサブクラス:
    `FTPConnect`, `SFTPConnect`, `SMBConnect`

      public abstract class AbstractConnect
      extends java.lang.Object
      implements ConnectIF

  AbstractConnect.java は、共通的に使用される ファイル伝送関連の基本機能を実装した、Abstractクラスです。 -host=サーバー -user=ユーザー -passwd=パスワード -remoteFile=接続先のファイル名 を必須設定します。 -localFile=ローカルのファイル名は、必須ではありませんが、-command=DEL の場合にのみ不要であり、 それ以外の command の場合は、必要です。 -command=[GET/PUT/DEL/GETDIR/PUTDIR/DELDIR] は、サーバーに対しての処理の方法を指定します。 GET:サーバーからローカルにファイル転送します(初期値) PUT:ローカルファイルをサーバーに PUT(STORE、SAVE、UPLOAD、などと同意語)します。 DEL:サーバーの指定のファイルを削除します。この場合のみ、-localFile 属性の指定は不要です。 GETDIR,PUTDIR,DELDIR:指定のフォルダ以下のファイルを処理します。 -mkdirs=[true/false] は、受け側のファイル(GET時:LOCAL、PUT時:サーバー)に取り込むファイルのディレクトリが 存在しない場合に、作成するかどうかを指定します(初期値:true) 通常、サーバーに、フォルダ階層を作成してPUTする場合、動的にフォルダ階層を作成したいケースで便利です。 逆に、フォルダは確定しており、指定フォルダ以外に PUT するのはバグっていると事が分かっている場合には false に設定して、存在しないフォルダにPUT しようとすると、エラーになるようにします。 引数文字列中に空白を含む場合は、ダブルコーテーション("") で括って下さい。 引数文字列の 『=』の前後には、空白は挟めません。必ず、-key=value の様に 繋げてください。
  形式サンプル:
    XXXConnect -host=サーバー -user=ユーザー -passwd=パスワード -remoteFile=接続先のファイル名 [-localFile=ローカルのファイル名] [-command=[GET/PUT/DEL/GETDIR/PUTDIR/DELDIR] ] [-display=[true/false] ] ・・・・ -host=サーバー ：接続先のサーバーのアドレスまたは、サーバー名 -user=ユーザー ：接続するユーザー名 -passwd=パスワード ：接続するユーザーのパスワード -remoteFile=接続先のファイル名 ：接続先のサーバー側のファイル名。PUT,GET 関係なくFTP側として指定します。 [-localFile=ローカルのファイル名] ：ローカルのファイル名。PUT,GET 関係なくローカルファイルを指定します。 [-port=ポート ] ：接続するサーバーのポートを指定します。 [-command=[GET/PUT/DEL] ] ：サーバー側での処理の方法を指定します。 [GETDIR/PUTDIR/DELDIR]] GET:FTP⇒LOCAL、PUT:LOCAL⇒FTP への転送です(初期値:GET) DEL:FTPファイルを削除します。 GETDIR,PUTDIR,DELDIR 指定のフォルダ以下のファイルを処理します。 [-mkdirs=[true/false] ] ：受け側ファイル(GET時:LOCAL、PUT時:サーバー)にディレクトリを作成するかどうか(初期値:true) (false:ディレクトリが無ければ、エラーにします。) [-encode=エンコード名 ] ：日本語ファイル名などのエンコード名を指定します(初期値:Windows-31J) [-timeout=タイムアウト[秒] ] ：Dataタイムアウト(初期値:600 [秒]) [-display=[false/true] ] ：trueは、検索状況を表示します(初期値:false) [-debug=[false|true] ] ：デバッグ情報を標準出力に表示する(true)かしない(false)か(初期値:false[表示しない])
  変更履歴:
    5.1.6.0 (2010/05/01) 新規追加
  バージョン
    5.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `protected static int` | `BUFFER_MIDDLE` | StringBilderなどの初期値を設定します。
    `protected static java.lang.String` | `CR` | システムの改行コードを設定します。
    `static boolean` | `FLAG_NG` | 異常フラグ false
    `static boolean` | `FLAG_OK` | 正常フラグ true
    `protected java.lang.String` | `host` | サーバー
    `protected boolean` | `isDebug` | デバッグ情報を表示するかどうか
    `protected boolean` | `isDisplay` | 検索状況を表示するかどうか
    `protected boolean` | `isMkdirs` | ディレクトリを作成するかどうか
    `protected java.lang.String` | `passwd` | パスワード
    `protected java.lang.String` | `port` | ポート
    `protected int` | `timeout` | Dataタイムアウト
    `static int` | `TIMEOUT` | Dataタイムアウト(初期値:600 [秒])
    `protected java.lang.String` | `user` | ユーザー

  - ### コンストラクタの概要

    コンストラクタ
    修飾子 | コンストラクタ | 説明
    --- | --- | ---
    `protected` | `AbstractConnect()` | デフォルトコンストラクター

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド abstractメソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `action​(java.lang.String command, java.lang.String localFile, java.lang.String remoteFile)` | command , localFile , remoteFile を元に、FTP処理を行います。
    `protected abstract void` | `actionDEL​(java.lang.String remoteFile)` | command="DEL" が指定されたときの処理を行います。
    `protected abstract void` | `actionDELdir​(java.lang.String remoteDir)` | command="DELDIR" が指定されたときの処理を行います。
    `protected abstract void` | `actionGET​(java.lang.String localFile, java.lang.String remoteFile)` | command="GET" が指定されたときの処理を行います。
    `protected abstract void` | `actionGETdir​(java.lang.String localDir, java.lang.String remoteDir)` | command="GETDIR" が指定されたときの処理を行います。
    `protected abstract void` | `actionPUT​(java.lang.String localFile, java.lang.String remoteFile)` | command="PUT" が指定されたときの処理を行います。
    `protected void` | `actionPUTdir​(java.lang.String localDir, java.lang.String remoteDir)` | command="PUTDIR" が指定されたときの処理を行います。
    `protected java.lang.String` | `addFile​(java.lang.String dir, java.lang.String file)` | ディレクトリとファイル名を合成します。
    `abstract void` | `connect()` | サーバーへの接続、ログインを行います。
    `abstract void` | `disconnect()` | サーバーとの接続をクローズします。
    `protected void` | `errAppend​(java.lang.Object msg)` | 処理中に発生したエラーメッセージをセットします。
    `protected void` | `errAppend​(java.lang.Object... msgs)` | 処理中に発生したエラーメッセージをセットします。
    `java.lang.String` | `getErrMsg()` | 処理中に発生したエラーメッセージを取り出します。
    `protected java.lang.String` | `getPort()` | ポートを取得します。
    `protected int` | `getPort​(int defPort)` | ポートを取得します。
    `protected void` | `makeLocalDir​(java.lang.String localFile)` | ローカルファイルのディレクトリを作成します。
    `void` | `setDebug​(boolean isDebug)` | デバッグ情報の表示可否 を設定します(初期値:false:表示しない)。
    `void` | `setDisplay​(boolean isDisplay)` | 実行状況の表示可否 を設定します(初期値:false:表示しない)。
    `void` | `setHostUserPass​(java.lang.String host, java.lang.String user, java.lang.String passwd)` | サーバーの、ホスト、ユーザー、パスワードを設定します。
    `void` | `setMkdirs​(boolean isMkdirs)` | それぞれの受け側ファイルにディレクトリを作成するかどうか(初期値:true:作成する)。
    `void` | `setPort​(java.lang.String port)` | 接続に利用するポート番号を設定します。
    `void` | `setTimeout​(int timeout)` | タイムアウトを秒で指定します(初期値:600 [秒])。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### CR

          protected static final java.lang.String CR

      システムの改行コードを設定します。

    - #### BUFFER_MIDDLE

          protected static final int BUFFER_MIDDLE

      StringBilderなどの初期値を設定します。 200
      関連項目:
        定数フィールド値

    - #### FLAG_OK

          public static final boolean FLAG_OK

      正常フラグ true
      関連項目:
        定数フィールド値

    - #### FLAG_NG

          public static final boolean FLAG_NG

      異常フラグ false
      関連項目:
        定数フィールド値

    - #### TIMEOUT

          public static final int TIMEOUT

      Dataタイムアウト(初期値:600 [秒])
      関連項目:
        定数フィールド値

    - #### host

          protected java.lang.String host

      サーバー

    - #### user

          protected java.lang.String user

      ユーザー

    - #### passwd

          protected java.lang.String passwd

      パスワード

    - #### port

          protected java.lang.String port

      ポート

    - #### isMkdirs

          protected boolean isMkdirs

      ディレクトリを作成するかどうか

    - #### timeout

          protected int timeout

      Dataタイムアウト

    - #### isDisplay

          protected boolean isDisplay

      検索状況を表示するかどうか

    - #### isDebug

          protected boolean isDebug

      デバッグ情報を表示するかどうか

  - ### コンストラクタの詳細

    - #### AbstractConnect

          protected AbstractConnect()

      デフォルトコンストラクター
      変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### connect

          public abstract void connect()

      サーバーへの接続、ログインを行います。
      定義:
        `connect` インタフェース内 `ConnectIF`

    - #### action

          public void action​(java.lang.String command,
                             java.lang.String localFile,
                             java.lang.String remoteFile)

      command , localFile , remoteFile を元に、FTP処理を行います。 このメソッドは、connect( String , String , String )メソッド、および、 paramInit() 実行後に、呼び出す必要があります。 ※ 内部で、command に指定できない値をセットしたか、何らかのエラーが発生した場合。
      定義:
        `action` インタフェース内 `ConnectIF`
      パラメータ:
        `command` - GET:HOST⇒LOCAL 、PUT:LOCAL⇒HOST 、DEL:HOSTファイルを削除
        `localFile` - ローカルのファイル名
        `remoteFile` - HOST接続先のファイル名
      変更履歴:
        6.4.2.0 (2016/01/29) ex.printStackTrace() を、ThrowUtil#ogStackTrace(Throwable) に置き換え。

    - #### disconnect

          public abstract void disconnect()

      サーバーとの接続をクローズします。 ログインされている場合は、ログアウトも行います。 コネクトされている場合は、ディスコネクトします。
      定義:
        `disconnect` インタフェース内 `ConnectIF`

    - #### actionGET

          protected abstract void actionGET​(java.lang.String localFile,
                                            java.lang.String remoteFile)
                                     throws java.io.IOException

      command="GET" が指定されたときの処理を行います。 接続先のサーバー側のファイル名をローカルにダウンロードします。
      パラメータ:
        `localFile` - ローカルのファイル名
        `remoteFile` - 接続先のファイル名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### actionGETdir

          protected abstract void actionGETdir​(java.lang.String localDir,
                                               java.lang.String remoteDir)
                                        throws java.io.IOException

      command="GETDIR" が指定されたときの処理を行います。 接続先のサーバー側のディレクトリ以下をローカルディレクトリに階層構造のままダウンロードします。
      パラメータ:
        `localDir` - ローカルのディレクトリ名
        `remoteDir` - 接続先のディレクトリ名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### actionPUT

          protected abstract void actionPUT​(java.lang.String localFile,
                                            java.lang.String remoteFile)
                                     throws java.io.IOException

      command="PUT" が指定されたときの処理を行います。 ローカルファイルを、接続先のサーバー側にアップロードします。
      パラメータ:
        `localFile` - ローカルのファイル名
        `remoteFile` - 接続先のファイル名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### actionPUTdir

          protected void actionPUTdir​(java.lang.String localDir,
                                      java.lang.String remoteDir)
                               throws java.io.IOException

      command="PUTDIR" が指定されたときの処理を行います。 ローカルファイルのディレクトリ以下を、接続先のサーバー側のディレクトリに階層構造のままアップロードします。
      パラメータ:
        `localDir` - ローカルのディレクトリ名
        `remoteDir` - 接続先のディレクトリ名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        5.3.7.0 (2011/07/01) フォルダにアクセスできない場合は、エラーを返します。, 6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### actionDEL

          protected abstract void actionDEL​(java.lang.String remoteFile)
                                     throws java.io.IOException

      command="DEL" が指定されたときの処理を行います。 接続先のサーバー側のファイル名を削除します。
      パラメータ:
        `remoteFile` - 接続先のファイル名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### actionDELdir

          protected abstract void actionDELdir​(java.lang.String remoteDir)
                                        throws java.io.IOException

      command="DELDIR" が指定されたときの処理を行います。 接続先のサーバー側のディレクトリ名を削除します。
      パラメータ:
        `remoteDir` - 接続先のディレクトリ名
      例外:
        `java.io.IOException` - 何らかのエラーが発生した場合。
      変更履歴:
        6.0.2.5 (2014/10/31) throws で、Exception を返していたのを、IOException に限定します。

    - #### makeLocalDir

          protected void makeLocalDir​(java.lang.String localFile)
                               throws java.io.IOException

      ローカルファイルのディレクトリを作成します。 引数のファイル名は、ファイル名です。作成するディレクトリは、そのファイルオブジェクトの getParentFile() で取得されるディレクトリまでを作成します。 ※ ローカルファイルのディレクトリの作成に失敗した場合は、RuntimeException が throw されます。
      パラメータ:
        `localFile` - ローカルのファイル名
      例外:
        `java.io.IOException` - File#getCanonicalFile() で発生する入出力エラー

    - #### addFile

          protected java.lang.String addFile​(java.lang.String dir,
                                             java.lang.String file)

      ディレクトリとファイル名を合成します。 単純に、ディレクトリの最後と、ファイルの最初の、"/" をチェックし、 存在すれば、そのまま、結合し、存在しなければ、"/" を追加します。 両方に存在する場合は、片方をはずします。
      パラメータ:
        `dir` - ディレクトリ名
        `file` - ファイル名
      戻り値:
        合成されたファイル名

    - #### setHostUserPass

          public void setHostUserPass​(java.lang.String host,
                                      java.lang.String user,
                                      java.lang.String passwd)

      サーバーの、ホスト、ユーザー、パスワードを設定します。
      定義:
        `setHostUserPass` インタフェース内 `ConnectIF`
      パラメータ:
        `host` - サーバー
        `user` - ユーザー
        `passwd` - パスワード

    - #### setPort

          public void setPort​(java.lang.String port)

      接続に利用するポート番号を設定します。
      定義:
        `setPort` インタフェース内 `ConnectIF`
      パラメータ:
        `port` - 接続に利用するポート番号

    - #### getPort

          protected java.lang.String getPort()

      ポートを取得します。 設定されている生のport属性(nullもありうる)を返します。
      戻り値:
        ポート

    - #### getPort

          protected int getPort​(int defPort)

      ポートを取得します。 設定されているport属性が、nullの場合は、defPortを返します。
      パラメータ:
        `defPort` - port が null の場合の初期値
      戻り値:
        ポート

    - #### setMkdirs

          public void setMkdirs​(boolean isMkdirs)

      それぞれの受け側ファイルにディレクトリを作成するかどうか(初期値:true:作成する)。 -mkdirs=[true/false] は、受け側のファイル(GET時:LOCAL、PUT時:サーバー)に取り込むファイルのディレクトリが 存在しない場合に、作成するかどうかを指定します(初期値:true) 通常、サーバーに、フォルダ階層を作成してPUTする場合、動的にフォルダ階層を作成したいケースで便利です。 逆に、フォルダは確定しており、指定フォルダ以外に PUT するのはバグっていると事が分かっている場合には false に設定して、存在しないフォルダにPUT しようとすると、エラーになるようにします。
      定義:
        `setMkdirs` インタフェース内 `ConnectIF`
      パラメータ:
        `isMkdirs` - 受け側ファイルにディレクトリを作成するかどうか。true:作成する

    - #### setTimeout

          public void setTimeout​(int timeout)

      タイムアウトを秒で指定します(初期値:600 [秒])。 オリジナルの FTPClient#setDataTimeout( int ) は、ミリ秒でセット しますが、ここのメソッドでは、秒でセットします。
      定義:
        `setTimeout` インタフェース内 `ConnectIF`
      パラメータ:
        `timeout` - タイムアウト[秒]
      例外:
        `java.lang.RuntimeException` - タイムアウトの指定が大きすぎた場合

    - #### setDisplay

          public void setDisplay​(boolean isDisplay)

      実行状況の表示可否 を設定します(初期値:false:表示しない)。
      定義:
        `setDisplay` インタフェース内 `ConnectIF`
      パラメータ:
        `isDisplay` - 実行状況の表示可否

    - #### setDebug

          public void setDebug​(boolean isDebug)

      デバッグ情報の表示可否 を設定します(初期値:false:表示しない)。
      定義:
        `setDebug` インタフェース内 `ConnectIF`
      パラメータ:
        `isDebug` - デバッグ情報の表示可否

    - #### errAppend

          protected void errAppend​(java.lang.Object msg)

      処理中に発生したエラーメッセージをセットします。
      パラメータ:
        `msg` - メッセージ化したいオブジェクト

    - #### errAppend

          protected void errAppend​(java.lang.Object... msgs)

      処理中に発生したエラーメッセージをセットします。
      パラメータ:
        `msgs` - Object...

    - #### getErrMsg

          public java.lang.String getErrMsg()

      処理中に発生したエラーメッセージを取り出します。
      定義:
        `getErrMsg` インタフェース内 `ConnectIF`
      戻り値:
        エラーメッセージ
      このメソッドは、nullを返しません