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

## クラス DirWatch

- java.lang.Object
- - org.opengion.fukurou.fileexec.DirWatch

- すべての実装されたインタフェース:
    `Runnable`

      public class DirWatch
      extends Object
      implements Runnable

  フォルダに残っているファイルを再実行するためのプログラムです。 通常は、FileWatch で、パスを監視していますが、場合によっては、 イベントを拾いそこねることがあります。それを、フォルダスキャンして、拾い上げます。 １０秒間隔で繰り返しスキャンします。条件は、３０秒以上前のファイルです。
  変更履歴:
    7.0.0.0 (2017/07/07) 新規作成
  バージョン
    7.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK1.8,

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

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `static long` | `INIT_DELAY` | 最初にスキャンを実行するまでの遅延時間(秒) の初期値
    `static long` | `PERIOD` | スキャンする間隔(秒) の初期値
    `static long` | `TIME_DIFF` | ファイルのタイムスタンプとの差のチェック(秒) の初期値

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

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `DirWatch​(Path sPath)` | スキャンパスを引数に作成される、コンストラクタです。
    `DirWatch​(Path sPath, boolean useTree)` | スキャンパスと関数型インターフェースフォルダを引数に作成される、コンストラクタです。

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `callback​(Consumer<Path> act)` | ファイルパスを、引数に取る Consumer ダオブジェクトを設定します。
    `boolean` | `isErrorStatus()` | このフォルダスキャンで、最後に処理した結果が、エラーの場合に、true を返します。
    `void` | `run()` | Runnableインターフェースのrunメソッドです。
    `boolean` | `setAdd​(Path path)` | ｽｷｬﾝﾌｧｲﾙの重複ﾁｪｯｸ用SetにPathを追加します。
    `void` | `setClear()` | ｽｷｬﾝﾌｧｲﾙの重複ﾁｪｯｸ用Setをクリアします。
    `void` | `setPathEndsWith​(String... endKey)` | 指定のパスが、指定の文字列と、終端一致(endsWith) したパスのみ、callback されます。
    `void` | `setPathMatcher​(PathMatcher pathMch)` | 指定のパスの照合操作で、パターンに一致したパスのみ、callback されます。
    `void` | `start()` | 内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。
    `void` | `start​(long initDelay, long period, long timeDiff)` | 内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。
    `void` | `stop()` | 内部で作成した ScheduledFutureをキャンセルします。
    `String` | `toString()` | このオブジェクトの文字列表現を返します。

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

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

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

    - #### INIT_DELAY

          public static final long INIT_DELAY

      最初にスキャンを実行するまでの遅延時間(秒) の初期値
      関連項目:
        定数フィールド値

    - #### PERIOD

          public static final long PERIOD

      スキャンする間隔(秒) の初期値
      関連項目:
        定数フィールド値

    - #### TIME_DIFF

          public static final long TIME_DIFF

      ファイルのタイムスタンプとの差のチェック(秒) の初期値
      関連項目:
        定数フィールド値

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

    - #### DirWatch

          public DirWatch​(Path sPath)

      スキャンパスを引数に作成される、コンストラクタです。 ここでは、階層検索しない(useTree=false)で、インスタンス化します。
      パラメータ:
        `sPath` - 検索対象となるスキャンパス

    - #### DirWatch

          public DirWatch​(Path sPath,
                          boolean useTree)

      スキャンパスと関数型インターフェースフォルダを引数に作成される、コンストラクタです。
      パラメータ:
        `sPath` - 検索対象となるスキャンパス
        `useTree` - 階層スキャンするかどうか(true:する/false:しない)

  - ### メソッドの詳細

    - #### setPathMatcher

          public void setPathMatcher​(PathMatcher pathMch)

      指定のパスの照合操作で、パターンに一致したパスのみ、callback されます。 ここで指定したパターンの一致を判定し、一致した場合は、callback されます。 指定しない場合は、すべて許可されたことになります。 なお、#setPathEndsWith(String...) と、この設定は同時には行うことは出来ません。
      パラメータ:
        `pathMch` - パスの照合操作のパターン
      関連項目:
        `PathMatcher`, `setPathEndsWith(String...)`

    - #### setPathEndsWith

          public void setPathEndsWith​(String... endKey)

      指定のパスが、指定の文字列と、終端一致(endsWith) したパスのみ、callback されます。 これは、#setPathMatcher(PathMatcher) の簡易指定版です。 指定の終端文字列(一般には拡張子)のうち、ひとつでも一致すれば、true となりcallback されます。 指定しない場合(null)は、すべて許可されたことになります。 終端文字列の判定には、大文字小文字の区別を行いません。 なお、#setPathMatcher(PathMatcher) と、この設定は同時には行うことは出来ません。
      パラメータ:
        `endKey` - パスの終端一致のパターン
      関連項目:
        `setPathMatcher(PathMatcher)`

    - #### callback

          public void callback​(Consumer<Path> act)

      ファイルパスを、引数に取る Consumer ダオブジェクトを設定します。 これは、関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。 イベントが発生したときの ファイルパス(監視フォルダで、resolveされた、正式なフルパス)を引数に、 accept(Path) メソッドが呼ばれます。
      パラメータ:
        `act` - 1つの入力(ファイルパス) を受け取る関数型インタフェース
      関連項目:
        `Consumer.accept(Object)`

    - #### start

          public void start()

      内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。 初期値( initDelay=10L , period=30L , timeDiff=10L ) で、 スキャンを開始します。 #start( 10L , 30L , 10L ) と同じです。

    - #### start

          public void start​(long initDelay,
                            long period,
                            long timeDiff)

      内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。 スキャン開始の遅延時間と、スキャン間隔、ファイルのタイムスタンプとの比較を指定して、スキャンを開始します。 ファイルのタイムスタンプとの差とは、ある一定時間経過したファイルのみ、action をcall します。
      パラメータ:
        `initDelay` - 最初にスキャンを実行するまでの遅延時間(秒)
        `period` - スキャンする間隔(秒)
        `timeDiff` - ファイルのタイムスタンプとの差のチェック(秒)
      変更履歴:
        7.2.5.0 (2020/06/01) ScheduledExecutorServiceをインスタンス変数にする。

    - #### stop

          public void stop()

      内部で作成した ScheduledFutureをキャンセルします。
      変更履歴:
        7.2.5.0 (2020/06/01) ScheduledExecutorServiceを初期化する。

    - #### isErrorStatus

          public boolean isErrorStatus()

      このフォルダスキャンで、最後に処理した結果が、エラーの場合に、true を返します。 対象フォルダが見つからない場合や、検索時にエラーが発生した場合に、true にセットされます。 正常にスキャンできた場合は、false にリセットされます。
      戻り値:
        エラー状態(true:エラー,false:正常)
      変更履歴:
        7.2.5.0 (2020/06/01) 新規追加。

    - #### run

          public void run()

      Runnableインターフェースのrunメソッドです。 規定のスケジュール時刻が来ると、呼ばれる runメソッドです。 ここで、条件に一致したPathオブジェクトが存在すれば、コンストラクタで渡した 関数型インターフェースがcallされます。
      定義:
        `run` インタフェース内 `Runnable`
      変更履歴:
        6.8.2.2 (2017/11/02) ネットワークパスのチェックを行います。, 7.2.5.0 (2020/06/01) ネットワークパスのチェックを行います。

    - #### setAdd

          public boolean setAdd​(Path path)

      ｽｷｬﾝﾌｧｲﾙの重複ﾁｪｯｸ用SetにPathを追加します。 このセット内に、指定された要素がなかった場合はtrueを返します。
      パラメータ:
        `path` - 登録対象となるパス
      戻り値:
        このセット内に、指定された要素がなかった場合はtrue
      変更履歴:
        1.3.0 (2019/04/01) ｲﾍﾞﾝﾄが同時に発生する可能性があるので、Setで重複を除外します。

    - #### setClear

          public void setClear()

      ｽｷｬﾝﾌｧｲﾙの重複ﾁｪｯｸ用Setをクリアします。 短時間に大量のﾌｧｲﾙを処理する場合にｲﾍﾞﾝﾄとDirWatchが重複したり、 DirWatch 自身が繰返しで重複処理する場合を想定して、同じﾌｧｲﾙ名は処理しません。 ただし、DATﾌｧｲﾙは、基本同じﾌｧｲﾙ名で来るので、あるタイミングでクリアする必要があります。
      変更履歴:
        1.3.0 (2019/04/01) ｲﾍﾞﾝﾄが同時に発生する可能性があるので、Setで重複を除外します。

    - #### toString

          public String toString()

      このオブジェクトの文字列表現を返します。
      オーバーライド:
        `toString` クラス内 `Object`
      戻り値:
        このオブジェクトの文字列表現