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

- すべての実装されたインタフェース:
    java.io.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計算を行います。 [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)。
               useUpdateClms      【TAG】TO_PARENT、TO_NAMEカラムを追加するかどうか[true/false]を指定します(初期値:false)。
               addClms            【TAG】検索結果のカラム列に追加するカラム名を、カンマ区切り文字で指定します。
               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[=])v
               overflowMsg        【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
               tableId            【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)。
               storageType		【TAG】読み取り元ストレージタイプを指定します(初期値:CLOUD_TARGET)
               bucketName			【TAG】読み取り元バケット名を指定します(初期値:CLOUD_BUCKET)
               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) 内部ロジック改定
    5.10.9.0 (2019/03/01) oota クラウドストレージ対応を追加。(Fileクラスを拡張)

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

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

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

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

    - ### クラスから継承されたフィールド 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()`

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

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

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

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

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

      `add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, 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()

  - ### メソッドの詳細

    - #### 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) 最初のファイルが存在する場合のみ、実行する。
        5.10.9.0 (2019/03/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 に置き換え。
        5.10.9.0 (2019/03/01) storageType,bucketName属性を追加。

    - #### execute

          protected void execute(java.io.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(java.lang.String url)

      【TAG】ファイルの検索元となるディレクトリを指定します。
      パラメータ:
        `url` - ファイルの検索元となるディレクトリ
      説明:

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

      変更履歴:

        4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。

    - #### setMulti

          public void setMulti(java.lang.String mlti)

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

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

    - #### setLevel

          public void setLevel(java.lang.String lvl)

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

    - #### setOrderBy

          public void setOrderBy(java.lang.String clm)

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

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

      変更履歴:

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

    - #### setDesc

          public void setDesc(java.lang.String flag)

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

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

      変更履歴:

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

    - #### setUseWritable

          public void setUseWritable(java.lang.String flag)

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

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

      変更履歴:

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

    - #### setUseMD5

          public void setUseMD5(java.lang.String flag)

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

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

      変更履歴:

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

    - #### setUseUpdateClms

          public void setUseUpdateClms(java.lang.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(java.lang.String clms)

      【TAG】検索結果のカラム列に追加するカラム名を、カンマ区切り文字で指定します。
      パラメータ:
        `clms` - 検索結果のカラム列に追加するカラム名を、カンマ区切り文字で指定します。
      関連項目:
        `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(java.lang.String str)

      【TAG】ファイル名が、指定されたファイルタイプ[DIR/FILE]と一致した場合、スルー(選択)されます。
      パラメータ:
        `str` - 指定するファイルタイプ(DIR,FILE,null)
      説明:

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

      変更履歴:

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

    - #### setAddFrom

          public void setAddFrom(java.lang.String flg)

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

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

      変更履歴:

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

    - #### setFileFilter

          protected void setFileFilter(java.io.FileFilter filter)

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

    - #### setStorageType

          public void setStorageType(java.lang.String storage)

      【TAG】読み取り元ストレージタイプを設定します。
      パラメータ:
        `storage` - ストレージタイプ
      説明:

             ファイルを読み取り元の、ストレージタイプを設定します。
             未設定の場合は、システムリソースの「CLOUD_TARGET」が参照されます。
             自身のサーバを指定する場合は、「default」を設定してください。

      変更履歴:

        5.10.9.0 (2019/03/01) 新規追加

    - #### setBucketName

          public void setBucketName(java.lang.String bucket)

      【TAG】読み取り元バケット名を設定します。
      パラメータ:
        `bucket` - バケット名
      説明:

             ファイルを読み取り元の、バケット名を指定します。
             クラウドストレージ利用時のみ有効です。
             未設定の場合は、システムリソースの「CLOUD_BUKET」が参照されます。

      変更履歴:

        5.10.9.0 (2019/03/01) 新規追加

    - #### toString

          public java.lang.String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `QueryTag`
      戻り値:
        このクラスの文字列表現
      変更履歴:

        5.10.9.0 (2019/03/01) storageType, bucketNameを出力対象に追加。

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