org.opengion.hayabusa.taglib

## クラス FileQueryTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.QueryTag
        - - org.opengion.hayabusa.taglib.FileQueryTag

- すべての実装されたインタフェース:
    Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class FileQueryTag
      extends QueryTag

       ファイルを検索し、DBTableModel にセットするタグです。

       ファイルの検索結果は、[WRITABLE],LEVEL,FILE_TYPE,PARENT,NAME,LASTMODIFIED,FILE_LENGTH,RWH,[MD5],[TO_PARENT,TO_NAME],[････]
       のカラムを持つ DBTableModel にセット されます。このカラムは、固定です。
       並び替えについては、このタグで指定しますが、ファイルの選別(where 条件)は、
       BODY 部に記述する fileWhere タグで指定します。(複数指定可能))

       [カラム名]      検索するファイルの属性は、以下のカラム名で作成されます。
           [WRITABLE]       useWritable=trueで、先頭カラムに、WRITABLE カラムが挿入されます。
            LEVEL           ディレクトリを展開する場合のレベル。
            FILE_TYPE       ファイル(F)かディレクトリ(D)であるか判定。
            PARENT          この抽象パス名の親のパス名文字列を返します。
            NAME            この抽象パス名が示すファイルまたはディレクトリの名前を返します。
            LASTMODIFIED    最後に変更された時刻を返します。
            FILE_LENGTH     ファイルの長さを返します。
            RWH             読み込み、書き込み、隠し属性をそれぞれ、ｒ,w,h で表します。
           [MD5]            useMD5=trueで、MD5 というカラムを追加したうえで、ファイルのMD5計算を行います。
           [TEXT]           useText=trueで、ファイルの内容を文字列にして、TEXTというカラムに設定します。
           [TO_PARENT]      useUpdateClms=trueで、fileUpdateタグでCOPYやMOVEを行う時に使用する必須となるカラム(TO_PARENT,TO_NAME)を追加します。
           [TO_NAME]        同上
           [････]           addClms属性で指定されたカラムを追加します。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:fileQuery from="…" multi="true/false" >
                     <og:fileWhere … />
                      …
                 </og:fileQuery>
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:fileQuery
               from             ○【TAG】検索を開始するファイルまたはディレクトリを指定します(必須)。
               multi              【TAG】多段階展開するか、１レベル展開するかどうか[true:多段階/false:１レベル]を指定します(初期値:false:１レベル)。
               level              【TAG】多段階展開するレベルを指定します(初期値:100)。
               orderBy            【TAG】ソートするカラム名を指定します(一つのみ)。
               desc               【TAG】表示順を逆転するかどうか[true/false]を指定します(初期値:false)。
               useWritable        【TAG】先頭カラムに、WRITABLE カラムを追加するかどうか[true/false]を指定します(初期値:false)。
               useMD5             【TAG】MD5カラムを追加したうえで、MD5計算を行うかどうか[true/false]を指定します(初期値:false)。
               useText            【TAG】TEXTカラムを追加したうえで、ファイルの内容を読み込むかどうか[true/false]を指定します(初期値:false)。
               useUpdateClms      【TAG】TO_PARENT、TO_NAMEカラムを追加するかどうか[true/false]を指定します(初期値:false)。
               addClms            【TAG】検索結果のカラム列に追加するカラム名を、CSV形式で指定します。
               fileType           【TAG】選択対象[FILE/DIR]を指定します。下位展開は考慮(multi 属性準拠)されます。
               addFrom            【TAG】from属性で指定された基準ファイル/フォルダ自体をリストに追加するかどうか[true/false]を指定します(初期値:true)。
               command            【TAG】コマンド (NEW,RENEW)をセットします("NEW" と "RENEW" 時のみ実行する(初期値:NEW))。
               maxRowCount        【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限])。
               displayMsg         【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=])
               overflowMsg        【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
               stopZero           【TAG】検索結果が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
               tableId            【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)。
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)。
           >   ... Body ...
           </og:fileQuery>

         ●使用例
            ・一般的な属性でファイルの検索を行います。
                 <og:fileQuery
                        from    = "d:/webapps/dbdef/jsp/"
                        multi   = "true"
                        command = "{@command}"  >
                    <og:fileWhere endWith=".jsp" />
              </og:fileQuery>

            ・最終変更日で逆順ソートする。対象は、2002/10/01 以降に変更されたファイル。
                <og:fileQuery
                        from    = "d:/webapps/dbdef/jsp/"
                        multi   = "true"
                        orderBy = "LASTMODIFIED"
                        desc    = "true"
                        command = "{@command}"  >
                    <og:fileWhere lastModified="20021001000000" />
                </og:fileQuery>

  変更履歴:

    4.0.0.0 (2005/01/31) 内部ロジック改定

  機能分類
    その他入力
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.QueryTag

      `CMD_NEW, CMD_RENEW, command, displayMsg, dyStart, ERR_MSG_ID, errCode, errMessage, executeCount, maxRowCount, names, outMessage, quotCheck, skipRowCount, sql, stopError, table, tableId, useTimeView, xssCheck`

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.TagSupport

      `id, pageContext`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `FileQueryTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `protected void` | `execute(File fin, int lvl)` FileQuery を実行します。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setAddClms(String clms)` 【TAG】検索結果のカラム列に追加するカラム名を、CSV形式で指定します。
    `void` | `setAddFrom(String flag)` 【TAG】from属性で指定された基準ファイル/フォルダ自体をリストに追加するかどうか[true/false]を指定します(初期値:true)。
    `void` | `setDesc(String flag)` 【TAG】表示順を逆転するかどうか[true/false]を指定します(初期値:false)。
    `protected void` | `setFileFilter(FileFilter filter)` FileFilterオブジェクトをセットします。
    `void` | `setFileType(String str)` 【TAG】ファイル名が、指定されたファイルタイプ[DIR/FILE]と一致した場合、スルー(選択)されます(初期値:null)。
    `void` | `setFrom(String url)` 【TAG】ファイルの検索元となるディレクトリを指定します (初期値:FILE_URL[=filetemp/])。
    `void` | `setLevel(String lvl)` 【TAG】多段階展開するレベルを指定します(初期値:100)。
    `void` | `setMulti(String mlti)` 【TAG】多段階展開するか、１レベル展開するかどうか[true/false]を指定します(初期値:false)。
    `void` | `setOrderBy(String clm)` 【TAG】ソートするカラム名を指定します(一つのみ)。
    `void` | `setUseMD5(String flag)` 【TAG】MD5カラムを追加したうえで、MD5計算を行うかどうか[true/false]を指定します(初期値:false)。
    `void` | `setUseText(String flag)` 【TAG】TEXTカラムを追加したうえで、ファイルの内容を読み込むかどうか[true/false]を指定します(初期値:false)。
    `void` | `setUseUpdateClms(String flag)` 【TAG】TO_PARENT、TO_NAMEカラムを追加するかどうか[true/false]を指定します(初期値:false)。
    `void` | `setUseWritable(String flag)` 【TAG】先頭カラムに、WRITABLE カラムを追加するかどうか[true/false]を指定します(初期値:false)。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.QueryTag

      `doEndTag, doStartTag, execute, getRequest, setCheckNames, setCommand, setDbid, setDisplayMsg, setMainTrans, setMaxRowCount, setModifyType, setNames, setNotfoundMsg, setOutMessage, setOverflowMsg, setQueryType, setQuotCheck, setSkipRowCount, setStopError, setStopZero, setTableId, setTrace, setUseBeforeHtmlTag, setUseTimeView, setXssCheck`

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.BodyTagSupport

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

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

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

    - ### インタフェースから継承されたメソッド javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

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

    - #### FileQueryTag

          public FileQueryTag()

      デフォルトコンストラクター
      変更履歴:

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doAfterBody

          public int doAfterBody()

      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
        `doAfterBody` インタフェース内 `IterationTag`
      オーバーライド:
        `doAfterBody` クラス内 `QueryTag`
      戻り値:
        後続処理の指示(SKIP_BODY)
      変更履歴:

        5.3.4.0 (2011/04/01) 指定カラムのソート処理機能追加
        5.3.5.0 (2011/05/01) 最初のファイルが存在する場合のみ、実行する。

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `QueryTag`
      変更履歴:

        5.3.4.0 (2011/04/01) 指定カラムのソート処理機能、カラム追加機能、fileType追加
        5.3.9.0 (2011/09/01) addFrom属性追加
        5.7.4.3 (2014/03/28) useWritable,useMD5属性追加。valClms を defClms に置き換え。
        6.2.2.0 (2015/03/27) useText属性追加。

    - #### execute

          protected void execute(File fin,
                                 int lvl)

      FileQuery を実行します。
      パラメータ:
        `fin` - 検索を開始するファイル/ディレクトリ
        `lvl` - 階層展開レベル
      変更履歴:

        5.3.4.0 (2011/04/01) fileType の条件に合致する場合だけ、データを作成する。
        5.3.7.0 (2011/07/01) フォルダにアクセスできない場合は、null となるのでその対応
        5.3.9.0 (2011/09/01) addFrom属性追加

    - #### setFrom

          public void setFrom(String url)

      【TAG】ファイルの検索元となるディレクトリを指定します (初期値:FILE_URL[=filetemp/])。
      パラメータ:
        `url` - ファイルの検索元となるディレクトリ
      説明:

             ファイルの検索元となるディレクトリを指定します。

      変更履歴:

        4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。
        6.4.2.1 (2016/02/05) URLの最後に、"/" を追加する処理を廃止。
        6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加。

    - #### setMulti

          public void setMulti(String mlti)

      【TAG】多段階展開するか、１レベル展開するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `mlti` - 多段階展開するか [true:する/false:１レベル]
      説明:

             初期値は、false (１レベル) です。

    - #### setLevel

          public void setLevel(String lvl)

      【TAG】多段階展開するレベルを指定します(初期値:100)。
      パラメータ:
        `lvl` - 多段階展開するレベル
      説明:

    - #### setOrderBy

          public void setOrderBy(String clm)

      【TAG】ソートするカラム名を指定します(一つのみ)。
      パラメータ:
        `clm` - ソートするカラム名 (一つのみ、逆順はマイナスを付ける)
      関連項目:
        `setDesc( String )`
      説明:

             ソートするカラム名を、"LEVEL","FILE_TYPE","PARENT","NAME","LASTMODIFIED","FILE_LENGTH","RWH"
             から一つ選びます。
             これは、複数カラムでのソートはできません。
             逆順にソートする場合は、desc属性を true にセットください。
             + をつけても、無効(カラム名がないということ)でエラーになります。

      変更履歴:

        5.3.4.0 (2011/04/01) 新規追加
        6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。

    - #### setDesc

          public void setDesc(String flag)

      【TAG】表示順を逆転するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - 表示順逆順 [逆順:true/正順:false]
      関連項目:
        `setOrderBy( String )`
      説明:

             orderBy 属性で指定した表示順を、逆順にするかどうかを指定できます。
             初期値は、false (昇順) です。

      変更履歴:

        5.3.4.0 (2011/04/01) 新規追加

    - #### setUseWritable

          public void setUseWritable(String flag)

      【TAG】先頭カラムに、WRITABLE カラムを追加するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - WRITABLEカラム追加 [true:する/false:しない]
      説明:

             ファイル検索結果の１レコード単位に、書き込み許可/禁止属性を付けるには、
             カラム列の先頭に、WRITABLE カラムを追加する必要があります。
             初期値は、false (追加しない) です。

      変更履歴:

        5.7.4.3 (2014/03/28) 新規追加

    - #### setUseMD5

          public void setUseMD5(String flag)

      【TAG】MD5カラムを追加したうえで、MD5計算を行うかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - MD5カラム追加 [true:する/false:しない]
      説明:

             ファイルの改変等をチェックするには、ファイルのハッシュ値を拾う必要があります。
             タイムスタンプとサイズ（LASTMODIFIED,FILE_LENGTH）でも、類似の処理は可能ですが、
             より、厳密な一致をみるなら、MD5でハッシュした結果を突き合わせるのがベストです。
             useMD5=true に設定すると、MD5 というカラムを追加したうえで、MD5計算結果をセットします。
             初期値は、false (追加しない) です。

      変更履歴:

        5.7.4.3 (2014/03/28) 新規追加

    - #### setUseText

          public void setUseText(String flag)

      【TAG】TEXTカラムを追加したうえで、ファイルの内容を読み込むかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - TEXTカラム追加 [true:する/false:しない]
      説明:

             ファイルの内容を取得する場合に、true に設定します。
             初期値は、false (追加しない) です。

      変更履歴:

        6.2.2.0 (2015/03/27) TEXTカラムを追加したうえで、ファイルの内容を読み込むかどうか[true/false]を指定します(初期値:false)。

    - #### setUseUpdateClms

          public void setUseUpdateClms(String flag)

      【TAG】TO_PARENT、TO_NAMEカラムを追加するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - TO_PARENT、TO_NAMEカラム追加 [true:追加する/false:追加しない]
      関連項目:
        `setAddClms( String )`, `FileUpdateTag`
      説明:

             fileUpdateタグでは、ファイルのCOPYやMOVEが出来ますが、そのコピー先、移動先の
             ファイルを行ごとに指定する場合、TO_PARENT、TO_NAMEカラムという固定名のカラムが
             必要です。
             これを、addClms 属性で指定する代わりに、この属性で、true をセットすることで、
             自動的に追加されます。
             初期値は、false (追加しない) です。

      変更履歴:

        5.3.4.0 (2011/04/01) 新規追加

    - #### setAddClms

          public void setAddClms(String clms)

      【TAG】検索結果のカラム列に追加するカラム名を、CSV形式で指定します。
      パラメータ:
        `clms` - 追加するカラム名(CSV形式)
      関連項目:
        `setUseUpdateClms( String )`
      説明:

             デフォルトのカラム名、[WRITABLE],LEVEL,FILE_TYPE,PARENT,NAME,LASTMODIFIED,FILE_LENGTH,RWH,[MD5],[TO_PARENT,TO_NAME]
             以外に、指定のカラム名を追加することが可能です。
             これは、ファイル検索結果以外の項目を追加して、データベースに書き込む場合に、利用できます。
             並び順は、デフォルトカラムの後ろに、指定のカラムの順番で付きます。
             ここで追加したカラムには、カラムリソースの初期値がセットされます。

      変更履歴:

        5.3.4.0 (2011/04/01) 新規追加

    - #### setFileType

          public void setFileType(String str)

      【TAG】ファイル名が、指定されたファイルタイプ[DIR/FILE]と一致した場合、スルー(選択)されます(初期値:null)。
      パラメータ:
        `str` - ファイルタイプ [null:スルー/DIR:ディレクトリのみ検索/FILE:ファイルのみ検索]
      説明:

             大文字小文字は区別しません。
             ファイルタイプ は、DIR,FILE が指定できます。
             DIR は、ディレクトリのみ検索します。(階層下がりも行います)
             FILEは、ファイルのみ検索します。(階層下がりも行います)
             引数が null の場合は、追加しません。(つまり、すべてスルーされます。)

      変更履歴:

        5.3.4.0 (2011/04/01) fileType メソッドで選択対象指定の追加

    - #### setAddFrom

          public void setAddFrom(String flag)

      【TAG】from属性で指定された基準ファイル/フォルダ自体をリストに追加するかどうか[true/false]を指定します(初期値:true)。
      パラメータ:
        `flag` - 基準をリストに追加するかどうか [true:追加する/false:追加しない]
      説明:

             初期値はtrue(追加する)です。

      変更履歴:

        5.3.9.0 (2011/09/01) 新規作成

    - #### setFileFilter

          protected void setFileFilter(FileFilter filter)

      FileFilterオブジェクトをセットします。 これは、BODY 部に登録した、FileWhereタグによって設定された ファイルフィルターです。
      パラメータ:
        `filter` - オブジェクト

    - #### toString

          public String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `QueryTag`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.