    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.hayabusa.taglib;
    017
    018import org.opengion.hayabusa.common.HybsSystemException;
    019import org.opengion.fukurou.util.HybsFileFilter;
    020import org.opengion.fukurou.util.ToString;                                              // 6.1.1.0 (2015/01/17)
    021
    022import static org.opengion.fukurou.util.StringUtil.nval ;
    023
    024/**
    025 * fileOption でファイルを検索する場合の条件を指定するタグです。
    026 *
    027 * @og.formSample
    028 * ●形式：&lt;og:fileWhere name="…" startsWith="…" endsWith="…" … /&gt;
    029 * ●body：なし
    030 *
    031 * ●Tag定義：
    032 *   &lt;og:fileWhere
    033 *       startsWith         【TAG】指定された接頭辞で始まる場合、スルー(選択)されます(初期値:null)
    034 *       unStartsWith       【TAG】(追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まらない場合、スルー(選択)されます(初期値:null)
    035 *       startsDir          【TAG】(追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まるフォルダ場合、スルー(選択)されます(初期値:null)
    036 *       unStartsDir        【TAG】(追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まらないフォルダ場合、スルー(選択)されます(初期値:null)
    037 *       endsWith           【TAG】指定された接頭辞で終わる場合、スルー(選択)されます(初期値:null)
    038 *       unEndsWith         【TAG】(追加：7.2.6.0 (2020/06/30))指定された接頭辞で終わらない場合、スルー(選択)されます(初期値:null)
    039 *       instr              【TAG】指定された文字列がファイル名に含まれる場合、スルー(選択)されます(初期値:null)
    040 *       unInstr            【TAG】(追加：7.2.6.0 (2020/06/30))指定された文字列がファイル名に含まれない場合、スルー(選択)されます(初期値:null)
    041 *       instrDir           【TAG】(追加：7.2.6.0 (2020/06/30))指定された文字列がフォルダ名に含まれる場合、スルー(選択)されます(初期値:null)
    042 *       unInstrDir         【TAG】(追加：7.2.6.0 (2020/06/30))指定された文字列がフォルダ名に含まれない場合、スルー(選択)されます(初期値:null)
    043 *   ×  equals             【廃止】ファイル名が一致する場合、スルー(選択)されます(初期値:null) 7.2.7.0 (2020/08/07)
    044 *       fileEquals         【TAG】ファイル名が一致する場合、スルー(選択)されます(初期値:null) 7.2.7.0 (2020/08/07) 新規
    045 *       unFileEquals       【TAG】(追加：7.2.6.0 (2020/06/30))ファイル名が一致しない場合、スルー(選択)されます(初期値:null)
    046 *       matches            【TAG】ファイル名が、指定された正規表現と一致する場合、スルー(選択)されます(初期値:null)
    047 *       unMatches          【TAG】ファイル名が、指定された正規表現と一致しない場合、スルー(選択)されます(初期値:null)
    048 *       matchDir           【TAG】(追加：7.2.6.0 (2020/06/30))フォルダ名が、指定された正規表現と一致する場合、スルー(選択)されます(初期値:null)
    049 *       unMatchDir         【TAG】(追加：7.2.6.0 (2020/06/30))フォルダ名が、指定された正規表現と一致しない場合、スルー(選択)されます(初期値:null)
    050 *       lastModified       【TAG】指定のタイムスタンプ以後に変更されている場合、スルー(選択)されます(初期値:null)
    051 *       unLastModified     【TAG】(追加：7.2.6.0 (2020/06/30))指定のタイムスタンプ以前に変更されている場合、スルー(選択)されます(初期値:null)
    052 *       isLarger           【TAG】指定の大きさより大きいファイルの場合、スルー(選択)されます(初期値:null)
    053 *       isSmaller          【TAG】指定の大きさより小さいファイルの場合、スルー(選択)されます(初期値:null)
    054 *       isHidden           【TAG】true:HIDDENファイルのみ/false:NORMALファイルのみスルー(選択)されます(初期値:null)
    055 *   ×  useDir             【廃止】(廃止：7.2.6.0 (2020/06/30))判定をファイルだけでなく、ディレクトリでも行うかどうかを指定[false:File/true:File+Dir/only:Dir](初期値:false)
    056 *       ignoreCase         【TAG】大文字/小文字を区別しないかどうか[true/false]を指定します(初期値:false(区別する))
    057 *       notEquals          【TAG】判定結果を反転させるかどうか[true/false]を指定します(初期値:false) 6.8.0.0 (2017/06/02)
    058 *       caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 6.8.0.0 (2017/06/02)
    059 *       caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 6.8.0.0 (2017/06/02)
    060 *       caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 6.8.0.0 (2017/06/02)
    061 *       caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 6.8.0.0 (2017/06/02)
    062 *       caseIf             【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 6.8.0.0 (2017/06/02)
    063 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    064 *   /&gt;
    065 *
    066 * ●使用例
    067 *     &lt;og:fileOption select="NAME" from="./jsp" &gt;
    068 *         &lt;og:fileWhere
    069 *             startsWith = "File"          :指定された接頭辞で始まる場合、選択される
    070 *             endsWith   = ".java"         :指定された接頭辞で終わる場合、選択される
    071 *             instr      = "Tag"           :指定された文字列がファイル名に含まれる場合、選択される
    072 *             equalsName = "FileWhereTag.java" :ファイル名が一致する場合、選択される(大文字小文字は区別しない)
    073 *             matches    = "File*Tag"      :ファイル名が、指定された正規表現と一致する場合、選択される(大文字小文字は区別しない)
    074 *             unMatches  = "File*Tag"      :ファイル名が、指定された正規表現と一致しない場合、選択される(大文字小文字は区別しない)
    075 *             lastModified = "20050101"    :指定のタイムスタンプ以後に変更された場合、選択される
    076 *                                           日付けの指定は、YYYYMMDD 形式, TODAY , YESTERDAY が使用できます。
    077 *             isLarger   = "1024"          :指定の大きさ(バイト単位)より大きいファイルの場合、選択される
    078 *             isSmaller  = "1024"          :指定の大きさ(バイト単位)より小さいファイルの場合、選択される
    079 *             isHidden   = "true"          :true:HIDDENファイルのみ選択される
    080 *             useDir     = "false"         :(廃止)フィルタによる対象の絞込みをディレクトリにも適用するかどうか
    081 *         /&gt;
    082 *     &lt;/og:fileOption&gt;
    083 *
    084 *       ・検索条件が入力された時
    085 *         条件を満足して全てのファイルを列挙します。
    086 *
    087 *       ・検索条件が入力されなかった時
    088 *         該当ディレクトリ内の全てのファイルを列挙します。
    089 *
    090 * @og.rev 2.1.1.0 (2002/11/11) 新規作成
    091 * @og.rev 4.0.0.0 (2005/01/31) 内部ロジックの全面見直し
    092 * @og.rev 7.2.6.0 (2020/06/30) 内部ロジックの全面見直し
    093 * @og.group その他入力
    094 *
    095 * @version  7.2
    096 * @author   Kazuhiko Hasegawa
    097 * @since    JDK11.0,
    098 */
    099public class FileWhereTag extends CommonTagSupport {
    100        /** このプログラムのVERSION文字列を設定します。   {@value} */
    101        private static final String VERSION = "7.2.6.2 (2020/07/29)" ;
    102        private static final long serialVersionUID = 726220200729L ;
    103
    104        private String  startsWith              ;               // 指定された接頭辞で始まる場合、選択される
    105        private String  unStartsWith    ;               // (追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まらない場合、スルー(選択)されます(初期値:null)
    106        private String  startsDir               ;               // (追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まるフォルダ場合、スルー(選択)されます(初期値:null)
    107        private String  unStartsDir             ;               // (追加：7.2.6.0 (2020/06/30))指定された接頭辞で始まらないフォルダ場合、スルー(選択)されます(初期値:null)
    108        private String  endsWith                ;               // 指定された接頭辞で終わる場合、選択される
    109        private String  unEndsWith              ;               // (追加：7.2.6.0 (2020/06/30))指定された接頭辞で終わらない場合、スルー(選択)されます(初期値:null)
    110        private String  instr                   ;               // 指定された文字列がファイル名に含まれる場合、選択される
    111        private String  unInstr                 ;               // (追加：7.2.6.0 (2020/06/30))指定された文字列がファイル名に含まれない場合、スルー(選択)されます(初期値:null)
    112        private String  instrDir                ;               // (追加：7.2.6.0 (2020/06/30))指定された文字列がフォルダ名に含まれる場合、スルー(選択)されます(初期値:null)
    113        private String  unInstrDir              ;               // (追加：7.2.6.0 (2020/06/30))指定された文字列がフォルダ名に含まれない場合、スルー(選択)されます(初期値:null)
    114        private String  fileEquals              ;               // ファイル名が一致する場合、選択される(大文字小文字は区別しない)
    115        private String  unFileEquals    ;               // ファイル名が一致しない場合、選択される(大文字小文字は区別しない)
    116        private String  matches                 ;               // ファイル名が、指定された正規表現と一致する場合、選択される(大文字小文字は区別しない)
    117        private String  unMatches               ;               // ファイル名が、指定された正規表現と一致しない場合、選択される(大文字小文字は区別しない)
    118        private String  matchDir                ;               // (追加：7.2.6.0 (2020/06/30))フォルダ名が、指定された正規表現と一致する場合、スルー(選択)されます(初期値:null)
    119        private String  unMatchDir              ;               // (追加：7.2.6.0 (2020/06/30))フォルダ名が、指定された正規表現と一致しない場合、スルー(選択)されます(初期値:null)
    120        private String  lastModified    ;               // 指定のタイムスタンプ以後に変更された場合、選択される
    121        private String  unLastModified  ;               // (追加：7.2.6.0 (2020/06/30))指定のタイムスタンプ以前に変更されている場合、スルー(選択)されます(初期値:null)
    122        private String  isLarger                ;               // 指定の大きさ(バイト単位)より大きいファイルの場合、選択される
    123        private String  isSmaller               ;               // 指定の大きさ(バイト単位)より小さいファイルの場合、選択される
    124        private String  isHidden                ;               // 5.7.5.0 (2014/04/04) true:HIDDENファイルのみ/false:NORMALファイルのみスルー(選択)されます
    125//      private String  useDir  = "false";              // (廃止：7.2.6.0 (2020/06/30))6.4.0.2 (2015/12/11) useDIR 属性に、onlyパラメータを追加します[false:File/true:File+Dir/only:Dir]。
    126        private boolean ignoreCase              ;               // 6.3.1.1 (2015/07/10) 大文字/小文字の区別なしで検索可能にするかどうか(初期値:false:区別する)
    127        private boolean notEquals               ;               // 6.8.0.0 (2017/06/02) 判定結果を反転させて処理します。
    128
    129        /**
    130         * デフォルトコンストラクター
    131         *
    132         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    133         */
    134        public FileWhereTag() { super(); }              // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    135
    136        /**
    137         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    138         *
    139         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    140         * @og.rev 5.1.2.0 (2010/01/01) unMatches メソッドで反転属性の追加
    141         * @og.rev 5.3.9.0 (2011/09/01) useDir属性を追加
    142         * @og.rev 5.6.6.0 (2013/07/05) unMatchesの引数間違いの訂正
    143         * @og.rev 5.7.5.0 (2014/04/04) isHidden属性を追加します。
    144         * @og.rev 6.3.1.1 (2015/07/10) メソッドチェーン化と、大文字/小文字の区別なし(ignoreCase=true)対応
    145         * @og.rev 6.4.0.2 (2015/12/11) useDIR 属性に、onlyパラメータを追加します[false:File/true:File+Dir/only:Dir]。
    146         * @og.rev 6.8.0.0 (2017/06/02) caseKey,caseVal,caseNN,caseNull 属性を追加
    147         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    148         * @og.rev 7.2.6.2 (2020/07/29) unEquals対応忘れ
    149         *
    150         * @return      後続処理の指示
    151         */
    152        @Override
    153        public int doEndTag() {
    154                debugPrint();           // 4.0.0 (2005/02/28)
    155
    156                // 6.8.0.0 (2017/06/02) caseKey,caseVal,caseNN,caseNull 属性を追加
    157                if( !useTag() ) { return EVAL_PAGE ; }
    158
    159                // 6.3.1.1 (2015/07/10) メソッドチェーン化と、大文字/小文字の区別なし(ignoreCase=true)対応
    160                // 6.8.0.0 (2017/06/02) notEquals で、判定結果を反転させて処理します。
    161//              final HybsFileFilter filter = new HybsFileFilter( useDir,ignoreCase,notEquals )
    162                final HybsFileFilter filter = new HybsFileFilter( ignoreCase,notEquals )                        // 7.2.6.0 (2020/06/30) useDIR 属性 廃止
    163                        .startsWith(    startsWith              )
    164                        .startsWith(    unStartsWith, true  )   // 7.2.6.0 (2020/06/30)
    165                        .startsDir(             startsDir               )               // 7.2.6.0 (2020/06/30)
    166                        .startsDir(             unStartsDir     , true  )       // 7.2.6.0 (2020/06/30)
    167                        .endsWith(              endsWith                )
    168                        .endsWith(              unEndsWith      , true  )       // 7.2.6.0 (2020/06/30)
    169                        .instr(                 instr                   )
    170                        .instr(                 unInstr         , true  )       // 7.2.6.0 (2020/06/30)
    171                        .instrDir(              instrDir        )                       // 7.2.6.0 (2020/06/30)
    172                        .instrDir(              unInstrDir      , true  )       // 7.2.6.0 (2020/06/30)
    173                        .fileEquals(    fileEquals              )
    174                        .fileEquals(    unFileEquals, true      )       // 7.2.6.2 (2020/07/29) 対応忘れ
    175                        .matches(               matches                 )
    176                        .matches(               unMatches       , true )        // 7.2.6.0 (2020/06/30)
    177                        .matchDir(              matchDir                )               // 7.2.6.0 (2020/06/30)
    178                        .matchDir(              unMatchDir      , true  )       // 7.2.6.0 (2020/06/30)
    179                        .lastModified(  lastModified    )
    180                        .lastModified(  unLastModified  , true  )       // 7.2.6.0 (2020/06/30)
    181                        .isLarger(              isLarger                )
    182                        .isSmaller(             isSmaller               )
    183                        .isHidden(              isHidden                );              // 5.7.5.0 (2014/04/04) 追加
    184
    185                // ファイルフィルタを追加
    186                final FileQueryTag fileQuery = (FileQueryTag)findAncestorWithClass( this, FileQueryTag.class );
    187                if( fileQuery != null ) {
    188                        fileQuery.setFileFilter( filter );
    189                        return EVAL_PAGE ;
    190                }
    191
    192                final FileOptionTag fileOption = (FileOptionTag)findAncestorWithClass( this, FileOptionTag.class );
    193                if( fileOption != null ) {
    194                        fileOption.setFileFilter( filter );
    195                        return EVAL_PAGE ;
    196                }
    197
    198                // どちらにも属していなかった場合は、エラーになる。
    199                final String errMsg = "この、FileWhereTag タグは、FileQueryTag か、FileOption の"
    200                                        + "BODY 部にのみ、配置できます。(それ以外の箇所での使用はできません。)" ;
    201                throw new HybsSystemException( errMsg );
    202        }
    203
    204        /**
    205         * タグリブオブジェクトをリリースします。
    206         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
    207         *
    208         * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
    209         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    210         * @og.rev 4.0.0.0 (2005/01/31) 内部ロジックの全面見直し
    211         * @og.rev 5.3.9.0 (2011/09/01) useDir属性追加
    212         * @og.rev 5.7.4.3 (2014/03/28) isLarger,isSmaller属性を文字列に変更
    213         * @og.rev 5.7.5.0 (2014/04/04) isHidden属性を追加
    214         * @og.rev 6.3.1.1 (2015/07/10) 大文字/小文字の区別なし(ignoreCase=true)対応
    215         * @og.rev 6.4.0.2 (2015/12/11) useDIR 属性に、onlyパラメータを追加します[false:File/true:File+Dir/only:Dir]。
    216         * @og.rev 6.8.0.0 (2017/06/02) notEquals 属性追加 , useDir="false" の初期値設定
    217         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    218         * @og.rev 7.2.6.2 (2020/07/29) unEquals対応忘れ
    219         */
    220        @Override
    221        protected void release2() {
    222                super.release2();
    223                startsWith              = null;
    224                unStartsWith    = null;         // 7.2.6.0 (2020/06/30)
    225                startsDir               = null;         // 7.2.6.0 (2020/06/30)
    226                unStartsDir             = null;         // 7.2.6.0 (2020/06/30)
    227                endsWith                = null;
    228                unEndsWith              = null;         // 7.2.6.0 (2020/06/30)
    229                instr                   = null;
    230                unInstr                 = null;         // 7.2.6.0 (2020/06/30)
    231                instrDir                = null;         // 7.2.6.0 (2020/06/30)
    232                unInstrDir              = null;         // 7.2.6.0 (2020/06/30)
    233                fileEquals              = null;
    234                unFileEquals    = null;         // 7.2.6.2 (2020/07/29) 対応忘れ
    235                matches                 = null;
    236                unMatches               = null;
    237                matchDir                = null;         // 7.2.6.0 (2020/06/30)
    238                unMatchDir              = null;         // 7.2.6.0 (2020/06/30)
    239                lastModified    = null;
    240                unLastModified  = null;         // 7.2.6.0 (2020/06/30)
    241                isLarger                = null;         // 5.7.4.3 (2014/03/28) isLarger,isSmaller属性を文字列に変更
    242                isSmaller               = null;         // 5.7.4.3 (2014/03/28) isLarger,isSmaller属性を文字列に変更
    243                isHidden                = null;         // 5.7.5.0 (2014/04/04) isHidden属性を追加
    244//              useDir                  = "false";      // 6.4.0.2 (2015/12/11) useDIR 属性に、onlyパラメータを追加 // 7.2.6.0 (2020/06/30) useDIR 属性 廃止
    245                ignoreCase              = false;        // 大文字/小文字の区別
    246                notEquals               = false;        // 6.8.0.0 (2017/06/02) notEquals 属性追加
    247        }
    248
    249        /**
    250         * 【TAG】指定された接頭辞で始まる場合、スルー(選択)されます(初期値:null)。
    251         * @og.tag
    252         * 引数が null の場合は、追加しません。
    253         *
    254         * @param    prefix 接頭辞
    255         * @see java.lang.String#startsWith(String)
    256         */
    257        public void setStartsWith( final String prefix ) {
    258                startsWith = nval( getRequestParameter( prefix ),startsWith );
    259        }
    260
    261        /**
    262         * 【TAG】指定された接頭辞で始まらない場合、スルー(選択)されます(初期値:null)。
    263         * @og.tag
    264         * 引数が null の場合は、追加しません。
    265         *
    266         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    267         *
    268         * @param    prefix 接頭辞
    269         * @see java.lang.String#startsWith(String)
    270         */
    271        public void setUnStartsWith( final String prefix ) {
    272                unStartsWith = nval( getRequestParameter( prefix ),unStartsWith );
    273        }
    274
    275        /**
    276         * 【TAG】指定された接頭辞で始まるフォルダ場合、スルー(選択)されます(初期値:null)。
    277         * @og.tag
    278         * 引数が null の場合は、追加しません。
    279         *
    280         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    281         *
    282         * @param    prefix 接頭辞
    283         * @see java.lang.String#startsWith(String)
    284         */
    285        public void setStartsDir( final String prefix ) {
    286                startsDir = nval( getRequestParameter( prefix ),startsDir );
    287        }
    288
    289        /**
    290         * 【TAG】指定された接頭辞で始まらないフォルダ場合、スルー(選択)されます(初期値:null)。
    291         * @og.tag
    292         * 引数が null の場合は、追加しません。
    293         *
    294         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    295         *
    296         * @param    prefix 接頭辞
    297         * @see java.lang.String#startsWith(String)
    298         */
    299        public void setUnStartsDir( final String prefix ) {
    300                unStartsDir = nval( getRequestParameter( prefix ),unStartsDir );
    301        }
    302
    303        /**
    304         * 【TAG】指定された接頭辞で終わる場合、スルー(選択)されます(初期値:null)。
    305         * @og.tag
    306         * 引数が null の場合は、追加しません。
    307         *
    308         * @param    suffix 接尾辞
    309         * @see java.lang.String#endsWith(String)
    310         */
    311        public void setEndsWith( final String suffix ) {
    312                endsWith = nval( getRequestParameter( suffix ),endsWith );
    313        }
    314
    315        /**
    316         * 【TAG】指定された接頭辞で終わらない場合、スルー(選択)されます(初期値:null)。
    317         * @og.tag
    318         * 引数が null の場合は、追加しません。
    319         *
    320         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    321         *
    322         * @param    suffix 接尾辞
    323         * @see java.lang.String#endsWith(String)
    324         */
    325        public void setUnEndsWith( final String suffix ) {
    326                unEndsWith = nval( getRequestParameter( suffix ),unEndsWith );
    327        }
    328
    329        /**
    330         * 【TAG】指定された文字列がファイル名に含まれる場合、スルー(選択)されます(初期値:null)。
    331         * @og.tag
    332         * 引数が null の場合は、追加しません。
    333         *
    334         * @param    str 指定の部分文字列
    335         */
    336        public void setInstr( final String str ) {
    337                instr = nval( getRequestParameter( str ),instr );
    338        }
    339
    340        /**
    341         * 【TAG】指定された文字列がファイル名に含まれない場合、スルー(選択)されます(初期値:null)。
    342         * @og.tag
    343         * 引数が null の場合は、追加しません。
    344         *
    345         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    346         *
    347         * @param    str 指定の部分文字列
    348         * @see java.lang.String#endsWith(String)
    349         */
    350        public void setUnInstr( final String str ) {
    351                unInstr = nval( getRequestParameter( str ),unInstr );
    352        }
    353
    354        /**
    355         * 【TAG】指定された文字列がフォルダ名に含まれる場合、スルー(選択)されます(初期値:null)。
    356         * @og.tag
    357         * 引数が null の場合は、追加しません。
    358         *
    359         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    360         *
    361         * @param    str 指定の部分文字列
    362         * @see java.lang.String#endsWith(String)
    363         */
    364        public void setInstrDir( final String str ) {
    365                instrDir = nval( getRequestParameter( str ),instrDir );
    366        }
    367
    368        /**
    369         * 【TAG】指定された文字列がフォルダ名に含まれない場合、スルー(選択)されます(初期値:null)。
    370         * @og.tag
    371         * 引数が null の場合は、追加しません。
    372         *
    373         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    374         *
    375         * @param    str 指定の部分文字列
    376         * @see java.lang.String#endsWith(String)
    377         */
    378        public void setUnInstrDir( final String str ) {
    379                unInstrDir = nval( getRequestParameter( str ),unInstrDir );
    380        }
    381
    382        /**
    383         * 【TAG】ファイル名が一致する場合、スルー(選択)されます(初期値:null)。
    384         * @og.tag
    385         * 大文字小文字は区別しません。
    386         * 引数が null の場合は、追加しません。
    387         *
    388         * @param    str ファイル名文字列
    389         * @see java.lang.String#equals(Object)
    390         */
    391//      public void setEquals( final String str ) {
    392        public void setFileEquals( final String str ) {
    393                fileEquals = nval( getRequestParameter( str ),fileEquals );
    394        }
    395
    396        /**
    397         * 【TAG】ファイル名が一致しない場合、スルー(選択)されます(初期値:null)。
    398         * @og.tag
    399         * 大文字小文字は区別しません。
    400         * 引数が null の場合は、追加しません。
    401         *
    402         * @og.rev 7.2.6.2 (2020/07/29) unEquals対応忘れ
    403         *
    404         * @param    str ファイル名文字列
    405         * @see java.lang.String#equals(Object)
    406         */
    407//      public void setUnEquals( final String str ) {
    408        public void setUnFileEquals( final String str ) {
    409                unFileEquals = nval( getRequestParameter( str ),unFileEquals );
    410        }
    411
    412        /**
    413         * 【TAG】ファイル名が、指定された正規表現と一致する場合、スルー(選択)されます(初期値:null)。
    414         * @og.tag
    415         *
    416         * ignoreCase を使用する場合、Pattern.CASE_INSENSITIVE を適用します。
    417         * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ;
    418         * pattern.matcher( pathname.getName() ).find() == true と同じ結果が得られます。
    419         * 引数が null の場合は、追加しません。
    420         *
    421         * @param    str ファイル名文字列(正規表現)
    422         * @see java.util.regex.Pattern#compile(String,int)
    423         * @see java.util.regex.Matcher#find()
    424         */
    425        public void setMatches( final String str ) {
    426                matches = nval( getRequestParameter( str ),matches );
    427        }
    428
    429        /**
    430         * 【TAG】ファイル名が、指定された正規表現と一致しない場合、スルー(選択)されます(初期値:null)。
    431         * @og.tag
    432         *
    433         * ignoreCase を使用する場合、Pattern.CASE_INSENSITIVE を適用します。
    434         * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ;
    435         * pattern.matcher( pathname.getName() ).find() == false と同じ結果が得られます。
    436         * 引数が null の場合は、追加しません。
    437         *
    438         * @param    str ファイル名文字列(不一致させる正規表現)
    439         * @see java.util.regex.Pattern#compile(String,int)
    440         * @see java.util.regex.Matcher#find()
    441         */
    442        public void setUnMatches( final String str ) {
    443                unMatches = nval( getRequestParameter( str ),unMatches );
    444        }
    445
    446        /**
    447         * 【TAG】フォルダ名が、指定された正規表現と一致する場合、スルー(選択)されます(初期値:null)。
    448         * @og.tag
    449         *
    450         * ignoreCase を使用する場合、Pattern.CASE_INSENSITIVE を適用します。
    451         * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ;
    452         * pattern.matcher( pathname.getName() ).find() == true と同じ結果が得られます。
    453         * 引数が null の場合は、追加しません。
    454         *
    455         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    456         *
    457         * @param    str ファイル名文字列(正規表現)
    458         * @see java.util.regex.Pattern#compile(String,int)
    459         * @see java.util.regex.Matcher#find()
    460         */
    461        public void setMatchDir( final String str ) {
    462                matchDir = nval( getRequestParameter( str ),matchDir );
    463        }
    464
    465        /**
    466         * 【TAG】フォルダ名が、指定された正規表現と一致しない場合、スルー(選択)されます(初期値:null)。
    467         * @og.tag
    468         *
    469         * ignoreCase を使用する場合、Pattern.CASE_INSENSITIVE を適用します。
    470         * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ;
    471         * pattern.matcher( pathname.getName() ).find() == true と同じ結果が得られます。
    472         * 引数が null の場合は、追加しません。
    473         *
    474         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    475         *
    476         * @param    str ファイル名文字列(正規表現)
    477         * @see java.util.regex.Pattern#compile(String,int)
    478         * @see java.util.regex.Matcher#find()
    479         */
    480        public void setUnMatchDir( final String str ) {
    481                unMatchDir = nval( getRequestParameter( str ),unMatchDir );
    482        }
    483
    484        /**
    485         * 【TAG】指定のタイムスタンプ以後に変更されている場合、スルー(選択)されます(初期値:null)。
    486         * @og.tag
    487         * ディレクトリは、ここの判定では無視します。(必ず true を返します)
    488         * 日付けの指定に、YYYYMMDD 形式の ８文字数字文字列以外に、
    489         * TODAY や YESTERDAY なども使用できます。
    490         * TODAY は、実行日の 00:00:00 を基準時刻とし、YESTERDAY は、その前日になります。
    491         * 引数が null の場合は、追加しません。
    492         *
    493         *     YYYYMMDD   YYYYMMDD形式の指定日の 00:00:00 を基準時刻
    494         *     TODAY      実行日の 00:00:00 を基準時刻
    495         *     YESTERDAY  実行日前日の 00:00:00 を基準時刻
    496         *     LAST_WEEK  実行日の先週(7日前) 00:00:00 を基準時刻
    497         *     MONTH      実行月の 1日 00:00:00 を基準時刻
    498         *     LAST_MONTH 実行前月の 同日 00:00:00 を基準時刻
    499         *     LAST_YEAR  実行前年の 同月同日 00:00:00 を基準時刻
    500         *
    501         * @param    modify YYYYMMDD形式の指定日
    502         */
    503        public void setLastModified( final String modify ) {
    504                lastModified = nval( getRequestParameter( modify ),lastModified );
    505        }
    506
    507        /**
    508         * 【TAG】指定のタイムスタンプ以前に変更されている場合、スルー(選択)されます(初期値:null)。
    509         * @og.tag
    510         * ディレクトリは、ここの判定では無視します。(必ず true を返します)
    511         * 日付けの指定のフォーマットは、lastModifiedと同じ記号が使用できます。
    512         *     LAST_YEAR  実行前年の 同月同日 00:00:00 を基準時刻
    513         *
    514         * @param    modify YYYYMMDD形式の指定日
    515         */
    516        public void setUnLastModified( final String modify ) {
    517                unLastModified = nval( getRequestParameter( modify ),unLastModified );
    518        }
    519
    520        /**
    521         * 【TAG】指定の大きさより大きいファイルの場合、スルー(選択)されます(初期値:null)。
    522         *
    523         * @og.tag
    524         * ファイルの大きさ(バイト単位)は同値を含みます。
    525         * 未指定の場合は、スルー(選択)されます。
    526         *
    527         * 指定はバイト単位ですが、**KB , **MB , **GB などの単位を付ける事も可能です。
    528         * 現時点では、K , KB , M , MB , G , GB のみ指定可能です。
    529         *
    530         * @param       len     ファイルの大きさ(バイト単位)
    531         */
    532        public void setIsLarger( final String len ) {
    533                isLarger = nval( getRequestParameter( len ),isLarger );
    534        }
    535
    536        /**
    537         * 【TAG】指定の大きさより小さいファイルの場合、スルー(選択)されます(初期値:null)。
    538         *
    539         * @og.tag
    540         * ファイルの大きさ(バイト単位)は同値を含みません。
    541         * 未指定の場合は、スルー(選択)されます。
    542         *
    543         * 指定はバイト単位ですが、**KB , **MB , **GB などの単位を付ける事も可能です。
    544         * 現時点では、K , KB , M , MB , G , GB のみ指定可能です。
    545         *
    546         * @param       len     ファイルの大きさ(バイト単位)
    547         */
    548        public void setIsSmaller( final String len ) {
    549                isSmaller = nval( getRequestParameter( len ),isSmaller );
    550        }
    551
    552        /**
    553         * 【TAG】対象に隠しファイル(hidden)を、スルー(選択)する場合、true を指定します(初期値:null)。
    554         * @og.tag
    555         * trueを指定すると、隠しファイル(hidden)のみ選択します。
    556         * falseを指定すると、隠しファイル(hidden)以外を選択します。
    557         * 隠しファイルかどうかの定義はOSに従います。
    558         * 初期値は、両方とも選択する為、null (trueでもfalseでもない)です。
    559         *
    560         * @og.rev 5.7.5.0 (2014/04/04) 新規作成
    561         *
    562         * @param    flag hidden対象 [true:する/false:しない]
    563         */
    564        public void setIsHidden( final String flag ) {
    565                isHidden = nval( getRequestParameter( flag ), isHidden );
    566        }
    567
    568        /**
    569         * 【廃止】フィルタによる対象の絞込みをディレクトリにも適用するかどうか[false:File/true:File+Dir/only:Dir]を指定します(初期値:false:しない)。
    570         *
    571         * @og.tag
    572         * このﾌﾗｸﾞは、設定したすべての属性に対して一律に作用します。
    573         * 個々に適用するには、それぞれの属性のxxxDir などを使用してください。
    574         * 初期値は、false(ディレクトリはフィルタによる絞込みをしない)です。
    575         *
    576         * @og.rev 5.3.9.0 (2011/09/01) 新規作成
    577         * @og.rev 6.4.0.2 (2015/12/11) useDIR 属性に、onlyパラメータを追加します[false:File/true:File+Dir/only:Dir]。
    578         * @og.rev 7.2.6.0 (2020/06/30) ディレクトリ処理を統一します。
    579         *
    580         * @param       flag    ディレクトリ適用 [true:する/false:しない]
    581         */
    582        public void setUseDir( final String flag ) {
    583//              useDir = nval( getRequestParameter( flag ),useDir );
    584        }
    585
    586        /**
    587         * 【TAG】大文字/小文字を区別しないかどうか[true/false]を指定します(初期値:false(区別する))。
    588         *
    589         * @og.tag
    590         * startsWith , contains , endsWith , equalsIgnoreCase での比較時に、比較対象の
    591         * 大文字/小文字を区別しないかどうかを指定します。
    592         * 区別しない ("true") 場合、aaa と AAA は、一致したとみなされます。
    593         * 初期値は、区別する ("false") です。
    594         *
    595         * @og.rev 6.3.1.1 (2015/07/10) 大文字/小文字の区別なし(ignoreCase=true)対応
    596         *
    597         * @param   flag 大文字/小文字を区別しないかどうか [true:しない/それ以外:する]
    598         */
    599        public void setIgnoreCase( final String flag ) {
    600                ignoreCase = nval( getRequestParameter( flag ),ignoreCase );
    601        }
    602
    603        /**
    604         * 【TAG】判定結果を反転させるかどうか[true/false]を指定します(初期値:false)。
    605         *
    606         * @og.tag
    607         * 通常の判定結果において、結果の正反対の処理を行います。
    608         * 初期値は、通常 (false)です。
    609         *
    610         * @og.rev 6.8.0.0 (2017/06/02) 新規追加
    611         *
    612         * @param   flag 判定結果反転 [true:反転する/それ以外:通常]
    613         */
    614        public void setNotEquals( final String flag ) {
    615                notEquals = nval( getRequestParameter( flag ),notEquals );
    616        }
    617
    618        /**
    619         * このオブジェクトの文字列表現を返します。
    620         * 基本的にデバッグ目的に使用します。
    621         *
    622         * @return String型。このクラスの文字列表現
    623         * @og.rtnNotNull
    624         */
    625        @Override
    626        public String toString() {
    627                return ToString.title( this.getClass().getName() )
    628                                .println( "VERSION"                     ,VERSION                )
    629                                .println( "startsWith"          ,startsWith             )
    630                                .println( "endsWith"            ,endsWith               )
    631                                .println( "instr"                       ,instr                  )
    632                                .println( "equals"                      ,fileEquals             )
    633                                .println( "matches"                     ,matches                )
    634                                .println( "unMatches"           ,unMatches              )
    635                                .println( "lastModified"        ,lastModified   )
    636                                .println( "isLarger"            ,isLarger               )
    637                                .println( "isSmaller"           ,isSmaller              )
    638//                              .println( "useDir"                      ,useDir                 )
    639                                .println( "ignoreCase"          ,ignoreCase             )               // 6.3.1.1 (2015/07/10)
    640                                .println( "Other..."            ,getAttributes().getAttribute() )
    641                                .fixForm().toString() ;
    642        }
    643}