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     */
016    package org.opengion.hayabusa.taglib;
017    
018    import static org.opengion.fukurou.util.StringUtil.nval;
019    
020    import java.util.Arrays;
021    import java.util.Enumeration;
022    import java.util.Locale;
023    import java.util.Set;
024    import java.util.TreeSet;
025    
026    import org.opengion.fukurou.util.ErrorMessage;
027    import org.opengion.fukurou.util.StringUtil;
028    import org.opengion.hayabusa.common.HybsSystem;
029    import org.opengion.hayabusa.common.HybsSystemException;
030    import org.opengion.hayabusa.db.DBColumn;
031    import org.opengion.hayabusa.db.DBTableModel;
032    
033    /**
034     * 登録ãƒ??ã‚¿ã®ç‰©ç?ƒã‚§ãƒ?‚¯(æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã€nullãƒã‚§ãƒ?‚¯)を行ã†ã‚¿ã‚°ã§ã™ã?
035     *
036     * コマンドã«å¯¾å¿œã—ãŸãƒã‚§ãƒ?‚¯æ–¹å¼ã§ã€æŒ‡å®šã?カラãƒ?‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
037     * command="NEW" ã®å ´åˆã?ã€columns 引数ã«CSVå½¢å¼ã§æŒ?®šã—ãŸã‚«ãƒ©ãƒ?より
038     * リクエスト情報をå–å¾—ã—ã¦ã€å?ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
039     * 引数ãƒã‚§ãƒ?‚¯ã§ã¯ã€?%" ã‚?"_" ãªã©ã®ã‚ã„ã¾ã?¤œç´¢æ™‚ã«æŒ?®šã™ã‚‹è¨˜å·ã‚?
040     * å«ã‚?¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã‚«ãƒ©ãƒ??ãƒã‚§ãƒ?‚¯å¯¾è±¡ã‹ã‚‰ã¯ãšã™å¿?¦ãŒã‚る為ã€?
041     * ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ?‚’æŒ?®šã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
042     * command="ENTRY" ã®å ´åˆã?ã€columns 引数ã«ç„¡é–¢ä¿‚ã«ã€å?ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れãŸã‚«ãƒ©ãƒ?
043     * ã®å€¤ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?ã“れã¯ã€å?ã®æ¤œç´¢æ™‚ã?å ´åˆã¨ç•°ãªã‚Šã?ENTRYã§ã¯
044     * ãƒ??タベã?スã«å€¤ã‚’設定ã™ã‚‹ç‚ºã€ç„¡æ¡ä»¶ã«ãƒã‚§ãƒ?‚¯ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
045     * nullCheck ã¯ã€command ã«ç„¡é–¢ä¿‚ã«æŒ?®šã?カラãƒ?Œ null (ゼロæ–?­—å?)ã‹ã©ã?‹ã‚?
046     * 判定ã—ã¾ã™ã?
047     * maxRowCount ã¯ã€ä¸?¦§æ¤œç´¢æ™‚ã?ãƒã‚§ãƒ?‚¯ã•れãŸä»¶æ•°ãŒã?æŒ?®šã?値をè¶?ˆãŸå?åˆã«
048     * エラーã«ãªã‚Šã¾ã™ã?minRowCount ã¯ã€åŒæ§˜ã«ã€æœ€å°é¸æŠžä»¶æ•°(設定å?ã‚’å«ã‚?ã®æŒ?®šã§ã™ã?
049     * ã“ã?ã‚¿ã‚°ã¯ã€ã‚¨ãƒ©ãƒ¼æ™‚ã«ã¯ã€ãれ以é™ã?JSPç”»é¢ã‚’評価ã—ã¾ã›ã‚“ã€?ODY 部ã«è¨˜è¿°ã•れã?
050     * 値ã¯ã€ã‚¨ãƒ©ãƒ¼æ™‚ã?ã¿è¡¨ç¤ºã•ã‚Œã€æ­£å¸¸æ™‚ã«ã¯ã€ãªã«ã‚‚表示ã•れã¾ã›ã‚“。ã“れã?ã€ã‚¨ãƒ©ãƒ¼æ™‚ã?
051     * メãƒ?‚»ãƒ¼ã‚¸ã‚??ユーザーã«ã‚¨ãƒ©ãƒ¼æ™‚ã?アクションを行ã£ã¦ã‚‚らã??åˆã?処ç?例ãˆã°ã€?
052     * ç”»é¢ã‚’戻る為ã®ãƒœã‚¿ãƒ³ãªã©)を表示ã•ã›ã¾ã™ã?
053     * useColumnLabel ã‚?true ã«ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼æ™‚ã?カラãƒ?(ラベル)ã‚’ã?カラãƒ?‚ªãƒ–ジェクトã‹ã‚?
054     * å–å¾—ã™ã‚‹ã‚ˆã?«ãªã‚Šã¾ã™ã?動的カラãƒ?®Ÿè¡Œæ™‚ã‚??DBTableModelã«å¯¾ã—ã¦ã€ColumnEditorç­‰ã§
055     * ãƒ©ãƒ™ãƒ«ã‚’æ›¸ãæ›ãˆãŸå ´åˆã«ã€æœ‰åйã§ã™ã?false ã®å ´åˆã?ã€åŸºæœ¬çš?«ã¯ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰ã®
056     * å–å¾—ã«ãªã‚Šã¾ã™ãŒã€ã‚±ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ã¯ã€ã‚«ãƒ©ãƒ?‚ªãƒ–ジェクトã‹ã‚‰å–å¾—ã—ã¦ã?‚‹å ´åˆã‚‚ã‚りã¾ã™ã?
057     * ã“ã?属æ?ã¯ã€äº’æ›æ€§ã‚’é‡è¦–ã—ã€å?期å?ãŒã?false ã«ãªã£ã¦ã?¾ã™ã?
058     *
059     * command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã?
060     *
061     * @og.formSample
062     * â—å½¢å¼ï¼?lt;og:columnCheck command = "…" />
063     * â—å½¢å¼ï¼?lt;og:columnCheck command = "…" >エラー時ã?ã¿å‡¦ç?</og:columnCheck>
064     * â—body?šãªã?ã‚り(EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã?
065     *
066     * â—Tag定義??
067     *   <og:columnCheck
068     *       command            ã€TAG】コマンド[NEW/RENEW/ENTRY]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)
069     *       columns            ã€TAG】ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã?
070     *       nullCheck          ã€TAG】NULL ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?CSVå½¢å¼?ã‚Šã§æŒ?®šã—ã¾ã?
071     *       mustAnyCheck       ã€TAGã€‘é¸æŠžå¿??カラãƒ?æŒ?®šã?カラãƒ??å†?œ€ä½Žã?ã¨ã¤ãŒNULLã§ãªã?ã‚?AA|BB|CC,XX|YY|ZZ" å½¢å¼ã§æŒ?®šã—ã¾ã?
072     *       checkType          ã€TAGã€?ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿[AUTO/NEW/ENTRY]を指定ã—ã¾ã?åˆæœŸå€¤:AUTO)
073     *       maxRowCount        ã€TAG】ENTRY時ã«ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?¤§å€¤ã‚’設定ã—ã¾ã?
074     *       minRowCount        ã€TAG】ENTRY時ã«ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?°å?を設定ã—ã¾ã?
075     *       tableId            ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“) sessionã«ç™»éŒ²ã•れã¦ã?‚‹ DBTableModel ã‚’å–りå?ã™ã‚­ãƒ¼ã‚’指定ã—ã¾ã?
076     *       matchKeys          ã€TAG】正è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã?
077     *       matchVals          ã€TAG】正è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??ã«å¯¾ã™ã‚‹å€¤(æ­£è¦è¡¨ç¾)をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã?
078     *       realTime           ã€TAGã€?通常使ã?¾ã›ã‚“)リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã—ã¾ã?
079     *       useStrict          ã€TAG】NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
080     *       useColumnLabel     ã€TAG】カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
081     *       checkNames         ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
082     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
083     *   >   ... Body ...
084     *   </og:columnCheck>
085     *
086     * â—使用ä¾?
087     * <og:columnCheck
088     *     command = "{@command}"
089     *     columns = "AAA,BBB,CCC"  DB定義(DBColumnリソース)ã§å®šç¾©ã—ãŸé ?›®(æ¡æ•°,タイプç­?ã§ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
090     *     maxRowCount = "1"        ãƒã‚§ãƒ?‚¯ã§é¸ã°ã‚ŒãŸ æœ?¤§é¸æŠžä»¶æ•°(設定å?ã‚’å«ã‚?を指定ã?
091     *     minRowCount = "1"        ãƒã‚§ãƒ?‚¯ã§é¸ã°ã‚ŒãŸ æœ?°é¸æŠžä»¶æ•°(設定å?ã‚’å«ã‚?を指定ã?
092     *     nullCheck = "AAA,CCC"    NULLãƒã‚§ãƒ?‚¯ã‚’実行ã—ã¾ã™ã?
093     * />
094     *
095     * [エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?正常時ã«ã¯ã€ã“ã®BODY部ã®è¨˜è¿°ã¯å‡ºåŠ›ã•れã¾ã›ã‚“ã€?
096     * <og:columnCheck
097     *     command = "{@command}"
098     *     columns = "AAA,BBB,CCC"      DB定義(DBColumnリソース)ã§å®šç¾©ã—ãŸé ?›®(æ¡æ•°,タイプç­?ã§ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
099     *     nullCheck = "AAA,CCC"        NULLãƒã‚§ãƒ?‚¯ã‚’実行ã—ã¾ã™ã?
100     * >
101     *     <form method="POST" action="forward.jsp" target="RESULT">
102     *         <og:input type="button" onClick="history.back()" msg="MSG0049" accesskey="R" td="false" />
103     *     </form>
104     * </og:columnCheck>
105     *
106     * mustAnyCheck 属æ?ã«ã€?¸æŠžå¿??カラãƒ?‚’æŒ?®šã—ã¾ã™ã?
107     *      例:mustAnyCheck="AA|BB|CC"
108     *          AA,BB,CC ã®ã‚«ãƒ©ãƒ?§é¸æŠžå¿??(ã™ã¹ã¦ãŒnullãªã‚‰ã‚¨ãƒ©ãƒ¼)
109     *      例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ"
110     *          AA,BB,CC ã®ã‚»ãƒ?ƒˆã¨ã€XX,YY,ZZã®ã‚»ãƒ?ƒˆã§ãれãžã‚Œé¸æŠžå¿??ã€?
111     *      例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ"
112     *          AA ã«å€¤ãŒã‚れã?ã™ã¹ã¦æˆç«‹ã?ãã†ã§ãªã??åˆã?ã€XX 㨠YY 㨠ZZ ãŒã™ã¹ã¦å¿??ã€?
113     *      例:mustAnyCheck="AA|BB,BB|CC,AA|CC"
114     *          AA,BB,CC ã®å†??ã©ã‚Œã‹?’ã¤ãŒå¿??ã€?AãŒæ?ç«‹ã™ã‚Œã?BBã‹CCãŒå¿??ã€‚åŒæ§˜ã«ã€?
115     *          BBãŒæ?ç«‹ã™ã‚Œã?ã€AAã‹CCãŒå¿??ã€?
116     *
117     *  例:query.jsp
118     *        <og:column name="AA" mustAny="true" />
119     *        <og:column name="BB" mustAny="true" />
120     *        <og:column name="XX" mustAny="XYZ"  />
121     *        <og:column name="YY" mustAny="XYZ"  />
122     *      result.jsp
123     *        <og:columnCheck mustAnyCheck="AA|BB,XX|YY" />
124     *      custom/custom.css
125     *          .XYZ { background-color: Green; }
126     *
127     *  ä¾?動的カラãƒ?§ã€entry.jsp ã§ã®ãƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã?
128     *     entry.jsp
129     *        <og:columnCheck command="NEW" columns="*" useColumnLabel="true" />
130     *
131     *     useColumnLabel ã§ã€å‹•çš?«ä½œæ?ã•れãŸã‚«ãƒ©ãƒ?SAVE=TRUEã§ã‚­ãƒ£ãƒ?‚·ãƒ¥æ¸ˆã¿)を使ã£ã¦
132     *     ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?command="NEW" ãªã®ã§ã€å¯¾è±¡ã‚«ãƒ©ãƒ?‚’æŒ?®šã™ã‚‹ã?ã«ã€?*" ã§ã™ã¹ã¦ã‚’é¸æŠžã—ã¾ã™ã?
133     *
134     * @og.group ç”»é¢ç™»éŒ²
135     *
136     * @version  4.0
137     * @author   Kazuhiko Hasegawa
138     * @since    JDK5.0,
139     */
140    public class ColumnCheckTag extends CommonTagSupport {
141            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
142            private static final String VERSION = "5.6.8.3 (2013/09/27)" ;
143    
144            private static final long serialVersionUID = 568320130927L ;
145    
146            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? æ–°è¦?{@value} */
147            public static final String CMD_NEW      = "NEW" ;
148            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 冿¤œç´¢ {@value}  */
149            public static final String CMD_RENEW = "RENEW" ;
150            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? エントリー {@value} */
151            public static final String CMD_ENTRY   = "ENTRY" ;
152            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */
153    
154            // 4.3.1.1 (2008/08/23) transient 追�
155            private transient DBTableModel table            = null;         // 4.1.2.1 (2008/03/13)
156    
157            private String          tableId         = HybsSystem.TBL_MDL_KEY;               // 3.5.4.3 (2004/01/05)
158            private String          command         = CMD_NEW;      // ç„¡æŒ?®šæ™‚ã¯ã€ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€?
159            private String[]        columns         = null;
160            private String[]        nullCheck       = null;
161            private String[]        mustAnyCheck= null;             // 3.8.0.9 (2005/10/17)
162            private int                     maxRowCount     = -1 ;          // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®?
163            private int                     minRowCount     = -1 ;          // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®?
164            private String          checkType       = "AUTO";
165            private String          bodyString      = null;         // 3.5.4.2 (2003/12/15)
166            private String[]        matchKeys       = null;         // 4.0.0 (2005/11/30)
167            private String[]        matchVals       = null;         // 4.0.0 (2005/11/30)
168    //      private boolean         isViewSimple= false;    // 4.3.3.0 (2008/10/01)
169            private boolean         isRealTime      = false;        // 4.3.7.0 (2009/06/01)
170            private boolean         isStrict        = false;        // 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ?
171    
172            private boolean         isColumnLabel= false;   // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€ã‚«ãƒ©ãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã—ã¾ã™ã?
173    //      private boolean         isTblClmLbl = false;    // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€DBTableModelã®ã‚«ãƒ©ãƒ?‹ã‚‰ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã—ã¾ã™ã?
174    
175            private String                  checkNames      = null; // 5.4.3.8 (2012/01/24)
176    
177            /**
178             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
179             *
180             * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?
181             * @og.rev 5.0.0.2 (2009/09/15) xss対å¿?>ãƒã‚§ãƒ?‚¯ã™ã‚‹
182             *
183             * @return      後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED )
184             */
185            @Override
186            public int doStartTag() {
187                    // 5.0.0.2 (2009/09/15) XSSãƒã‚§ãƒ?‚¯ã—ãªã?>ã™ã‚‹
188                    // useXssCheck( false );
189                    return ( EVAL_BODY_BUFFERED );          // Body を評価ã™ã‚‹
190            }
191    
192            /**
193             * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã?
194             *
195             * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?
196             *
197             * @return      後続å?ç??æŒ?¤º(SKIP_BODY)
198             */
199            @Override
200            public int doAfterBody() {
201                    bodyString = getBodyString();
202    
203                    return ( SKIP_BODY );
204            }
205    
206            /**
207             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
208             *
209             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
210             * @og.rev 3.4.0.3 (2003/09/10) command="NEW" ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«ã¯ã€DBTableModel をクリアã™ã‚‹ã€?
211             * @og.rev 3.5.4.2 (2003/12/15) HTMLTableViewForm クラスå変更(â‡?ViewForm_HTMLTable)
212             * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?
213             * @og.rev 3.5.4.3 (2004/01/05) tableId 属æ?を追åŠ??
214             * @og.rev 3.5.4.4 (2004/01/16) ã‚¨ãƒ©ãƒ¼çµæžœã‚’表示ã™ã‚‹ãƒ??ブル形å¼ã?フォーãƒ?¿®æ­£
215             * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
216             * @og.rev 4.1.2.1 (2008/03/13) table 属æ?を追åŠ??
217             * @og.rev 4.3.3.0 (2008/10/01) viewSimple属æ?追åŠ?
218             * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime
219             * @og.rev 5.6.8.3 (2013/09/27) checkTypeãŒAutoã®å ´åˆã?ã‚»ãƒ?ƒˆã‚’ã“ã“ã§è¡Œã„ã€tableModelãƒã‚§ãƒ?‚¯ã‚’checkTypeã§è¡Œã†ã€?
220             *
221             * @return      後続å?ç??æŒ?¤º
222             */
223            @Override
224            public int doEndTag() {
225                    debugPrint();           // 4.0.0 (2005/02/28)
226                    int rtnCode = EVAL_PAGE;
227    
228                    // 4.1.2.1 (2008/03/13)
229                    table = (DBTableModel)getObject( tableId );
230                    
231                    // 5.6.8.3 (2013/09/27) ãƒã‚§ãƒ?‚¯ã‚¿ã‚¤ãƒ—ã?autoã‚’å?れるä½ç½®å¤‰æ›´
232                    if( "AUTO".equals( checkType ) ) { checkType = command; }
233    
234                    // 3.4.0.3 (2003/09/10) コマンドãŒã€NEW,RENEW 以外ã?å ´åˆã?ã€DBTableModel ã¯å¿??ã€?
235                    if( 
236    //                      !CMD_NEW.equals( command ) &&
237    //                      !CMD_RENEW.equals( command ) &&
238                            !CMD_NEW.equals( checkType ) &&         // 5.6.8.3 (2013/09/27) commandã‹ã‚‰å¤‰æ›´
239                            !CMD_RENEW.equals( checkType ) &&
240    //                      getObject( tableId ) == null ) {        // 3.5.4.3 (2004/01/05)
241                            table == null ) {                                       // 4.1.2.1 (2008/03/13)
242                                    String errMsg = "æ¤œç´¢çµæžœã®ã‚ªãƒ–ジェクトãŒå­˜åœ¨ã—ã¾ã›ã‚“ã€?
243                                                                    + " checkType=[" + checkType + "]" ;
244                                    jspPrint( errMsg );
245                                    rtnCode = SKIP_PAGE ;
246                    }
247                    else {
248                    // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
249                            ErrorMessage errMsg = makeErrorDBTable();
250                            if( errMsg.getKekka() >= ErrorMessage.NG ) {
251                                    if( bodyString != null ) { jspPrint( bodyString ); }    // 3.5.4.2 (2003/12/15)
252    
253                                    // 4.3.3.0 (2008/10/01)
254    //                              jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) );
255                                    // 4.3.7.0 (2009/06/01)
256                                    if( isRealTime ) { jspPrint( TaglibUtil.makeHTMLSimpleErrorList( errMsg,getResource() ) ); }
257                                    else { jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg, getResource() ) ); }
258    
259                                    if( CMD_NEW.equals( command ) ) {
260                                            removeObject( tableId );
261                                    }
262                                    rtnCode = SKIP_PAGE ;
263                            }
264                            else if( errMsg.getKekka() == ErrorMessage.WARNING ) {
265                                    // 4.3.3.0 (2008/10/01)
266    //                              jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) );
267                                    // 4.3.7.0 (2009/06/01)
268                                    if( isRealTime ) { jspPrint( TaglibUtil.makeHTMLSimpleErrorList( errMsg,getResource() ) ); }
269                                    else { jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg, getResource() ) ); }                    }
270                    }
271    
272                    return( rtnCode );
273            }
274    
275            /**
276             * タグリブオブジェクトをリリースã—ã¾ã™ã?
277             *
278             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
279             *
280             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
281             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
282             * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?
283             * @og.rev 3.5.4.3 (2004/01/05) tableId 属æ?を追åŠ??
284             * @og.rev 3.8.0.9 (2005/10/17) mustAnyCheck 属æ?を追åŠ??
285             * @og.rev 4.1.2.1 (2008/03/13) table 属æ?を追åŠ??
286             * @og.rev 4.3.3.0 (2008/10/01) viewSimple属æ?追åŠ?
287             * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime
288             * @og.rev 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ?
289             * @og.rev 5.4.3.4 (2012/01/12) isColumnLabelを追�
290             *
291             */
292            @Override
293            protected void release2() {
294                    super.release2();
295                    command         = CMD_NEW;      // ç„¡æŒ?®šæ™‚ã¯ã€ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€?
296                    columns         = null;
297                    nullCheck       = null;
298                    maxRowCount     = -1 ;          // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®?
299                    minRowCount     = -1 ;          // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®?
300                    checkType       = "AUTO";
301                    bodyString      = null ;        // 3.5.4.2 (2003/12/15)
302                    tableId         = HybsSystem.TBL_MDL_KEY;               // 3.5.4.3 (2004/01/05)
303                    mustAnyCheck= null;             // 3.8.0.9 (2005/10/17)
304                    matchKeys       = null;         // 4.0.0 (2005/11/30)
305                    matchVals       = null;         // 4.0.0 (2005/11/30)
306                    table           = null;         // 4.1.2.1 (2008/03/13)
307    //              isViewSimple= false;    // 4.3.3.0 (2008/10/01)
308                    isRealTime      = false;        // 4.3.7.0 (2009/06/01)
309                    isStrict        = false;        // 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ?
310                    isColumnLabel= false;   // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€ã‚«ãƒ©ãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã—ã¾ã™ã?
311    //              isTblClmLbl = false;    // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€DBTableModelã®ã‚«ãƒ©ãƒ?‹ã‚‰ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã—ã¾ã™ã?
312                    checkNames      = null;         // 5.4.3.8 (2012/01/24)
313            }
314    
315            /**
316             * DBColumn オブジェクトを作æ?ã—ã¦ã€DBColumn#valueCheck( String )ã§
317             * ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€‚ãã®çµæžœã®ã€ErrorMessage オブジェクトを DBTableModel ã«
318             * å–り込んã§ã€ã‚¨ãƒ©ãƒ¼ã®å ´åˆã?ã€ãã®è¡¨ç¤ºã‚’行ã†ã€?
319             * 表示方法ã?ã€ãã®ã¾ã¾ ViewForm オブジェクトを作æ?ã—ã¦ã€è¡¨ç¤ºã‚’行ã†ã€?
320             *
321             * @og.rev 3.5.5.2 (2004/04/02) リターン値をã?DBTableModel ã‹ã‚‰ ErrorMessage ã«å¤‰æ›´
322             * @og.rev 4.0.0.0 (2005/01/31) リターン値㮠ErrorMessage ã¯ã€å¿?šå­˜åœ¨ã™ã‚‹ã€?
323             * @og.rev 4.1.2.1 (2008/03/13) command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã?
324             * @og.rev 5.6.8.3 (2013/09/27) checkTypeã®Auto時設定ä½ç½®ã‚’doEndTagã§ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
325             *
326             * @return      エラーメãƒ?‚»ãƒ¼ã‚¸ã®ãƒ??ブルモãƒ?ƒ«
327             */
328            private ErrorMessage makeErrorDBTable() {
329                    ErrorMessage errMsg = new ErrorMessage();
330    
331                    //if( "AUTO".equals( checkType ) ) { checkType = command; } // 5.6.8.3 (2013/09/27) move
332                    if( CMD_ENTRY.equals( checkType ) ) {
333                            errMsg.setTitle( "Request Column Error!" );
334                            errMsg = makeEntryErrorMessage( errMsg );
335                            errMsg = makeMaxRowCountErrorMessage( errMsg );
336                            errMsg = makeMinRowCountErrorMessage( errMsg );
337                    }
338                    else if( CMD_NEW.equals( checkType ) ) {
339                            errMsg.setTitle( "Entry Column Error!" );
340                            errMsg = makeErrorMessage( errMsg );
341                            errMsg = makeMaxRowCountErrorMessage( errMsg );
342                            errMsg = makeMinRowCountErrorMessage( errMsg );
343                    }
344                    else if( minRowCount >= 0 || maxRowCount >= 0) {  // -1 ã¯åˆ¶é™ç„¡ã?
345                            errMsg.setTitle( "Row Count Error Limited Error!" );
346                            errMsg = makeMaxRowCountErrorMessage( errMsg );
347                            errMsg = makeMinRowCountErrorMessage( errMsg );
348                    }
349                    // 4.1.2.1 (2008/03/13) command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã?
350                    else if( "MODIFY,DELETE".indexOf( checkType ) >= 0 && minRowCount < 0 ) {
351                            minRowCount = 1;
352                            errMsg = makeMinRowCountErrorMessage( errMsg );
353                    }
354                    return errMsg;
355            }
356    
357            /**
358             * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
359             * 引数ã®ã‚«ãƒ©ãƒ?é…å?よりリクエスト情報をå–å¾—ã—ã¦ã€å?ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
360             * DBColumn#valueCheck( String ) ã®çµæžœã®ErrorMessageã‚’ã™ã¹ã¦ append
361             * ã—ã¦ã?ã¾ã™ã?
362             *
363             * @og.rev 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
364             * @og.rev 3.8.1.0 (2005/10/24) ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ­£è¦åŒ–変æ›(DBColumn#valueSet(String))中止
365             * @og.rev 3.8.5.3 (2006/06/30) リクエスト㫠% , _ ãŒå«ã¾ã‚ŒãŸã¨ãã?ã€å‰Šé™¤ã—ã¾ã™ã?
366             * @og.rev 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ?
367             * @og.rev 5.0.0.2 (2009/09/15) 個別ã«xssãƒã‚§ãƒ?‚¯ã‚’false
368             * @og.rev 5.1.9.0 (2010/08/01) åŒã˜åå‰ã®é ?›®ã¯ã€?ã¤ã«ã¾ã¨ã‚ã‚‹(ラジオボタンç­?
369             * @og.rev 5.2.0.0 (2010/09/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã?
370             * @og.rev 5.2.2.0 (2010/11/01) DBColumn#valueCheck ã§ã€ç”˜ã?ƒã‚§ãƒ?‚¯ã‚’行ã†ã‚ˆã†ã«ã€å¼•æ•°ã« isStrict を追åŠ?
371             * @og.rev 5.4.3.4 (2012/01/12) getLabel( String )ã‚’ã?リソースã‹ã‚‰ã«çµ±ä¸?™ã‚‹ã¨ã¨ã‚‚ã«ã€isColumnLabel 対応を行ã†ã€?
372             * @og.rev 5.4.3.8 (2012/01/28) checkNames対�
373             *
374             * @param       errMsg  ErrorMessageオブジェク�
375             *
376             * @return      カラãƒ?‚­ãƒ¼ ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ?
377             */
378            private ErrorMessage makeErrorMessage( final ErrorMessage errMsg ) {
379    
380                    // 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ?
381                    // request ã‹ã‚‰å–å?ã?注æ„:mustAny 以外ã?自由形å¼ã?å€¤ã¯æ‰?¾—ã—ã¦ã?¾ã›ã‚“ã€?
382                    // 5.2.0.0 (2010/09/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã?
383                    //  (基本çš?«ãƒ‘ラメーターをé?らãªã?™ã‚Šè?å‹•ãƒã‚§ãƒ?‚¯ã¯å‹•ã‹ãªã?Œã€RequestCacheã«ã‚ˆã‚Šå‹•ãã“ã¨ãŒã‚ã‚?
384                    if( !isRealTime ) {
385                            if( nullCheck == null ) {
386                                    nullCheck = getRequestValues( HybsSystem.MUST_KEY + "must" );
387                                    // 5.1.9.0 (2010/08/01) åŒã˜åå‰ã®é ?›®ã¯ã€?ã¤ã«ã¾ã¨ã‚ã‚‹(ラジオボタンç­?
388    //                              if( nullCheck != null ) { Arrays.sort( nullCheck ); }
389                                    if( nullCheck != null ) {
390                                            Set<String> ss = new TreeSet<String>();
391                                            ss.addAll( Arrays.asList( nullCheck ) );
392    //                                      nullCheck = ss.toArray( new String[0] );
393                                            nullCheck = ss.toArray( new String[ss.size()] );                // 5.1.9.0 (2010/08/01) K.H
394                                    }
395                            }
396                            if( mustAnyCheck == null ) {
397                                    String[] mustAnyReq = getRequestValues( HybsSystem.MUST_KEY + "mustAny" );
398                                    if( mustAnyReq != null && mustAnyReq.length > 0 ) {
399                                            mustAnyCheck = new String[] { StringUtil.array2line( mustAnyReq,"|" ) };
400                                    }
401                            }
402                    }
403    
404                    if( nullCheck != null && nullCheck.length != 0 ) {
405                            for( int i=0; i<nullCheck.length; i++ ) {
406                                    String clmKey = nullCheck[i];           // 5.4.3.4 (2012/01/12)
407                                    // String val  = getRequestValue( nullCheck[i] );
408    //                              String val  = getRequestValue( nullCheck[i], false ); // 5.0.0.2 (2009/09/15)
409                                    String val  = getRequestValue( clmKey, false ); // 5.0.0.2 (2009/09/15)
410                                    if( val == null || val.length() == 0 ) {
411                                            // 5.4.3.4 (2012/01/12) isColumnLabel 追�
412    //                                      String label = getLabel( nullCheck[i] );        // 4.0.0 (2005/01/31)
413                                            String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey );
414                                            // ERR0012 : æŒ?®šã?ãƒ??ã‚¿ãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?NULLエラー)。key={0}
415                                            errMsg.addMessage( 0,ErrorMessage.NG,"ERR0012",label );
416                                    }
417                            }
418                    }
419                    // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
420                    if( mustAnyCheck != null && mustAnyCheck.length != 0 ) {
421                            for( int i=0; i<mustAnyCheck.length; i++ ) {
422                                    boolean flag = false;
423                                    String[] mustSub = StringUtil.csv2Array( mustAnyCheck[i],'|' );
424                                    for( int j=0; j<mustSub.length; j++ ) {
425                                            // String val  = getRequestValue( mustSub[j] );
426                                            String val  = getRequestValue( mustSub[j], false ); // 5.0.0.2 (2009/09/15)
427                                            if( val != null && val.length() > 0 ) {
428                                                    flag = true; break;             // ã²ã¨ã¤ã§ã‚‚nullã§ãªã‘れã°ã€OK
429                                            }
430                                    }
431                                    if( ! flag ) {
432                                            StringBuilder buf = new StringBuilder();
433                                            for( int j=0; j<mustSub.length; j++ ) {
434                                                    String clmKey = mustSub[j];             // 5.4.3.4 (2012/01/12)
435                                                    // 5.4.3.4 (2012/01/12) isColumnLabel 追�
436    //                                              buf.append( getResource().getLabel( mustSub[j] ) ).append( "," );
437                                                    String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey );
438                                                    buf.append( label ).append( "," );
439                                            }
440                                            // ERR0036 : é¸æŠžå¿??エラー。以下ã?ãƒ??ã‚¿ã®å†?©ã‚Œã‹ã¯å…¥åŠ›ã—ã¦ãã ã•ã„。key={0}
441                                            errMsg.addMessage( 0,ErrorMessage.NG,"ERR0036",buf.toString() );
442                                    }
443                            }
444                    }
445                    if( columns != null && columns.length != 0 ) {
446                            for( int i=0; i<columns.length; i++ ) {
447                                    // 3.8.1.0 (2005/10/24) ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ­£è¦åŒ–変æ›(DBColumn#valueSet(String))中止
448                                    // String clmVal = getRequestValue( columns[i] );
449                                    String clmVal = getRequestValue( columns[i], false ); // 5.0.0.2 (2009/09/15)
450                                    if( clmVal != null && clmVal.length() > 0 ) {
451                                            clmVal = StringUtil.replace( clmVal,"%","" );           // 3.8.5.3 (2006/06/30)
452                                            clmVal = StringUtil.replace( clmVal,"_","" );           // 3.8.5.3 (2006/06/30)
453                                            DBColumn dbColumn = getDBColumn( columns[i] );
454                                            // 5.4.3.8 (2012/01/24) checkNames対�
455                                            if( ( "," + checkNames + "," ).indexOf( "," + columns[i] + "," ) >= 0 ) {
456                                                    String val = dbColumn.valueSet( clmVal );
457                                                    if( val != null ) { clmVal = val; }
458                                            }
459                                            // 5.2.2.0 (2010/11/01) DBColumn#valueCheck ã§ã€ç”˜ã?ƒã‚§ãƒ?‚¯ã‚’行ã†ã‚ˆã†ã«ã€å¼•æ•°ã« isStrict を追åŠ?
460    //                                      errMsg.append( dbColumn.valueCheck( clmVal ) );
461                                            errMsg.append( dbColumn.valueCheck( clmVal,isStrict ) );
462                                    }
463                            }
464                    }
465                    // 4.0.0 (2005/11/30) æ­£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã®è¿½åŠ?
466                    if( matchKeys != null && matchKeys.length != 0 ) {
467                            for( int i=0; i<matchKeys.length; i++ ) {
468                                    String clmKey = matchKeys[i];           // 5.4.3.4 (2012/01/12)
469                                    // String val  = getRequestValue( matchKeys[i] );
470    //                              String val  = getRequestValue( matchKeys[i], false ); // 5.0.0.2 (2009/09/15)
471                                    String val  = getRequestValue( clmKey, false ); // 5.0.0.2 (2009/09/15)
472                                    if( val != null && ! val.matches( matchVals[i] ) ) {
473                                            // 5.4.3.4 (2012/01/12) isColumnLabel 追�
474    //                                      String label = getLabel( matchKeys[i] );
475                                            String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey );
476                                            // ERR0037 : ãƒ??ã‚¿æ•´åˆæ?エラー。指定ã?ã‚­ãƒ¼ã¯æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã®çµæžœãƒžãƒƒãƒã—ã¾ã›ã‚“ã§ã—ãŸã€‚key={0} val={1} regex={2}
477                                            errMsg.addMessage( 0,ErrorMessage.NG,"ERR0037",label,val,matchVals[i] );
478                                    }
479                            }
480                    }
481    
482                    return errMsg;
483            }
484    
485            /**
486             * エントリーãƒ??ã‚¿ã®ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
487             * 引数ã®ã‚«ãƒ©ãƒ?é…å?よりエントリーãƒ??ã‚¿å½¢å¼ã?リクエスト情報をå–å¾—ã—ã¦ã€?
488             * 値をãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
489             * DBColumn#valueCheck( String ) ã®çµæžœã®ErrorMessageã‚’ã™ã¹ã¦ append
490             * ã—ã¦ã?ã¾ã™ã?
491             *
492             * @og.rev 3.1.0.0 (2003/03/20) åå‰ã¨è¡Œç•ªå·ã®åŒºåˆ?‚Šè¨˜å·ã‚?"^" ã‹ã‚‰ "__" ã«å¤‰æ›´ã€?
493             * @og.rev 3.5.5.0 (2004/03/12) åå‰ã¨è¡Œç•ªå·ã®åŒºåˆ?‚Šè¨˜å·("__")ã‚’ã?HybsSystem.JOINT_STRING  ã«å¤‰æ›´ã€?
494             * @og.rev 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
495             * @og.rev 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ?
496             * @og.rev 4.3.6.4 (2009/05/01) 削除時ã«å¿?šmustAnyãƒã‚§ãƒ?‚¯ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ãƒã‚°ã‚’修正(書込ã¿å¯èƒ½è¡Œã?ã¿ã‚’å?ç?™ã‚?
497             * @og.rev 4.3.7.0 (2009/06/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã?
498             * @og.rev 5.0.0.2 (2009/09/15) xssãƒã‚§ãƒ?‚¯
499             * @og.rev 5.4.3.4 (2012/01/12) getLabel( String )ã‚’ã?リソースã‹ã‚‰ã«çµ±ä¸?™ã‚‹ã¨ã¨ã‚‚ã«ã€isColumnLabel 対応を行ã†ã€?
500             *
501             * @param       errMsg  ErrorMessageオブジェク�
502             *
503             * @return      カラãƒ?‚­ãƒ¼ ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ?
504             */
505            private ErrorMessage makeEntryErrorMessage( final ErrorMessage errMsg ) {
506                    int[] rowNo = getParameterRows();
507                    if( rowNo.length == 0 ) { return errMsg; }
508    
509                    // 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ?
510                    // table ã‹ã‚‰å–å?ã?(ソート済ã¿)
511                    // 4.3.7.0 (2009/06/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã?
512                    if( !isRealTime ) {
513                            if( nullCheck    == null ) { nullCheck    = table.getMustArray();        }
514                            if( mustAnyCheck == null ) { mustAnyCheck = table.getMustAnyArray(); }
515                    }
516    
517                    // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
518                    boolean[][] rowAnyOne = null;
519                    // 4.3.6.4 (2009/05/01)
520                    boolean[] rowForCheck = null;
521                    if( mustAnyCheck != null && mustAnyCheck.length != 0 ) {
522                            rowAnyOne = new boolean[rowNo.length][mustAnyCheck.length];
523                            rowForCheck = new boolean[rowNo.length];
524            //              for( int i=0; i<rowNo.length; i++ ) {
525            //                      Arrays.fill( rowAnyOne[i],false );
526            //              }
527                    }
528    
529                    DBColumn dbColumn = null;       // 5.4.3.4 (2012/01/12) isColumnLabel 対�
530                    Enumeration<?> enume = getParameterNames();               // 4.3.3.6 (2008/11/15) Generics警告対�
531                    while( enume.hasMoreElements() ) {
532                            String key  = (String)(enume.nextElement());
533                            int    idx  = key.lastIndexOf(HybsSystem.JOINT_STRING);
534    
535                            if( idx > 0 ) {
536                                    String column = key.substring(0,idx);
537                                    int    row    = Integer.parseInt( key.substring(idx + 2) );
538                                    // String val    = getRequestValue( key );
539                                    String val    = getRequestValue( key, false ); // 5.0.0.2 (2009/09/15)
540    
541                                    int i = Arrays.binarySearch( rowNo,row );
542                                    if( i >= 0 ) {
543                                            // 5.4.3.4 (2012/01/12) isColumnLabel 対�
544    //                                      DBColumn dbColumn = getDBColumn( column );
545                                            dbColumn = null;
546                                            if( isColumnLabel && table != null ) {
547                                                    int clmNo = table.getColumnNo( column,false );  // エラーをå?ã•ãªã??
548                                                    if( clmNo >= 0 ) {
549                                                            dbColumn = table.getDBColumn( clmNo );
550                                                    }
551                                            }
552                                            if( dbColumn == null ) {
553                                                    dbColumn = getDBColumn( column );
554                                            }
555    
556                                            String val2 = dbColumn.valueSet( val );
557                                            errMsg.append( row+1,dbColumn.valueCheck( val2 ) );
558                                            if( nullCheck != null && nullCheck.length != 0 ) {
559                                                    int j = Arrays.binarySearch( nullCheck,column );
560                                                    if( j>=0 && ( val2 == null || val2.length() == 0 )) {
561                                                            // ERR0012 : æŒ?®šã?ãƒ??ã‚¿ãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?NULLエラー)。key={0}
562                                                            errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0012",dbColumn.getLabel() );
563                                                    }
564                                            }
565                                            // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
566                                            if( rowAnyOne != null ) {
567                                                    for( int j=0; j<mustAnyCheck.length; j++ ) {
568                                                            if( !rowAnyOne[i][j] &&
569                                                                    mustAnyCheck[j].indexOf( column ) >= 0 &&
570                                                                    val2 != null && val2.length() > 0 ) {
571                                                                            rowAnyOne[i][j] = true; // ã©ã‚Œã‹ãŒå­˜åœ¨
572                                                            }
573                                                    }
574                                                    // 4.3.6.4 (2009/05/01)
575                                                    rowForCheck[i] = true;
576                                            }
577    
578                                            // 4.0.0 (2005/11/30) æ­£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã®è¿½åŠ?
579                                            if( matchKeys != null && matchKeys.length != 0 ) {
580                                                    for( int j=0; j<matchKeys.length; j++ ) {
581                                                            if( column.equals( matchKeys[j] ) ) {
582                                                                    if( val2 != null && ! val2.matches( matchVals[j] ) ) {
583                                                                            // äº’æ›æ€§ã¯ãªããªã£ã¦ã?‚‹ãŒã?æ­£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã¯ä½™ã‚Šä½¿ã£ã¦ã?ªã??ã§ã€çµ±ä¸?—ã¦ãŠãã€?
584                                                                            // 5.4.3.4 (2012/01/12) isColumnLabel 対�
585                                                                            dbColumn = null;
586                                                                            if( isColumnLabel && table != null ) {
587                                                                                    int clmNo = table.getColumnNo( column,false );  // エラーをå?ã•ãªã??
588                                                                                    if( clmNo >= 0 ) {
589                                                                                            dbColumn = table.getDBColumn( clmNo );
590                                                                                    }
591                                                                            }
592                                                                            if( dbColumn == null ) {
593                                                                                    dbColumn = getDBColumn( column );
594                                                                            }
595    //                                                                      String label = getLabel( column );
596    
597                                                                            // ERR0037 : ãƒ??ã‚¿æ•´åˆæ?エラー。指定ã?ã‚­ãƒ¼ã¯æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã®çµæžœãƒžãƒƒãƒã—ã¾ã›ã‚“ã§ã—ãŸã€‚key={0} val={1} regex={2}
598    //                                                                      errMsg.addMessage( 0,ErrorMessage.NG,"ERR0037",label,val2,matchVals[i] );
599                                                                            errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0037",dbColumn.getLabel(),val2,matchVals[i] );
600                                                                    }
601                                                                    break;
602                                                            }
603                                                    }
604                                            }
605                                    }
606                            }
607                    }
608    
609                    // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ?
610                    if( rowAnyOne != null ) {
611                            for( int row=0; row<rowAnyOne.length; row++ ) {
612                                    // 4.3.6.4 (2009/05/01) 書込ã¿å¯èƒ½è¡Œã?ã¿ã‚’å?ç?™ã‚?
613                                    if ( rowForCheck[row] ) {
614                                            for ( int i = 0; i < mustAnyCheck.length; i++ ) {
615                                                    if ( !rowAnyOne[row][i] ) {
616                                                            String[] mustSub = StringUtil.csv2Array( mustAnyCheck[i], '|' );
617    
618                                                            StringBuilder buf = new StringBuilder();
619                                                            buf.append( "row=[" ).append( rowNo[row]+1 ).append( "] " );
620                                                            for ( int j = 0; j < mustSub.length; j++ ) {
621                                                                    // ã“ã“ã®å‡¦ç? ã‘ã?ä»–ã¨ç•°ãªã‚‹ã?ã¯ã€äº’æ›æ€§é‡è¦–ã?ãŸã‚ã€?é¸æŠžå¿??ã¯åˆ©ç”¨é »åº¦ãŒé«˜ã„ã®ã§ã€?
622                                                                    // 5.4.3.4 (2012/01/12) isColumnLabel 対�
623                                                                    String label = null ;
624                                                                    if( isColumnLabel && table != null ) {
625                                                                            int clmNo = table.getColumnNo( mustSub[j],false );      // エラーをå?ã•ãªã??
626                                                                            if( clmNo >= 0 ) {
627                                                                                    dbColumn = table.getDBColumn( clmNo );
628                                                                            }
629                                                                            if( dbColumn == null ) {
630                                                                                    dbColumn = getDBColumn( mustSub[j] );
631                                                                            }
632                                                                            label = dbColumn.getLabel();
633                                                                    }
634                                                                    else {
635                                                                            label = getResource().getLabel( mustSub[j] );           // äº’æ›æ€§ã®ãŸã‚ã®å‡¦ç½®ã€?
636                                                                    }
637    //                                                              buf.append( getResource().getLabel( mustSub[j] ) ).append( "|" );
638                                                                    buf.append( label ).append( "|" );
639                                                            }
640                                                            // ERR0036 : é¸æŠžå¿??エラー。以下ã?ãƒ??ã‚¿ã®å†?©ã‚Œã‹ã¯å…¥åŠ›ã—ã¦ãã ã•ã„。key={0}
641    //                                                      errMsg.addMessage( 0, ErrorMessage.NG, "ERR0036", buf.toString() );
642                                                            errMsg.addMessage( rowNo[row]+1, ErrorMessage.NG, "ERR0036", buf.toString() );
643                                                    }
644                                            }
645                                    }
646                            }
647                    }
648    
649                    return errMsg;
650            }
651    
652            /**
653             * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
654             * リクエストã•れãŸä»¶æ•°ã®æœ?¤§å€¤ã«åˆ¶é™ã‚’åŠ?ˆã¾ã™ã?
655             * ?‘ä»¶ã?‘ã«ã—ãŸã??åˆã??Œé?常ã¯Viewã§ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’使用ã›ãšã«
656             * ラジオボタンを使用ã—ã¦ãã ã•ã„ã€?
657             *
658             * @param       errMsg  ErrorMessageオブジェク�
659             *
660             * @return      カラãƒ?‚­ãƒ¼ ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ?
661             */
662            private ErrorMessage makeMaxRowCountErrorMessage( final ErrorMessage errMsg ) {
663                    if( maxRowCount < 0 ) { return errMsg; }     // 無制�
664    
665                    // 件数制é™ã?ãƒã‚§ãƒ?‚¯
666                    int[] rowNo = getParameterRows();
667                    int rowCount = rowNo.length ;
668                    if( rowCount > maxRowCount ) {
669                            // ERR0017 : é¸æŠžã‚¨ãƒ©ãƒ¼ã€‚é¸æŠžè¡Œæ•°({0} ä»¶)ãŒã?æœ?¤§åˆ¶é™å?({1} ä»¶)以上é¸ã°ã‚Œã¾ã—ãŸã€?
670                            String arg0 = String.valueOf( rowCount );
671                            String arg1 = String.valueOf( maxRowCount );
672                            errMsg.addMessage( 0,ErrorMessage.NG,"ERR0017",arg0,arg1 );
673                    }
674    
675                    return errMsg;
676            }
677    
678            /**
679             * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
680             * リクエストã•れãŸä»¶æ•°ã®æœ?°å?ã«åˆ¶é™ã‚’åŠ?ˆã¾ã™ã?
681             * ?‘ä»¶ã?‘ã«ã—ãŸã??åˆã??Œé?常ã¯Viewã§ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’使用ã›ãšã«
682             * ラジオボタンを使用ã—ã¦ãã ã•ã„ã€?
683             *
684             * @param       errMsg  ErrorMessageオブジェク�
685             *
686             * @return      カラãƒ?‚­ãƒ¼ ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ?
687             */
688            private ErrorMessage makeMinRowCountErrorMessage( final ErrorMessage errMsg ) {
689                    if( minRowCount < 0 ) { return errMsg; }     // 無制�
690    
691                    // 件数制é™ã?ãƒã‚§ãƒ?‚¯
692                    int[] rowNo = getParameterRows();
693                    int rowCount = rowNo.length ;
694                    if( rowCount < minRowCount ) {
695                            // ERR0018 : é¸æŠžã‚¨ãƒ©ãƒ¼ã€‚é¸æŠžè¡Œæ•°({0} ä»¶)ãŒã?æœ?°åˆ¶é™å?({1} ä»¶)以下é¸ã°ã‚Œã¾ã—ãŸã€?
696                            String arg0 = String.valueOf( rowCount );
697                            String arg1 = String.valueOf( minRowCount );
698                            errMsg.addMessage( 0,ErrorMessage.NG,"ERR0018",arg0,arg1 );
699                    }
700    
701                    return errMsg;
702            }
703    
704            /**
705             * ã€TAG】ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
706             *
707             * @og.tag columns="AAA,BBB,CCC,DDD"
708             * <del>å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã?
709             * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’設定ã§ãるよã†ã«ãªã‚Šã¾ã™ã?</del>
710             * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã?
711             * "*" を指定ã™ã‚‹ã¨ã€command="NEW" ã®ã¨ãã?判定ã«ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæ–‡å­—å?ã‚?
712             * ãƒã‚§ãƒ?‚¯å¯¾è±¡ã¨ã—ã¾ã™ã?通常ã¯ã€å¿?¦å?ã?‘æŒ?®šã—ã¾ã™ãŒã€å‹•çš?‚«ãƒ©ãƒ?ªã©ã®
713             * å ´åˆã?ã€ã‚«ãƒ©ãƒ?ã‚’äºˆã‚æŒ?®šã§ããªã?Ÿã‚ã?"*" ã§æŒ?®šã§ãるよã†ã«ã—ã¾ã™ã?
714             * ãã?å ´åˆã?"h_" , "hX_" , maxRowCount , command , pageSize , pagePlus ,
715             * GAMENID , BACK_JSPID , BACK_GAMENID ã®äºˆç´?ªžã?ã€å¯¾è±¡ã‹ã‚‰é™¤ãã¾ã™ã?
716             *
717             * @og.rev 3.5.6.2 (2004/07/05) å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾?
718             * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã?
719             * @og.rev 5.4.3.4 (2012/01/12) command="NEW" ã®ã¨ãã?動的カラãƒ?¯¾å¿? "*" ã§ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒ?
720             *
721             * @param   clms カラ�?(CSV形�
722             */
723            public void setColumns( final String clms ) {
724                    columns = StringUtil.csv2Array( getRequestParameter( clms ) );
725                    if( columns.length == 0 ) { columns = null; }
726    
727                    // 5.4.3.4 (2012/01/12) command="NEW" ã®ã¨ãã?動的カラãƒ?¯¾å¿? "*" ã§ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒ?
728                    if( columns != null && "*".equals( columns[0] ) ) {
729                            Set<String> clmSet = new TreeSet<String>();         // リクエストã?ãƒãƒ©ãƒãƒ©ãªã®ã§ã€ã¨ã‚Šã‚ãˆãšã‚½ãƒ¼ãƒˆã—ã¦ãã¾ã™ã?
730    
731                            Enumeration<?> enume = getParameterNames();               // Generics警告対�
732                            while( enume.hasMoreElements() ) {
733                                    String clm  = (String)(enume.nextElement());
734                                    // 予ç´?ªžä»¥å¤–を登録ã—ã¾ã™ã?
735                                    if( clm != null && !clm.isEmpty() && !clm.startsWith( "h_" ) && !clm.startsWith( "hX_" ) ) {
736                                            clmSet.add( clm );
737                                    }
738                            }
739                            // 予ç´?ªžã‚’削除ã—ã¾ã™ã?
740                            clmSet.remove( "maxRowCount" );
741                            clmSet.remove( "command" );
742                            clmSet.remove( "pageSize" );
743                            clmSet.remove( "pagePlus" );
744                            clmSet.remove( "GAMENID" );
745                            clmSet.remove( "BACK_JSPID" );
746                            clmSet.remove( "BACK_GAMENID" );
747    
748                            columns = clmSet.toArray( new String[clmSet.size()] );
749                    }
750            }
751    
752            /**
753             * ã€TAG】NULL ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?CSVå½¢å¼?ã‚Šã§æŒ?®šã—ã¾ã™ã?
754             *
755             * @og.tag
756             * (must 属æ?ã®ã‚»ãƒ?ƒˆã«ã‚ˆã‚Šã€è?å‹•å?ç?•れã¾ã?
757             * nullCheck="AAA,BBB,CCC,DDD"
758             * <del>å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã?
759             * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’設定ã§ãるよã†ã«ãªã‚Šã¾ã™ã?</del>
760             * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã?
761             *
762             * @og.rev 3.5.6.2 (2004/07/05) å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾?
763             * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã?
764             *
765             * @param   clms カラ�?(CSV形�
766             */
767            public void setNullCheck( final String clms ) {
768                    nullCheck = StringUtil.csv2Array( getRequestParameter( clms ) );
769                    if( nullCheck.length == 0 ) { nullCheck = null; }
770                    else {
771                            Arrays.sort( nullCheck );
772                    }
773            }
774    
775            /**
776             * ã€TAGã€‘é¸æŠžå¿??カラãƒ?æŒ?®šã?カラãƒ??å†?œ€ä½Žã?ã¨ã¤ãŒNULLã§ãªã?ã‚?AA|BB|CC,XX|YY|ZZ" å½¢å¼ã§æŒ?®šã—ã¾ã™ã?
777             *
778             * @og.tag
779             * (mustAny 属æ?ã®ã‚»ãƒ?ƒˆã«ã‚ˆã‚Šã€è?å‹•å?ç?•れã¾ã?
780             * è¤?•°ã®ã‚«ãƒ©ãƒ?±žæ?ã®å€¤ã®ã?¡ã€ã©ã‚Œã‹ã?null ã§ãªã??åˆã?正常ã¨ã—ã?
781             * ã™ã¹ã¦ã?null ã®å ´åˆã‚’警告ã—ã¾ã™ã?
782             *
783             *  例:mustAnyCheck="AA|BB|CC"
784             *      AA,BB,CC ã®ã‚«ãƒ©ãƒ?§é¸æŠžå¿??(ã™ã¹ã¦ãŒnullãªã‚‰ã‚¨ãƒ©ãƒ¼)
785             *  例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ"
786             *      AA,BB,CC ã®ã‚»ãƒ?ƒˆã¨ã€XX,YY,ZZã®ã‚»ãƒ?ƒˆã§ãれãžã‚Œé¸æŠžå¿??ã€?
787             *  例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ"
788             *      AA ã«å€¤ãŒã‚れã?ã™ã¹ã¦æˆç«‹ã?ãã†ã§ãªã??åˆã?ã€XX 㨠YY 㨠ZZ ãŒã™ã¹ã¦å¿??ã€?
789             *  例:mustAnyCheck="AA|BB,BB|CC,AA|CC"
790             *      AA,BB,CC ã®å†??ã©ã‚Œã‹?’ã¤ãŒå¿??ã€?AãŒæ?ç«‹ã™ã‚Œã?BBã‹CCãŒå¿??ã€‚åŒæ§˜ã«ã€?
791             *      BBãŒæ?ç«‹ã™ã‚Œã?ã€AAã‹CCãŒå¿??ã€?
792             *
793             * é¸æŠžå¿??ã¯ã€must ã¨åŒæ§˜ã«ã€è‰²ã¥ã‘を行ã†(query.jsp)ç”»é¢ã§ã¯ã€mustAny 属æ?ã‚?
794             * ã‚»ãƒ?ƒˆã—ã¾ã™ã?ãƒã‚§ãƒ?‚¯ã‚’行ã†(result.jsp)ç”»é¢ã§ã¯ã€columnCheck ã‚¿ã‚°ã®
795             * mustAnyCheck 属æ?ã«ã€?¸æŠžå¿??カラãƒ?‚’æŒ?®šã—ã¾ã™ã?(上記å‚ç…§)
796             * column ã‚¿ã‚°ç­‰ã? mustAny 属æ?ã«ã€mustAny="true" ã¨ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€ç”Ÿæˆã•れる
797             * HTMLã¯ã€class="mustAny" ãŒå?力ã•れã¾ã™ã?エンジン標準ã§ã¯ã€default.css ã«
798             * .mustAny ãŒå®šç¾©ã•れã¦ã?¾ã™ã?( background-color: #CCFFFF; )
799             * ãªãŠã?mustAny 属æ?ã«ã€true 以外ã?値をセãƒ?ƒˆã—ãŸå ´å?mustAny="XYZ")ã¯ã€?
800             * 生æ?ã•れるHTMLã«ã€class="XYZ" ãŒå?力ã•れã¾ã™ã?ã“れã¯ã€è¤?•°ã®ã‚°ãƒ«ãƒ¼ãƒ—é–“ã§
801             * 色を変ãˆã¦ã€?¸æŠžå¿??を指定ã™ã‚‹å?åˆã«ä½¿ç”¨ã—ã¾ã™ã?色ã¯ã€custom/custom.css
802             * ã§æŒ?®šã—ã¾ã™ã?
803             * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã?
804             *
805             * @og.rev 3.8.0.9 (2005/10/17) æ–°è¦è¿½åŠ?
806             * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã?
807             *
808             * @param   clms é¸æŠžå¿??カラãƒ?
809             */
810            public void setMustAnyCheck( final String clms ) {
811                    mustAnyCheck = StringUtil.csv2Array( getRequestParameter( clms ) );
812                    if( mustAnyCheck.length == 0 ) { mustAnyCheck = null; }
813                    else {
814                            Arrays.sort( mustAnyCheck );
815                    }
816            }
817    
818            /**
819             * ã€TAG】コマンド[NEW/RENEW/ENTRY]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)ã€?
820             *
821             * @og.tag
822             * コマンドã?,HTMLã‹ã‚‰(get/post)æŒ?®šã•れã¾ã™ã?ã§,CMD_xxx ã§è¨­å®šã•れる
823             * フィールド定数値ã®ã?¥ã‚Œã‹ã‚’ã?æŒ?®šã§ãã¾ã™ã?
824             * 何も設定ã•れãªã??ã¾ãŸã?ã€null ã®å ´åˆã?ã€?NEW" ãŒå?期å?ã«ã‚»ãƒ?ƒˆã•れã¾ã™ã?
825             *
826             * @param       cmd コマンãƒ?public static final 宣è¨?•れã¦ã?‚‹æ–?­—å?)
827             * @see         <a href="{&#064;docRoot}/constant-values.html#org.opengion.hayabusa.taglib.ColumnCheckTag.CMD_NEW">コマンド定数</a>
828             */
829            public void setCommand( final String cmd ) {
830                    String cmd2 = getRequestParameter( cmd );
831                    if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
832            }
833    
834            /**
835             * ã€TAGã€?ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿[AUTO/NEW/ENTRY]を指定ã—ã¾ã?åˆæœŸå€¤:AUTO)ã€?
836             *
837             * @og.tag
838             * 通常ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‡ãƒ¼ã‚¿ã¯ã€ã‚­ãƒ¼ãã?ã‚‚ã?ã§ã™ãŒ,エントリãƒ??ã‚¿ã¯è¡¨å½¢å¼ã?
839             * ãƒ??ã‚¿ã‚’ä¸?‹¬ã§ç™»éŒ²ã™ã‚‹ç‚ºã€?キー??__" ??行番å·)å½¢å¼ã‚’ã€ãƒãƒ©ã™å¿?¦ãŒã‚りã¾ã™ã?
840             *
841             * ENTRY ã¯ã€DBTableModelã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…報をãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
842             * ã“れã¯ã€å?ãƒ??ã‚¿ãŒå¯¾è±¡ã«ãªã‚Šã¾ã™ã?(columns/nullCheck 属æ?ã¯ç„¡åй)
843             * AUTO ã¯ã€command ãŒã?上è¨?NEW ã?ENTRY ã‹ã‚’判断ã—ã¦å‡¦ç?‚’振りå?ã‘ã¾ã™ã?
844             * åˆæœŸå€¤ã¯ã€AUTO ã§ã™ã?
845             *
846             * @param   flag ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿(AUTO,NEW,ENTRY)
847             */
848            public void setCheckType( final String flag ) {
849                    String ct = getRequestParameter( flag );
850                    if( ct != null && ct.length() > 0 ) { checkType = ct ; }
851            }
852    
853            /**
854             * ã€TAGã€?del>ENTRY時ã«</del>ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?¤§å€¤ã‚’設定ã—ã¾ã™ã?
855             *
856             * @og.tag
857             * æœ?¤§é¸æŠžä»¶æ•°ã‚’è¶?ˆãŸå?åˆã?,エラーメãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã?
858             * 例ãˆã°ã€?¼‘ä»¶ã®ã¿ã‚’正常ã¨ã™ã‚‹å ´åˆã?ã€maxRowCount="1" ã¨ã—ã¾ã™ã?
859             *
860             * @param   count 制é™ã‚’ã‹ã‘ãŸã„行数(ã“ã?ä»¶æ•°ã¨åŒã˜å ´åˆã?正常 )
861             */
862            public void setMaxRowCount( final String count ) {
863                    maxRowCount = nval( getRequestParameter( count ),maxRowCount );
864            }
865    
866            /**
867             * ã€TAGã€?del>ENTRY時ã«</del>ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?°å?を設定ã—ã¾ã™ã?
868             *
869             * @og.tag
870             * æœ?°é¸æŠžä»¶æ•°ã‚’è¶?ˆãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã?
871             * 例ãˆã°ã€?¼‘ä»¶ã®ã¿ã‚’正常ã¨ã™ã‚‹å ´åˆã?ã€minRowCount="1" ã¨ã—ã¾ã™ã?
872             *
873             * @param   count 制é™ã‚’ã‹ã‘ãŸã„行数(ã“ã?ä»¶æ•°ã¨åŒã˜å ´åˆã?正常 )
874             */
875             public void setMinRowCount( final String count ) {
876                    minRowCount = nval( getRequestParameter( count ), minRowCount );
877             }
878    
879            /**
880             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“) sessionã«ç™»éŒ²ã•れã¦ã?‚‹ DBTableModel ã‚’å–りå?ã™ã‚­ãƒ¼ã‚’指定ã—ã¾ã™ã?
881             *
882             * @og.tag
883             * æ¤œç´¢çµæžœã®DBTableModelを別メモリーã«åˆ?‘ã‚‹å?åˆã?ã€ã“ã®ã‚­ãƒ¼ã‚’指定ã—ã¾ã™ã?
884             * ãã?å ´åˆã?メモリ上ã‹ã‚‰å‰Šé™¤ã™ã‚‹æ–¹æ³•ãŒãªã?Ÿã‚?session タイãƒ?‚¢ã‚¦ãƒˆã§ç ´æ£?大é‡ã?
885             * ãƒ??ã‚¿ã‚’å?ã‘ãŸå ´åˆã?ã€ã”注æ„ãã?•ã??
886             * åˆæœŸå€¤ã¯ã€HybsSystem.TBL_MDL_KEY ã§ã™ã?
887             *
888             * @og.rev 3.5.4.3 (2004/01/05) æ–°è¦è¿½åŠ?
889             *
890             * @param       id sessionã«ç™»éŒ²ã™ã‚‹æ™‚ã? ID
891             */
892            public void setTableId( final String id ) {
893                    tableId = nval( getRequestParameter( id ),tableId );
894            }
895    
896            /**
897             * ã€TAG】正è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
898             *
899             * @og.tag matchKeys="AAA,BBB,CCC,DDD"
900             * matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ã¯ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€?
901             * å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã?
902             * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’設定ã§ãるよã†ã«ãªã‚Šã¾ã™ã?
903             *
904             * @og.rev 4.0.0.0 (2005/11/30) æ–°è¦ä½œæ?
905             *
906             * @param   keys カラ�?(CSV形�
907             * @see     #setMatchVals( String )
908             */
909            public void setMatchKeys( final String keys ) {
910                    matchKeys = getCSVParameter( keys );
911    
912                    if( matchVals != null && matchKeys.length != matchVals.length ) {
913                            String errMsg = "matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ãŒåˆã?¾ã›ã‚“ã€?
914                                                    + HybsSystem.CR
915                                                    + " matchKeys=[" + matchKeys.length + "]:KEYS="
916                                                    + StringUtil.array2csv( matchKeys ) + HybsSystem.CR
917                                                    + " matchVals=[" + matchVals.length + "]:VLAS="
918                                                    + StringUtil.array2csv( matchVals ) + HybsSystem.CR ;
919                            throw new HybsSystemException( errMsg );
920                    }
921            }
922    
923            /**
924             * ã€TAG】正è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??ã«å¯¾ã™ã‚‹å€¤(æ­£è¦è¡¨ç¾)をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
925             *
926             * @og.tag matchVals="AAA,BBB,CCC,DDD"
927             * matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ã¯ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€?
928             * å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã?
929             * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’設定ã§ãるよã†ã«ãªã‚Šã¾ã™ã?
930             *
931             * @og.rev 4.0.0.0 (2005/11/30) æ–°è¦ä½œæ?
932             *
933             * @param   vals カラãƒ??ã«å¯¾ã™ã‚‹å€¤(æ­£è¦è¡¨ç¾)(CSVå½¢å¼?
934             * @see     #setMatchKeys( String )
935             */
936            public void setMatchVals( final String vals ) {
937                    matchVals = getCSVParameter( vals );
938    
939                    if( matchKeys != null && matchKeys.length != matchVals.length ) {
940                            String errMsg = "matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ãŒåˆã?¾ã›ã‚“ã€?
941                                                    + HybsSystem.CR
942                                                    + " matchKeys=[" + matchKeys.length + "]:KEYS="
943                                                    + StringUtil.array2csv( matchKeys ) + HybsSystem.CR
944                                                    + " matchVals=[" + matchVals.length + "]:VLAS="
945                                                    + StringUtil.array2csv( matchVals ) + HybsSystem.CR ;
946                            throw new HybsSystemException( errMsg );
947                    }
948            }
949    
950            /**
951             * ã€TAGã€?通常使ã?¾ã›ã‚“)リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã—ã¾ã™ã?
952             *
953             * @og.tag
954             * リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã™ã‚‹å±žæ?ã§ã™ã?
955             * trueãŒæŒ‡å®šã•れãŸå ´åˆã?通常ã®ãƒã‚§ãƒ?‚¯ã¨æ¯”è¼?—ã€ä»¥ä¸‹ã?差異ãŒã‚りã¾ã™ã?
956             * â‘?‚¨ãƒ©ãƒ¼çµæžœã‚’簡易フォーマットã§å‡ºåŠ›ã—ã¾ã™ã?
957             *   (ViewFormType="HTMLSimpleErrorList"ã§è¡¨ç¤ºã•れã¾ã™ã?)
958             *   ã“ã?簡易フォーマットã§å‡ºåŠ›ã—ãŸå?åˆã?ã€ãƒ©ãƒ™ãƒ«(短)ã®å®šç¾©ã§å‡ºåŠ›ã•れã?
959             *   カラãƒ?ã‚?ƒ‡ãƒ¼ã‚¿ç­‰ã?出力ã•れã¾ã›ã‚“ã€?
960             * â‘¡must,mustAny属æ?ã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã›ã‚“ã€?
961             *   å¿??åŠã?é¸æŠžå¿??ã¯ã€è¦–覚的ã«åˆ¤åˆ¥ã§ãã‚‹ãŸã‚ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ?ƒã‚§ãƒ?‚¯ã®
962             *   対象外ã¨ã—ã¾ã™ã?
963             *
964             * @og.rev 4.3.3.0 (2008/10/01) æ–°è¦ä½œæ?
965             * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime
966             *
967             * @param   flg 簡易表示を行ã†ã‹ã©ã?‹
968             */
969            public void setRealTime( final String flg ) {
970                    isRealTime = nval( getRequestParameter( flg ),isRealTime );
971            }
972    
973            /**
974             * ã€TAG】NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
975             *
976             * @og.tag
977             * ãƒ??ã‚¿ã‚’ãƒã‚§ãƒ?‚¯ã™ã‚‹ã«å½“ãŸã‚Šã?ã‚ã„ã¾ã?¤œç´¢ãªã©ã§å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã¨
978             * エラーã«ãªã‚‹ã‚±ãƒ¼ã‚¹ãŒã‚ã‚‹ãŸã‚ã?command="NEW" ã®ãƒã‚§ãƒ?‚¯æ™‚ã«ã¯ã€ç”˜ã?›®ã®
979             * ãƒã‚§ãƒ?‚¯ã‚’行ã£ã¦ã?¾ã™ã?DBColumn#valueCheck( String , false )
980             * command="ENTRY" ã®ãƒã‚§ãƒ?‚¯ã¯ã€å޳å¯?ªãƒã‚§ãƒ?‚¯ã§ã™ã?
981             * ã“ã?フラグã¯ã€æ¤œç´¢æ™‚ã§ã‚‚ã?厳å¯?ªãƒã‚§ãƒ?‚¯ã‚’行ã„ãŸã„å ´åˆã«ã€true ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
982             *
983             * @og.rev 5.2.2.0 (2010/11/01) æ–°è¦ä½œæ?
984             *
985             * @param   flg 厳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹ [true:厳å¯?false:甘ã„]
986             */
987            public void setUseStrict( final String flg ) {
988                    isStrict = nval( getRequestParameter( flg ),isStrict );
989            }
990    
991            /**
992             * ã€TAG】カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
993             *
994             * @og.tag
995             * カラãƒ?ƒ©ãƒ™ãƒ«ã¯ãƒ©ãƒ™ãƒ«ãƒ­ãƒ¼ãƒ??を利用ã›ãšã«ã‚¢ãƒ—リケーションå´ã§
996             * 追åŠ?—ãŸãƒ©ãƒ™ãƒ«ã‚’ResourceManagerã«ã‚­ãƒ£ãƒ?‚·ãƒ¥ã—ã¦ã?‚‹æ‰?‹ã‚‰å–りå?ã?
997             * ã‹ã©ã?‹ã‚’指定ã—ã¾ã™ã?
998             * カラãƒ?ƒ©ãƒ™ãƒ«ã«å­˜åœ¨ã—ãªã??åˆã?ã€??常ã®ãƒ©ãƒ™ãƒ«ã‹ã‚‰æ¤œç´¢ã—ã¾ã™ã?
999             *
1000             * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦ä½œæ?
1001             *
1002             * @param   flg カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹ true:ã™ã‚‹/false:ã—ãªã„]
1003             */
1004            public void setUseColumnLabel( final String flg ) {
1005                    isColumnLabel = nval( getRequestParameter( flg ),isColumnLabel );
1006            }
1007    
1008            /**
1009             * ã€TAG】ラベルをDBTableModel ã®ã‚«ãƒ©ãƒ?‹ã‚‰å–å¾—ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
1010             *
1011             * @og.tag
1012             * エラー時ã?ラベルã¯é€šå¸¸ã¯ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰å–å¾—ã—ã¦ã?¾ã™ãŒã€?
1013             * ColumnEditorç­‰ã§ã€ãƒ©ãƒ™ãƒ«ã‚’æ›¸ãæ›ãˆãŸå ´åˆã?ç”»é¢ã«è¡¨ç¤ºã•れã¦ã?‚‹åç§°ã¨
1014             * エラー時ã«è¡¨ç¤ºã•れるåç§°ãŒç•°ãªã‚‹ã“ã¨ãŒã‚りã¾ã—ãŸã€?
1015             * ãã“ã§ã€command=ENTRY 時ã«ã€ãƒ©ãƒ™ãƒ«ã‚’ã?DBTableModel ã®ã‚«ãƒ©ãƒ?‹ã‚‰å–å¾?
1016             * ã™ã‚‹ã‚ˆã†ã«è¨­å®šã§ãるよã†ã«ã—ã¾ã—ãŸã€?
1017             * DBTableModel ã«è©²å½“ã™ã‚‹ã‚«ãƒ©ãƒ?Œå­˜åœ¨ã—ãªã??åˆã?ラベルリソースã‹ã‚‰å–å¾—ã—ã¾ã™ã?
1018             * 通常ã¯ã€ã“ã®æ–¹æ³•ãŒä¸»ã§ã™ãŒã€?ŽåŽ»ã®äº’æ›æ€§ã‚’è?æ…®ã—ã?åˆæœŸå€¤ã¯ã€false ã«
1019             * ã—ã¦ã?¾ã™ã?
1020             *
1021             * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦ä½œæ?
1022             *
1023             * @param   flg カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹(true:ã™ã‚‹/false:ã—ãªã?
1024             */
1025    //      public void setUseTblClmLbl( final String flg ) {
1026    //              isTblClmLbl = nval( getRequestParameter( flg ),isTblClmLbl );
1027    //      }
1028    
1029            /**
1030             * ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
1031             *
1032             * @og.tag
1033             * カラãƒ?ƒã‚§ãƒ?‚¯ã§æ­£è¦åŒ–ãŒè¡Œã‚れã¦ã?ªã??ラグインã«å¯¾ã—ã¦å¼·åˆ¶çš?«æ­£è¦åŒ–を行ã„ã¾ã™ã?
1034             * ã“ã?属æ?を利用ã—ãŸãƒã‚§ãƒ?‚¯ã‚’行ã£ãŸå?åˆã?ã€queryã‚¿ã‚°ã§PL/SQLを動作ã•ã›ã‚‹å ´åˆã«ã‚?
1035             * åŒå属æ?ã§ã‚«ãƒ©ãƒ??æŒ?®šã‚’行ã†å¿?¦ãŒã‚りã¾ã™ã?
1036             * (queryã‚¿ã‚°ã§checkNamesを利用ã—ãªã??åˆã?ã“ã?属æ?ã¯nullã«ã—ã¦ãã ã•ã„)
1037             * ã“ã?属æ?ã¯ãƒã‚§ãƒ?‚¯ã‚¿ã‚¤ãƒ—ãŒNEWã®å ´åˆã?ã¿æœ‰åйã§ã™ã?
1038             * リアルタイãƒ?ƒã‚§ãƒ?‚¯ã§ã“ã?機è?を利用ã—ãŸã??åˆã?ã€columnTagç­‰ã?optionAttributes
1039             * 属æ?ã«rtOption='checkNames=VIEW_DATE'ã®ã‚ˆã†ã«è¨˜è¿°ã—ã¦ãã ã•ã„ã€?
1040             *
1041             * @og.rev 5.4.3.8 (2012/01/24) æ–°è¦è¿½åŠ?
1042             * @og.rev 5.4.4.0 (2012/02/01) コメント修正
1043             * @og.rev 5.6.9.4 (2013/10/31) 空白削除を行ã†
1044             *
1045             * @param       nm ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?
1046             */
1047            public void setCheckNames( final String nm ) {
1048    //              checkNames = nval( getRequestParameter( nm ),checkNames );
1049                    checkNames = StringUtil.deleteWhitespace( nval( getRequestParameter( nm ),checkNames ) ); // 5.6.9.4 (2013/10/31)
1050            }
1051    
1052            /**
1053             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
1054             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
1055             *
1056             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
1057             */
1058            @Override
1059            public String toString() {
1060                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
1061                                    .println( "VERSION"                     ,VERSION                )
1062                                    .println( "tableId"                     ,tableId                )
1063                                    .println( "command"                     ,command                )
1064                                    .println( "columns"                     ,columns                )
1065                                    .println( "nullCheck"           ,nullCheck              )
1066                                    .println( "mustAnyCheck"        ,mustAnyCheck   )
1067                                    .println( "maxRowCount"         ,maxRowCount    )
1068                                    .println( "minRowCount"         ,minRowCount    )
1069                                    .println( "checkType"           ,checkType              )
1070                                    .println( "matchKeys"           ,matchKeys              )
1071                                    .println( "matchVals"           ,matchVals              )
1072                                    .println( "realTime"            ,isRealTime             )
1073                                    .println( "bodyString"          ,StringUtil.htmlFilter( bodyString ) )
1074                                    .println( "Other..."            ,getAttributes().getAttribute() )
1075                                    .fixForm().toString() ;
1076            }
1077    }