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.html;
017    
018    import java.util.ArrayList;
019    import java.util.Arrays;
020    import java.util.Iterator;
021    import java.util.List;
022    import java.util.Map;
023    import java.io.Writer;
024    import java.io.IOException;
025    
026    import org.opengion.fukurou.util.StringUtil;
027    import org.opengion.fukurou.util.Attributes;
028    
029    import org.opengion.hayabusa.common.HybsSystem;
030    import org.opengion.hayabusa.common.HybsSystemException;
031    import org.opengion.hayabusa.db.DBColumn;
032    import org.opengion.hayabusa.db.DBTableModel;
033    import org.opengion.hayabusa.resource.ResourceManager;
034    
035    /**
036     * ViewForm インターフェース の実è£?bstractクラスですã?
037     * これã‚?共通ã?スーパã?クラスとして å�?¨®表示フォーãƒ?例:HTML表示ç­?に使ã�?�¾すã?
038     *
039     * こã?クラス は、setter/getterメソãƒ?ƒ‰のãƒ?ƒ•ォルト実è£?‚’提供してã�?�¾すã?
040     * å�?¨®表示フォーãƒ?�«対応したサブクラス上で, create() をオーバã?ライドして下さã�??
041     *
042     * @og.group 画面表示
043     *
044     * @version  4.0
045     * @author       Kazuhiko Hasegawa
046     * @since    JDK5.0,
047     */
048    public abstract class AbstractViewForm implements ViewForm {
049            // 5.2.1.0 (2010/10/01)
050            private final int COLUMNS_MAXSIZE = HybsSystem.sysInt( "HTML_COLUMNS_MAXSIZE" ) ;       // 表示フィールドã?大きさ
051    
052            // 3.8.0.3 (2005/07/15) 新しいヘッãƒ??固定用のDIV要ç´?‚’åˆ?�‘るã?
053            private static final String LAYER_ST0 = "" ;
054    // 4.2.0.0 (2008/03/18) ビューサイズæŒ?®šã?ため削除
055    //      private static final String LAYER_ST2 =
056    //                                                                      "<div id=\"divPos\">"
057    //                                                              +       "<div id=\"outer\" >"
058    //                                                              +       "<div id=\"layer\" onscroll=\"SetScrollHeader(this);\">"
059    //                                                              +       "<div id=\"divHide\">" ;
060            private static final String LAYER_END0 = "" ;
061            private static final String LAYER_END2 = "<a href=\"#top\" name=\"h_end\" id=\"h_end\" ></a></div></div></div></div>" ;
062    
063            // 5.1.8.0 (2010/07/01) groupClass のタイプを定義しますã?
064            private static enum CLM_GRP { KIGO , CHAR };
065    
066            private String                  name                    = "";           // メニューの名前
067            private DBTableModel    table                   = null;
068            private DBColumn[]              dbColumn                = null;
069            private boolean[]               clmWritable     = null;
070            private boolean[]               writeCtrl               = null;         // 3.8.0.9 (2005/10/17)
071            private boolean[]               clmDisplay              = null;
072            private boolean[]               clmGroup                = null;         // 3.8.5.0 (2006/03/20)
073            private String                  groupClass              = "";           // 5.1.8.0 (2010/07/01)
074            private CLM_GRP                 groupType               = null;         // 5.1.8.0 (2010/07/01)
075            private boolean[]               sortKeys                = null;         // 3.6.0.0 (2004/09/17)
076            private boolean[]               useEventCols    = null;         // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
077            private boolean                 useSorterKeys   = false;        // 3.6.0.0 (2004/09/17) å†?ƒ¨変数
078            private String                  sorterQuery             = "";           // 3.6.0.0 (2004/09/17) å†?ƒ¨変数
079            private String                  viewFormID              = null;
080            private int                     startNo                 = 0 ;
081            private int                     pageSize                = HybsSystem.sysInt( "HTML_PAGESIZE" ) ;
082            private boolean                 rowWritableFlag = false;        // ?‘カラãƒ?›®ã�?writable かï¼?
083            private ViewMarker              viewLink                = null;
084            private ViewMarker              viewMarker              = null;
085            private ViewMarker              editMarker              = null;         // 3.8.6.1 (2006/10/20)
086            private String                  selectedType    = "checkbox";
087            private String                  numberType              = "sequence" ;          // 3.5.1.0 (2003/10/03) 新規作æ?
088            private int                             numberTypeClm   = -1;                           // 3.5.1.0 (2003/10/03) 新規作æ?
089            private String[]                numberTypeData  = null;                         // 3.5.1.0 (2003/10/03) 新規作æ?
090            private String                  optTypeAttri    = null;
091            private boolean                 noMessage               = false;
092            private int                     backLinkCount   = 0 ;
093            private int                             headerSkipCount = 0;            // 0:通常ヘッãƒ??n:n回ごとに現れる
094            private boolean                 skip                    = ViewForm.DEFAULT_SKIP;        // 3.5.3.1 (2003/10/31)
095            private int                             useCheckControl = 0 ;           // 3.7.0.1 (2005/01/31)
096            private boolean                 useTableSorter  = HybsSystem.sysBool( "VIEW_USE_TABLE_SORTER" ) ;       // 3.5.4.7 (2004/02/06)
097            private boolean                 numberDisplay   = true ;        // 3.5.5.0 (2004/03/12)
098            private int                             scrollRowNo             = -1;           // 3.7.0.3 (2005/03/01)
099    
100            // 3.5.4.6 (2004/01/30) ヘッãƒ??æ–?­—å?を定義しておきますã?
101            private static final String NO_HEADER = "No" ;
102    
103            // 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを受け取りますã?
104            private Map<String,String> viewParam = null;              // 4.3.3.6 (2008/11/15) Generics警告対å¿?
105            
106            //5.5.8.3 (2012/11/17) Stringでなくã?Objectタイプをもてるよã�?�«する?ˆ積上げガント対応ï¼?
107    //      private Map<String,Object> viewObject = null;
108            private ArrayList<String[]> viewArrayList = null; // 5.5.9.0 (2012/12/03) ObjectではなくArrayList
109    
110            private int columnCount = 0 ;   // 3.5.5.7 (2004/05/10)
111            private int rowCount    = 0 ;   // 4.0.0 (2006/01/06)
112    
113            // 3.5.6.2 (2004/07/05) ゼブラ模様ã?æŒ?®šを、ViewForm としてサポã?ãƒ?
114            // 0(ゼブラなã�?ã€?1(ワーニング)ã€?2以ä¸?エラー)ã€?(ゼブラ)ã€?以ä¸?行数まとã‚?
115            private int bgColorCycle   = 1 ;
116            // 行ごとに色を変更する時ã?、デフォルトクラス属æ?
117            private static final String BG_COLOR_ROW0 = " class=\"row_0\"";
118            // 行ごとに色を変更する時ã?、å?り替え後クラス属æ?
119            private static final String BG_COLOR_ROW1 = " class=\"row_1\"";
120    
121            // 行ごとに色を変更する時ã?、å?り替え後クラス属æ?
122            private static final String BG_COLOR_ROWSEL = " class=\"row_sel\"";             // 3.7.0.3 (2005/03/01)
123    
124            // 警告時の行ごとに色を変更する時ã?、デフォルトクラス属æ?
125            private static final String BG_WARNING_COLOR_ROW0 = " class=\"row_0 row_warning\"";
126            // 警告時の行ごとに色を変更する時ã?、å?り替え後クラス属æ?
127            private static final String BG_WARNING_COLOR_ROW1 = " class=\"row_1 row_warning\"";
128    
129            // エラー時ã?行ごとに色を変更する時ã?、デフォルトクラス属æ?
130            private static final String BG_ERROR_COLOR_ROW0 = " class=\"row_0 row_error\"";
131            // エラー時ã?行ごとに色を変更する時ã?、å?り替え後クラス属æ?
132            private static final String BG_ERROR_COLOR_ROW1 = " class=\"row_1 row_error\"";
133    
134            private String color_row0 = BG_COLOR_ROW0 ;
135            private String color_row1 = BG_COLOR_ROW1 ;
136    
137            // 5.1.8.0 (2010/07/01) 行に対して、動çš?�«クラス属æ?を付与するカラãƒ?��を指定しますã?
138            private int bgColorClsClmNo  = -1;
139    
140            // 3.5.6.4 (2004/07/16)
141            private boolean useScrollBar = HybsSystem.sysBool( "VIEW_USE_SCROLLBAR" ) ;
142    
143            // 3.6.0.0 (2004/09/17)
144            private boolean firstChecked = false ;
145    
146            // 3.7.1.1 (2005/05/31) SEL_ROW機è?使用時に、BG_COLOR_ROWSEL の使用 æœ?無を指定しますã?
147            private boolean useSelRowColor = false ;
148    
149            // 4.0.0 (2007/04/16) tableタグをå?力するときに付与しますã?
150            private String  clazz                   = "viewTable";
151    
152            // 4.0.0.0 (2007/11/27) ResourceManagerを設定しますã?(クロスé›?¨ˆで使用)
153            private ResourceManager resourceManager = null;
154    
155            // 4.2.0.0 (2008/03/03) ビューのå¹?�¨高さを指定できるようにしますã?
156            private String  height          = null;
157            private String  width           = null;
158    
159            // 4.3.1.0 (2008/09/08)
160            private boolean skipNoEdit      = false;
161    
162            // 4.3.3.0 (2008/10/01) 画面遷移なしモード時にå�?¡Œに出力する行番号及ã?改廃Cのキーを定義しますã?
163            private static final String hiddenRowKey =              "rid";
164            private static final String hiddenCdkhKey =             "kh";
165    
166            private boolean noTransition= false;
167    
168            // 5.1.7.0 (2010/06/01) ViewFormのキャãƒ?‚·ュ復å…?‚’画面ID単位に行う
169            private String gamenId          = null;
170    
171            // 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?を利用するカラãƒ?‚’æŒ?®šしますã?
172            private boolean[]               clmBulkSet      = null;
173            
174            // 5.5.4.2 (2012/07/13) mustとmustAnyを保持する
175            private String[]        nullCheck       = null;
176            private String[]        mustAnyCheck= null;             // 3.8.0.9 (2005/10/17)
177    
178            /**
179             * 初期化しますã?
180             * ここでは、å?部で使用されてã�?‚‹キャãƒ?‚·ュをクリアしã?
181             * 新しいモãƒ?ƒ«(DBTableModel)とè¨?ª?lang) をå?にå†?ƒ¨ãƒ??タをå?構築しますã?
182             * なおã?ãƒ??ブルモãƒ?ƒ«に対してViewFormで変更を加える場合ã?、変更処ç�?‚’行った後に
183             * こã?メソãƒ?ƒ‰を実行するよã�?�«して下さã�??
184             *
185             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
186             * @og.rev 3.5.6.1 (2004/06/25) lang è¨?ªžコーãƒ?属æ?を削除しますã?
187             * @og.rev 3.5.6.3 (2004/07/12) 呼ばれたらã?å¿?�š初期化するよã�?�«修正(å…?�«戻ã�?
188             * @og.rev 3.6.0.0 (2004/09/17) sortKeys 追åŠ?
189             * @og.rev 3.8.0.9 (2005/10/17) writeCtrl 追åŠ?
190             * @og.rev 3.8.5.0 (2006/03/20) clmGroup 追åŠ?
191             * @og.rev 4.0.0.0 (2006/01/06) rowCount 追åŠ?
192             * @og.rev 4.0.1.0 (2007/12/13) コメントã?追åŠ?
193             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
194             * @og.rev 5.2.0.0 (2010/09/01) 2回é?続登録時に選択行にスクロールしなã�?ƒ�グを修正ã€?
195             * @og.rev 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?を利用するカラãƒ?clmBulkSet) 追åŠ?
196             * @og.rev 5.5.4.2 (2012/07/13) mustとmustany保持
197             *
198             * @param       table   DBTableModelオブジェクãƒ?
199             */
200            public void init( final DBTableModel table ) {
201                    this.table = table;
202                    if( table != null ) {
203                            rowCount        = table.getRowCount();                  // 4.0.0 (2006/01/06)
204                            columnCount = table.getColumnCount();
205                            clmWritable = new boolean[ columnCount ];
206                            writeCtrl       = new boolean[ columnCount ];   // 3.8.0.9 (2005/10/17)
207                            clmDisplay      = new boolean[ columnCount ];
208                            clmGroup        = new boolean[ columnCount ];   // 3.8.5.0 (2006/03/20)
209                            sortKeys        = new boolean[ columnCount ];   // 3.6.0.0 (2004/09/17)
210                            dbColumn        = new DBColumn[ columnCount ];
211                            useEventCols= new boolean[ columnCount ];       // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
212                            clmBulkSet  = new boolean[ columnCount ];       // 5.2.1.0 (2010/10/01)
213                            Arrays.fill( clmWritable,DEFAULT_CLM_WRITABLE );        // カラãƒ??書込み許可
214                            Arrays.fill( writeCtrl,false );                                         // 書き込み制御の許可
215                            Arrays.fill( clmDisplay ,true );                                        // カラãƒ??表示許可
216                            Arrays.fill( clmGroup ,false );                                         // 3.8.5.0 (2006/03/20) カラãƒ??グループ化
217                            Arrays.fill( sortKeys ,false );                                         // すべてリンクしなã�?�«設定するã?
218                            Arrays.fill( useEventCols, false );                                     // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
219                            Arrays.fill( clmBulkSet, false );                                       // 5.2.1.0 (2010/10/01)
220                            for( int i=0; i<columnCount; i++ ) {
221                                    dbColumn[i] = table.getDBColumn( i );
222                            }
223    
224                            // ?‘カラãƒ?›®(æœ??のカラãƒ?¼�é?列0番目)ã�?writable かï¼?
225                            rowWritableFlag = "WRITABLE".equalsIgnoreCase( getColumnName(0) );
226    
227                            // 5.2.0.0 (2010/09/01) 2回é?続登録時に選択行にスクロールしなã�?ƒ�グを修正ã€?
228                            scrollRowNo = -1;
229                            firstChecked = false;
230                            
231                            // 5.5.4.2 (2102/07/13)
232                            nullCheck         = table.getMustArray();
233                            mustAnyCheck = table.getMustAnyArray();
234                    }
235            }
236    
237            /**
238             * å†?ƒ¨の DBTableModel を返しますã?
239             *
240             * @return      DBTableModelオブジェクãƒ?
241             */
242            public DBTableModel getDBTableModel() {
243                    return table;
244            }
245    
246            /**
247             * ViewForm の識別IDをセãƒ?ƒˆしますã?
248             * これは、ViewFormFactory でプã?ルする場合ã?識別キーになりますã?
249             * プã?ルに戻すときに自åˆ??身に こã?識別IDを使用しますã?
250             *
251             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
252             * @og.rev 3.5.6.2 (2004/07/05) メソãƒ?ƒ‰名がまぎらわしã�?‚º、変更しますã?
253             *
254             * @param       viewFormID 識別ID
255             */
256            public void setId( final String viewFormID ) {
257                    this.viewFormID = viewFormID;
258            }
259    
260            /**
261             * ViewForm の識別IDを返しますã?
262             * これは、ViewFormFactory でプã?ルする場合ã?識別キーになりますã?
263             * プã?ルに戻すときに自åˆ??身に こã?識別IDを使用しますã?
264             *
265             * @og.rev 3.5.6.2 (2004/07/05) メソãƒ?ƒ‰名がまぎらわしã�?‚º、変更しますã?
266             *
267             * @return      識別ID
268             */
269            public String getId() {
270                    return viewFormID;
271            }
272    
273            /**
274             * DBTableModel から HTMLæ–?­—å?を作æ?して返しますã?
275             *
276             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
277             *
278             * @return      DBTableModelから作æ?されã�?HTMLæ–?­—å?
279             */
280            public String create() {
281                    return create( 0, rowCount );
282            }
283    
284            /**
285             * DBTableModel から Viewæ–?­—å?を作æ?して、Writer にセãƒ?ƒˆしますã?
286             * 処ç�??容は、create( int , int ) と同じですが、中間ã?æ–?­—å?(StringBuilder)
287             * を作æ?せずに、直接、Writer に書きå?しますã?
288             * よって、データ作æ?途中でエラーが発生してもã?すでにã�?��つかã?ãƒ??タは
289             * クライアントに返されてã�?�¾すã?
290             *
291             * @og.rev 5.0.0.1 (2009/08/15) 直接出力用の Writer 引数追åŠ?
292             *
293             * @param  startNo        表示開始位置
294             * @param  pageSize   表示件数
295             * @param  wrt            直接登録用の Writer
296             */
297            public void create( final int startNo, final int pageSize, final Writer wrt ) throws IOException {
298                    String errMsg = "こã?メソãƒ?ƒ‰は、直接登録用の Writer のビューでのみ使用できますã?";
299                    throw new UnsupportedOperationException( errMsg );
300            }
301    
302            /**
303             * å†?®¹をクリア(初期åŒ?しますã?
304             *
305             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
306             * @og.rev 3.5.1.0 (2003/10/03) displayNumber å»?­¢。numberType 新規追åŠ??
307             * @og.rev 3.5.2.0 (2003/10/20) headerSkipCount属æ?を追åŠ?
308             * @og.rev 3.5.3.1 (2003/10/31) skip属æ?を追åŠ?
309             * @og.rev 3.5.4.3 (2004/01/05) useCheckControl属æ?を追åŠ?
310             * @og.rev 3.5.4.3 (2004/01/05) viewFormID属æ?を削除(初期化しなã�?
311             * @og.rev 3.5.4.7 (2004/02/06) useTableSorter属æ?を追åŠ?
312             * @og.rev 3.5.4.7 (2004/02/06) columnMaxSize は使用されてã�?�ªã�??で削除しますã?
313             * @og.rev 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを追åŠ?�—ますã?
314             * @og.rev 3.5.5.0 (2004/03/12) numberType 属æ?の "delete" 値追åŠ?�«伴なã�??numberDisplay 変数の追åŠ??
315             * @og.rev 3.5.6.2 (2004/07/05) bgColorCycle 変数の追åŠ??
316             * @og.rev 3.5.6.4 (2004/07/16) useScrollBar 変数の追åŠ??
317             * @og.rev 3.6.0.0 (2004/09/17) sortKeys , firstChecked , useSorterKeys , sorterQuery 変数の追åŠ??
318             * @og.rev 3.7.0.1 (2005/01/31) 全件チェãƒ?‚¯コントロール変更( boolean â‡?int )
319             * @og.rev 3.7.1.1 (2005/05/31) useSelRowColor 変数の追åŠ??
320             * @og.rev 3.8.0.3 (2005/07/15) scrollBarType 変数の追åŠ?
321             * @og.rev 3.8.0.9 (2005/10/17) writeCtrl 変数の追åŠ?
322             * @og.rev 3.8.5.0 (2006/03/20) clmGroup 変数の追åŠ?
323             * @og.rev 3.8.6.1 (2006/10/20) editMarker 変数の追åŠ?
324             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
325             * @og.rev 5.1.8.0 (2010/07/01) groupClass , groupType 変数の追åŠ?
326             * @og.rev 5.1.8.0 (2010/07/01) bgColorClsClmNo 属æ?を追åŠ?�—ますã?
327             * @og.rev 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?を利用するカラãƒ?clmBulkSet) 追åŠ?
328             * @og.rev 5.5.4.2 (2012/07/13) mustとmustany追åŠ?
329             * @og.rev 5.5.9.0 (2012/12/03) viewArrayList追åŠ?viewObjectは削除)
330             */
331            public void clear() {
332                    name                    = "";                           // メニューの名前
333                    table                   = null;
334                    dbColumn                = null;
335                    clmWritable     = null;
336                    writeCtrl               = null;                 // 3.8.0.9 (2005/10/17)
337                    clmDisplay              = null;
338                    clmGroup                = null;                 // 3.8.5.0 (2006/03/20)
339                    groupClass              = "";                   // 5.1.8.0 (2010/07/01)
340                    groupType               = null;                 // 5.1.8.0 (2010/07/01)
341                    sortKeys                = null;                 // 3.6.0.0 (2004/09/17)
342                    useSorterKeys   = false;                // 3.6.0.0 (2004/09/17)
343                    sorterQuery             = "";                   // 3.6.0.0 (2004/09/17)
344                    startNo                 = 0 ;
345                    pageSize                = HybsSystem.sysInt( "HTML_PAGESIZE" ) ;
346                    rowWritableFlag = false;        // ?‘カラãƒ?›®ã�?writable かï¼?
347                    viewLink                = null;
348                    viewMarker              = null;
349                    editMarker              = null;         // 3.8.6.1 (2006/10/20)
350                    backLinkCount   = 0;
351                    selectedType    = "checkbox";
352                    numberType              = "sequence";
353                    numberTypeClm   = -1;
354                    numberTypeData  = null;
355                    headerSkipCount = 0;    // 0:通常ヘッãƒ??n:n回ごとに現れる
356                    skip                    = ViewForm.DEFAULT_SKIP;        // 3.5.3.1 (2003/10/31)
357                    useCheckControl = 0 ;           // 3.7.0.1 (2005/01/31)
358                    viewParam               = null;         // 3.5.4.8 (2004/02/23)
359    //              viewObject              = null;         // 5.5.8.1 (2012/11/17)
360                    viewArrayList   = null;         // 5.5.8.3 (2012/12/03) 
361                    numberDisplay   = true ;        // 3.5.5.0 (2004/03/12)
362                    columnCount             = 0;            // 3.5.5.7 (2004/05/10)
363                    bgColorCycle    = 1;            // 3.5.6.2 (2004/07/05)
364                    bgColorClsClmNo = -1;           // 5.1.8.0 (2010/07/01)
365                    color_row0              = BG_COLOR_ROW0 ;               // 3.5.6.2 (2004/07/05)
366                    color_row1              = BG_COLOR_ROW1 ;               // 3.5.6.2 (2004/07/05)
367                    useScrollBar    = HybsSystem.sysBool( "VIEW_USE_SCROLLBAR" ) ;  // 3.5.6.4 (2004/07/16)
368                    firstChecked    = false;
369                    useSelRowColor  = false;        // 3.7.1.1 (2005/05/31)
370                    height                  = null;         // 4.2.0.0 (2008/03/18)
371                    width                   = null;         // 4.2.0.0 (2008/03/18)
372                    skipNoEdit              = false;        // 4.3.2.0 (2008/09/10)
373                    useEventCols    = null;         // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
374                    clmBulkSet              = null;         // 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?を利用するカラãƒ?clmBulkSet) 追åŠ?
375                    nullCheck               = null;         // 5.5.4.2 (2012/07/13)
376                    mustAnyCheck    = null;         // 5.5.4.2 (2012/07/13)
377            }
378    
379            /**
380             * ãƒ??ブルのヘッãƒ??の前に、そのãƒ??タの表示ç¯?›²を示す文字å?を作æ?しますã?
381             * [開始No - 終äº?o]/[件数] ですã?
382             *
383             * @og.rev 2.0.0.2 (2002/09/24) [1 - 4]/[4] 等ã?メãƒ?‚»ージ出力後ã? &lt;br&gt; 出力を中止ã€?
384             * @og.rev 4.3.6.0 (2008/04/01) [1 - 4]/[4]のメãƒ?‚»ージをJavaScriptで入れ替えるように変更
385             * @og.rev 4.3.8.0 (2009/08/01) 同メãƒ?‚»ージè¤?•°対応及びheadでコントロール可能にする
386             *
387             * @param  stNo    表示開始位置
388             * @param  pgSize  表示件数
389             *
390             * @return      ãƒ??ブルのヘッãƒ??タグæ–?­—å?
391             */
392            protected String getCountForm( final int stNo, final int pgSize ) {
393                    if( noMessage ) { return ""; }
394    
395                    StringBuilder out = new StringBuilder();
396    
397                    int lstNo = ( stNo+pgSize > rowCount ) ? rowCount : stNo+pgSize ;
398                    // 4.3.6.0 (2009/04/01) 件数表示の方法変更
399                    // out.append( "[" ).append( stNo+1 ).append( " - " ).append( lstNo ).append( "]" );
400                    // out.append( "/[" ).append( rowCount ).append( "]" );
401                    // out.append( "<div id=\"originalRowCountMessage\">" ); // 4.3.8.0 (2009/08/01) idからclassに変更
402                    out.append( "<div class=\"orgRowCntMsg\">" );
403                    out.append( "[" ).append( stNo+1 ).append( " - " ).append( lstNo ).append( "]" );
404                    out.append( "/[" ).append( rowCount ).append( "]" );
405                    out.append( "</div>" );
406                    // 4.3.8.0 (2009/08/01) scriptはhead読み込み方式に変更
407                    // out.append( "<script language=\"javascript\">" );
408                    // out.append( "$(function(){$('#rowCountMessage').replaceWith($('#originalRowCountMessage'));})");
409                    // out.append( "</script>" );
410    
411                    return out.toString() ;
412            }
413    
414            /**
415             * カラãƒ??ラベル名を返しますã?
416             * カラãƒ??é ?›®名に対して,見える形のæ–?­—å?を返しますã?
417             * ä¸?ˆ¬には,リソースバンドルとçµ?�ˆせて,å�?›½ロケール毎にラベルã‚?
418             * åˆ?›¿えますã?
419             *
420             * @param       column カラãƒ?•ª号
421             *
422             * @return      カラãƒ??ラベルå�?
423             */
424            protected String getColumnLabel( final int column ) {
425                    return dbColumn[column].getLabel();
426            }
427    
428            /**
429             * カラãƒ?��を返しますã?
430             * ãƒ??タベã?スで検索したときã?カラãƒ??é ?›®名を返しますã?
431             *
432             * @param       column カラãƒ?•ª号
433             *
434             * @return      カラãƒ?��
435             */
436            protected String getColumnName( final int column ) {
437                    return dbColumn[column].getName();
438            }
439    
440            /**
441             * row行,columåˆ?のãƒ??タの値を返しますã?
442             *
443             * @param       row     行番号
444             * @param       column カラãƒ?•ª号
445             *
446             * @return      row行,columåˆ?のãƒ??タの値
447             */
448            protected String getValue( final int row,final int column ) {
449                    return table.getValue( row,column ) ;
450            }
451    
452            /**
453             * row行,columåˆ?のãƒ??タの値を返しますã?
454             * これは、データの値そã?もã?ではなくã?そã?値のラベルæ–?­—を返しますã?
455             *
456             * @og.rev 3.8.0.9 (2005/10/17) 互換性確保ã?メソãƒ?ƒ‰
457             *
458             * @param       row     行番号
459             * @param       column カラãƒ?•ª号
460             *
461             * @return      row行,columåˆ?のãƒ??タの値
462             */
463            protected String getRendererValue( final int row,final int column) {
464                    return getRendererValue( row,column,getValue( row,column ) );
465            }
466    
467            /**
468             * row行,columåˆ?のãƒ??タの値を返しますã?
469             * これは、データの値そã?もã?ではなくã?そã?値のラベルæ–?­—を返しますã?
470             *
471             * @og.rev 3.8.0.9 (2005/10/17) writableControl 追åŠ?�«よる引数変更
472             * @og.rev 3.8.5.0 (2006/03/20) clmGroup 追åŠ?�«よるグループ化処ç�?
473             * @og.rev 4.0.0.0 (2005/11/30) 行番号に対応したå?を返すように変更しますã?
474             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
475             * @og.rev 5.1.8.0 (2010/07/01) カラãƒ?‚°ループã? groupClass 対å¿?
476             *
477             * @param       row             行番号
478             * @param       column  カラãƒ?•ª号
479             * @param       inVal   ãƒ??タの値
480             *
481             * @return      row行,columåˆ?のãƒ??タの値
482             */
483            protected String getRendererValue( final int row,final int column , final String inVal ) {
484                    // 3.8.5.0 (2006/03/20) clmGroup 追åŠ?�«よるグループ化処ç�?
485    //              if( clmGroup[column] && row > 0 && row != startNo &&
486    //                      inVal != null && inVal.equals( getValue( row-1,column ) ) ) {
487    //                              return "";
488    //              }
489    
490                    String val = dbColumn[column].getRendererValue( row,inVal );
491    
492                    // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
493                    if( useEventCols[column] && isWritable( row ) ) {
494                            val = dbColumn[column].getEventColumnTag( val, getValue( row,column ), row, false );
495                    }
496                    if( viewLink != null ) {
497                            val = viewLink.getMarkerString( row,column,val );
498                    }
499                    if( viewMarker != null ) {
500                            val = viewMarker.getMarkerString( row,column,val );
501                    }
502    
503                    // 5.1.8.0 (2010/07/01) groupClass 対応:空æ–?­—ã?場合をè€??しã?æœ?¾Œに処ç�?‚’行うã€?
504                    // 出力するå?がã?空æ–?­—å?ならã?前行と同じでもã?空æ–?­—にしておきますã?
505                    if( groupType != null &&
506                                    clmGroup[column] && row > 0 && row != startNo &&
507                                    inVal != null && inVal.equals( getValue( row-1,column ) ) &&
508                                    val != null && val.length() > 0 ) {
509                            if( groupType == CLM_GRP.KIGO ) {
510                                    val = groupClass;
511                            }
512                            else {  // groupType == CLM_GRP.CHAR
513                                    val = "<span class=\"" + groupClass + "\">" + val + "</span>";
514                            }
515                    }
516    
517                    return val;
518            }
519    
520            /**
521             * row行,columåˆ?のãƒ??タの値をHTMLæ–?­—å?に変換して返しますã?
522             * リソースバンドルが登録されてã�?‚‹場合ã?,リソースに応じã�?
523             * HTMLæ–?­—å?を作æ?しますã?
524             *
525             * @og.rev 3.8.0.9 (2005/10/17) writableControl 追åŠ?�«よる引数変更
526             * @og.rev 3.8.6.1 (2006/10/20) editMarker 追åŠ?
527             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
528             *
529             * @param       row             行番号
530             * @param       column  カラãƒ?•ª号
531             * @param       inVal   ãƒ??タの値
532             *
533             * @return      row行,columåˆ?のãƒ??タの値
534             */
535            protected String getEditorValue( final int row, final int column, final String inVal ) {
536                    String val = dbColumn[column].getEditorValue( row,inVal );
537                    // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
538                    if( useEventCols[column] ) {
539                            val = dbColumn[column].getEventColumnTag( val, getValue( row,column ), row, true );
540                    }
541                    if( editMarker != null ) {
542                            val = editMarker.getMarkerString( row,column,val );
543                    }
544    
545                    return val;
546            }
547    
548            /**
549             * row行,columåˆ?のãƒ??タの値をHTMLæ–?­—å?に変換して返しますã?
550             * リソースバンドルが登録されてã�?‚‹場合ã?,リソースに応じã�?
551             * HTMLæ–?­—å?を作æ?しますã?
552             * リソースバンドルが登録されてã�?�ªã�??合ã?,getValue( int row,int column )ã‚?
553             * 返しますã?
554             * 新規機è?として、writableControl によるエãƒ?‚£ター・レンãƒ?ƒ©ーæŒ?®šが出来ますã?
555             * そã?場合ã?表示/編é›?�¨もに、å?頭のアンãƒ??バã?は削除されますã?
556             *
557             * @og.rev 3.8.0.9 (2005/10/17) writableControl によるエãƒ?‚£ター・レンãƒ?ƒ©ーæŒ?®?
558             *
559             * @param       row     行番号
560             * @param       column カラãƒ?•ª号
561             *
562             * @return      row行,columåˆ?のãƒ??タの値
563             */
564            protected String getValueLabel( final int row, final int column ) {
565                    String val = getValue( row,column ) ;
566                    boolean isEdit = isColumnWritable( column ) && isWritable( row ) ;
567                    if( writeCtrl[ column ] && val != null && val.length() > 0 && val.charAt(0) == '_' ) {
568                            isEdit = false;
569                            val = val.substring(1);         // 先é?の '_' を削除
570                    }
571    
572                    if( isEdit ) {
573                            return getEditorValue( row,column,val );                // 引数 val 追åŠ?
574                    }
575                    else {
576                            return getRendererValue( row,column,val );              // 引数 val 追åŠ?
577                    }
578            }
579    
580            /**
581             * カラãƒ??クラスを文字å?にした名称を返しますã?
582             * これは?ŒHTML上ã?å�?¨®タグに?Œデータベã?ス定義に応じたクラスã‚?
583             * セãƒ?ƒˆã�?CSS(Cascading Style Sheet)の class="xxxxx" とする事により
584             * å�?¨®スタイルを表現するのに使用しますã?
585             *
586             * ここでは, カラãƒ?ƒªソースの DBTYPE 属æ?でæŒ?®šã?æ–?­—å?(X,S9,KXなど)を返しますã?
587             *
588             * @og.rev 4.0.0.0 (2005/01/31) 新規作æ?(getColumnClassName â‡?getColumnDbType)
589             * @og.rev 5.2.2.0 (2010/11/01) className ã�?VARCHAR2,NUMBER以外ã?場合ã?、合わせて出力しますã?
590             *
591             * @param   column カラãƒ?•ª号
592             *
593             * @return  カラãƒ?? DBTYPE 属æ?
594             */
595            public String getColumnDbType( final int column ) {
596                    // 5.2.2.0 (2010/11/01) className ã�?BIT の場合ã?み、合わせて出åŠ?
597                    String clsName = dbColumn[column].getClassName();
598                    if( clsName != null && ! "VARCHAR2".equals( clsName ) && !"NUMBER".equals( clsName ) ) {
599                            return clsName + " " + dbColumn[column].getDbType();
600                    }
601    
602                    return dbColumn[column].getDbType();
603            }
604    
605            /**
606             * カラãƒ?�Œ書き込み可能かどã�?�‹を返しますã?
607             *
608             * @param       column カラãƒ?•ª号
609             *
610             * @return      書込み可能(true)?�不可能(false)
611             */
612            protected boolean isColumnWritable( final int column ) {
613                    return clmWritable[ column ];
614            }
615    
616            /**
617             * カラãƒ?�Œ書き込み可能かどã�?�‹をセãƒ?ƒˆしますã?
618             *
619             * @param       column カラãƒ?•ª号
620             * @param       rw 書込み可能(true)?�不可能(false)
621             */
622            public void setColumnWritable( final int column,final boolean rw ) {
623                    clmWritable[ column ] = rw;
624            }
625    
626            /**
627             * 書き込み可能カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
628             * 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
629             * setColumnWritable( int column,boolean rw ) の簡易版ですã?
630             * null を与えたå?合ã?,なにもしませんã€?
631             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、columnName="*" を設定しますã?
632             *
633             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
634             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
635             *
636             * @param       columnName      カラãƒ?��
637             */
638            public void setColumnWritable( final String columnName ) {
639                    if( columnName != null ) {
640                            setBooleanArray( columnName,true,clmWritable );
641    
642    //                      Arrays.fill( clmWritable,false );               // カラãƒ??書込み不許可
643    //                      String[] clmNames = StringUtil.csv2Array( columnName );
644    //                      for( int i=0; i<clmNames.length; i++ ) {
645    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
646    //                                      int no = table.getColumnNo( clmNames[i] );
647    //                                      if( no >= 0 ) { clmWritable[ no ] = true; }
648    //                              }
649    //                      }
650                            // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
651                            setUseEventCols();
652                    }
653            }
654    
655            /**
656             * 書き込み不可カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
657             * 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
658             * null を与えたå?合ã?,なにもしませんã€?
659             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、columnName="*" を設定しますã?
660             *
661             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
662             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
663             *
664             * @param       columnName      カラãƒ?��
665             */
666            public void setNoWritable( final String columnName ) {
667                    if( columnName != null ) {
668                            setBooleanArray( columnName,false,clmWritable );
669    
670    //                      Arrays.fill( clmWritable,true );                // カラãƒ??書込み許可
671    //                      String[] clmNames = StringUtil.csv2Array( columnName );
672    //                      for( int i=0; i<clmNames.length; i++ ) {
673    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
674    //                                      int no = table.getColumnNo( clmNames[i] );
675    //                                      if( no >= 0 ) { clmWritable[ no ] = false; }
676    //                              }
677    //                      }
678                            // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
679                            setUseEventCols();
680                    }
681            }
682    
683            /**
684             * å�??目がイベントカラãƒ?‚’するかどã�?�‹をセãƒ?ƒˆしますã?
685             *
686             * @og.rev 5.1.7.0 (2010/06/01) 新規作æ?(動的プルãƒ?‚¦ン実è£?¦‹直ã�?
687             */
688            private void setUseEventCols() {
689                    for( int column=0; column<dbColumn.length; column++ ) {
690                            String evCols = dbColumn[column].getEventColumn();
691                            if( evCols != null && evCols.length() > 0 ) {
692                                    String[] evColsArr = StringUtil.csv2Array( evCols );
693                                    for( int i=0; i<evColsArr.length; i++ ) {
694                                            String evCol = evColsArr[i];
695                                            if( evCol.charAt(0) == '_' ) { evCol = evCol.substring( 1 ); }
696                                            if( isColumnWritable( table.getColumnNo( evCol ) ) ) {
697                                                    useEventCols[column] = true;
698                                                    break;
699                                            }
700                                    }
701                            }
702                    }
703            }
704    
705            /**
706             * 行指定ã?書込み許可を返しますã?
707             *
708             * @og.rev 3.5.4.2 (2003/12/15) writable カラãƒ?�Œ "2" のときも、書き込み許可とする
709             * @og.rev 3.5.5.7 (2004/05/10) 判定ロジãƒ?‚¯を若干見直しますã?
710             *
711             * @param       row     行番号
712             *
713             * @return      書込み可能(true)?�不可能(false)
714             */
715            protected boolean isWritable( final int row ) {
716                    boolean rtn = table.isRowWritable( row );
717                    if( rtn && rowWritableFlag ) {
718                            String val = table.getValue( row,0 );
719                            rtn = ( "TRUE".equalsIgnoreCase( val ) ||
720                                            "1".equalsIgnoreCase( val )    ||
721                                            "2".equalsIgnoreCase( val ) );
722    
723                            if( ! rtn &&
724                                    ! "FALSE".equalsIgnoreCase( val ) &&
725                                    ! "0".equalsIgnoreCase( val ) &&
726                                    ! "".equalsIgnoreCase( val ) ) {
727                                            String errMsg = "writable は、TRUE,FALSE,0,1,2,null 以外指定できませんã€? +
728                                                                            "  row=[" + (row+1) + "]  val=[" + val + "]";
729                                            throw new HybsSystemException( errMsg );
730                            }
731                    }
732                    return rtn;
733            }
734    
735            /**
736             * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
737             * 初期値ã‚?選択済みにするかã?非選択済みにするかをæŒ?®šしますã?
738             *
739             * @og.rev 3.5.4.2 (2003/12/15) writable カラãƒ?�Œ "2" のときã?チェãƒ?‚¯を付けるã?
740             *
741             * @param       row 行ã?æŒ?®?
742             *
743             * @return      チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
744             */
745            protected boolean isChecked( final int row ) {
746                    boolean rtn = table.isRowChecked( row );
747                    if( rowWritableFlag ) {
748                            String val = table.getValue( row,0 );
749                            rtn = rtn || ( "2".equalsIgnoreCase( val ) );
750                    }
751                    return rtn;
752            }
753    
754            /**
755             * チェãƒ?‚¯済みの行ã?先é?に、フォーカスを当てるå?ç�?�§、チェãƒ?‚¯のä¸?�¤前ã?
756             * 行番号æ¬?�«ãƒ?ƒŸーのリンクを作æ?する為の判定を行いますã?
757             * つまりã?æŒ?®šã?行番号の次の値がã?チェãƒ?‚¯されてã�?‚‹かどã�?�‹を判断しますã?
758             * さらに、これã?、ä¸?•ª上位にチェãƒ?‚¯されてã�?‚‹番号の時ã?み
759             * 返しますã?(表示ãƒ??ブル中、最高ä¸?›žのみ、true が返るã€?
760             *
761             * @og.rev 3.6.0.0 (2004/09/17) 新規作æ?
762             * @og.rev 3.7.0.3 (2005/03/01) setScrollRowNo の対å¿?
763             * @og.rev 3.8.8.3 (2007/02/09) æœ??の選択è¡?よりæŒ?®š行番号へのフォーカスを優å…?
764             * @og.rev 4.2.3.1 (2008/06/11) 1件目がチェãƒ?‚¯されてã�?‚‹場合ã?、対象外とするã€?
765             * @og.rev 4.2.4.0 (2008/06/25) 1件目対象外ã?判定で、指定行番号へのフォーカスを優先するã?
766             * @og.rev 5.1.1.1 (2009/12/02) 選択行アンカーは、è?身の行に出ã�?default.js#focus2()も合わせて変更)
767             *
768             * @param       row     行ã?æŒ?®?
769             *
770             * @return      チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
771             */
772            protected boolean isFirstChecked( final int row ) {
773    
774                    // æœ??の?‘回のみ、true を返す。よって、å?がtrue ならã?false を返すã€?
775                    if( firstChecked ) { return false; }
776    
777                    // æŒ?®šã?次の行を見るため、ç¯?›²オーバã?してã�?�ªã�?�‹確èª?
778    //              if( row+1 >= rowCount ) { return false; }
779                    if( row >= rowCount ) { return false; } // 5.1.1.1 (2009/12/02)
780    
781                    final boolean rtn;
782                    // 3.8.8.3 (2007/02/09) æœ??の選択è¡?よりæŒ?®š行番号へのフォーカスを優å…?
783                    if( scrollRowNo >= 0 ) {
784    //                      rtn = ( row+1 == scrollRowNo );
785                            rtn = ( row == scrollRowNo ); // 5.1.1.1 (2009/12/02)
786                    }
787                    else {
788                            // 1件目がチェãƒ?‚¯されてã�?‚‹場合ã?、対象外とするã€?.2.3.1 (2008/06/11)
789                            if( row == 0 && table.isRowChecked( row ) ) {
790                                    firstChecked = true;
791                                    return false;
792                            }
793    
794    //                      rtn = table.isRowChecked( row+1 );
795                            rtn = table.isRowChecked( row ); // 5.1.1.1 (2009/12/02)
796                    }
797    
798                    // æœ??の?‘回のみ、true を返す。よって、å?がtrue ならã?false を返すã€?
799                    if( rtn ) { firstChecked = true; }
800                    return rtn;
801            }
802    
803            /**
804             * そã?行が、å?ç�?¯¾象かどã�?�‹をチェãƒ?‚¯しますã?
805             * 処ç�?¯¾象かどã�?�‹は、書き込み可能なè¡?rowWritable == true)
806             * で且つ チェãƒ?‚¯されたè¡?rowChecked == true) としますã?
807             * 例えば,NEXT/PREVでスキãƒ??等ã?処ç�?‚’行う場合ã??¤ 処ç�?¯¾象以外を
808             * スキãƒ??することで実現できますã?
809             *
810             * @param       row     行番号
811             *
812             * @return       処ç�?¯¾象(true)?�å?ç�?¯¾象でなã�?false)
813             */
814            public boolean isMarked( final int row ) {
815                    return ( isWritable( row ) && isChecked( row ) );
816            }
817    
818            /**
819             * カラãƒ?�Œ表示可能かどã�?�‹を返しますã?
820             * もし?Œ表示不可の場合ã?,こã?カラãƒ??全ãƒ??タが,表示対象から外されますã?
821             *
822             * @param       column カラãƒ?•ª号
823             *
824             * @return      表示可能(true)?�不可能(false)
825             */
826            protected boolean isColumnDisplay( final int column ) {
827                    if( rowWritableFlag && column == 0 ) { return false; }
828                    return clmDisplay[ column ];
829            }
830    
831            /**
832             * 表示可能なカラãƒ??数を返しますã?
833             *
834             * @return      表示可能なカラãƒ?•°
835             */
836            protected int getColumnDisplayCount() {
837                    int rtn = 0;
838                    for( int i=0; i<columnCount; i++ ) {
839                            if( isColumnDisplay(i) ) { rtn++ ; }
840                    }
841    
842                    return rtn;
843            }
844    
845            /**
846             * カラãƒ?�Œ表示可能かどã�?�‹をセãƒ?ƒˆしますã?
847             * DBColumnのROLE属æ?による表示可否は、ViewFormTag で設定されますã?
848             *
849             * @param       column カラãƒ?•ª号
850             * @param       rw 表示可能(true)?�不可能(false)
851             */
852            public void setColumnDisplay( final int column,final boolean rw ) {
853                    clmDisplay[ column ] = rw;
854            }
855    
856            /**
857             * 表示可能カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
858             * 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
859             * setColumnDisplay( int column,boolean rw ) の簡易版ですã?
860             * null を与えたå?合ã?,なにもしませんã€?
861             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、columnName="*" を設定しますã?
862             *
863             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
864             *
865             * @param       columnName      カラãƒ?��
866             */
867            public void setColumnDisplay( final String columnName ) {
868                    setBooleanArray( columnName,true,clmDisplay );
869    
870    //              if( columnName != null ) {
871    //                      String[] clmNames = StringUtil.csv2Array( columnName );
872    //                      Arrays.fill( clmDisplay ,false );       // すべて表示しなã�?�«設定するã?
873    //                      for( int i=0; i<clmNames.length; i++ ) {
874    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
875    //                                      int no = table.getColumnNo( clmNames[i] );
876    //                                      if( no >= 0 ) { clmDisplay[ no ] = true; }
877    //                              }
878    //                      }
879    //              }
880            }
881    
882            /**
883             * 表示不可カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
884             * 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
885             * null を与えたå?合ã?,なにもしませんã€?
886             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、columnName="*" を設定しますã?
887             *
888             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
889             *
890             * @param       columnName      カラãƒ?��
891             */
892            public void setNoDisplay( final String columnName ) {
893                    setBooleanArray( columnName,false,clmDisplay );
894    
895    //              if( columnName != null ) {
896    //                      String[] clmNames = StringUtil.csv2Array( columnName );
897    //                      Arrays.fill( clmDisplay ,true );        // すべて表示するに設定するã?
898    //                      for( int i=0; i<clmNames.length; i++ ) {
899    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
900    //                                      int no = table.getColumnNo( clmNames[i] );
901    //                                      if( no >= 0 ) { clmDisplay[ no ] = false; }
902    //                              }
903    //                      }
904    //              }
905            }
906    
907            /**
908             * 同ä¸?¡¨示ãƒ??タをまとめる(表示しなã�?カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
909             *
910             * これは、カラãƒ??グループ化æŒ?®šを行いますã?
911             * 同じカラãƒ?•ª号でä¸?�¤上ã?行番号と同じå†?®¹の場合に、表示しなã�?�¨ã�?�†もã?ですã?
912             * 対応ã?、表示(Renderer)時ã?みとしますã?
913             * カラãƒ?�˜位なので、新しいゼブラによる色åˆ?�‘は行いませんã€?任意ã?カラãƒ?�«適用できる為)
914             * またã?ファイル出力などのãƒ??タ自身は変更されてã�?�¾せんので、そのままãƒ??タが落ちますã?
915             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、group="*" を設定しますã?
916             *
917             * @og.rev 3.8.5.0 (2006/03/20) 新規追åŠ?
918             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
919             *
920             * @param       group まとめるカラãƒ?��(CSV形å¼?
921             */
922            public void setColumnGroup( final String group ) {
923                    if( group != null ) {
924                            if( groupType == null ) { groupType = CLM_GRP.KIGO ; }
925                            setBooleanArray( group,true,clmGroup );
926    
927    //                      String[] clmNames = StringUtil.csv2Array( group );
928    //                      Arrays.fill( clmGroup ,false ); // すべてグループ化しなã�?�«設定するã?
929    //                      for( int i=0; i<clmNames.length; i++ ) {
930    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
931    //                                      int no = table.getColumnNo( clmNames[i] );
932    //                                      if( no >= 0 ) { clmGroup[ no ] = true; }
933    //                              }
934    //                      }
935                    }
936            }
937    
938            /**
939             * 同ä¸?¡¨示ãƒ??タをまとめなã�?‚«ラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
940             *
941             * これは、カラãƒ??グループ化æŒ?®šで、同ä¸?�§もまとめなã�?‚«ラãƒ?‚’æŒ?®šするほã�?�Œ簡単な場合に
942             * 使用しますã?例えば、キーæƒ??以外ã?、グループ化æŒ?®šしたい場合などに便利ですã?
943             * 動作ã?、columnGroup の動きと同じですã?(まとめなã�?‚«ラãƒ?‚’æŒ?®šするだけですã?)
944             *
945             * これは、同ä¸?¡¨示ãƒ??タをまとめるカラãƒ?��のæŒ?®?columnGroup)と同時にセãƒ?ƒˆする
946             * ことは出来ませんã€?
947             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、group="*" を設定しますã?
948             *
949             * @og.rev 5.1.8.0 (2010/07/01) 新規追åŠ?
950             *
951             * @param       group まとめるカラãƒ?��(CSV形å¼?
952             */
953            public void setNoGroup( final String group ) {
954                    if( group != null ) {
955                            if( groupType == null ) { groupType = CLM_GRP.KIGO ; }
956                            setBooleanArray( group,false,clmGroup );
957                    }
958            }
959    
960            /**
961             * 同ä¸?¡¨示ãƒ??タをまとめる場合ã?、表示方法をæŒ?®šしますã?
962             *
963             * これは、カラãƒ??グループ化æŒ?®?columnGroup)を行う場合ã?、まとめ表示の方法をæŒ?®šしますã?
964             * なにも指定しなã�??合ã?、まとめカラãƒ??、表示しなã�?ゼロæ–?­—å?)になりますã?
965             * そã?場合ã?先ã?行と同じ場合も、変更されたカラãƒ?�Œ、NULL(ゼロæ–?­—å?)であったå?合もã€?
966             * 同じ用に表示されるためã?区別が付きませんã€?
967             * そこで、前の行と同じãƒ??タの場合に、特殊な処ç�?‚’行うことで、区別できるようにしますã?
968             * æŒ?®š方法が特殊なので、注意がå¿?¦�ですã?
969             *   記号の場合ï¼?
970             *       記号(-- , â†?, â†?, * など)が指定された場合ã?、そのままのæ–?­—に置き換えられますã?
971             *   アルファベットã?場合ï¼?
972             *       アルファベッãƒ?a-z,A-Z)の場合ã?ã€?lt;span class="アルファベッãƒ?&gt;å…??æ–?­?lt;/span&gt;
973             * 例えば、バãƒ?‚¯カラーに色を付けるã?æ–?­—をè–?�„灰色にする、などできますã?
974             * ただしã?ãƒ??タ量が圧倒的に増えるためã?大量ã?ãƒ??タ等で使用するのは避けたほã�?�Œ良ã�?�¨思いますã?
975             *
976             * @og.rev 3.8.5.0 (2006/03/20) 新規追åŠ?
977             *
978             * @param       grpCls まとめ表示の方æ³?
979             */
980            public void setGroupClass( final String grpCls ) {
981                    if( grpCls != null ) {
982                            groupClass = grpCls ;
983                            if( groupClass.length() == 0 ) {        // ゼロæ–?­—å?の場å�?
984                                    groupType = CLM_GRP.KIGO ;
985                            }
986                            else {
987                                    char ch = groupClass.charAt(0);
988                                    if( ( ch >= 'a' && ch <= 'z' ) || ( ch >= 'a' && ch <= 'z' ) ) {
989                                            groupType = CLM_GRP.CHAR ;
990                                    }
991                                    else {
992                                            groupType = CLM_GRP.KIGO ;
993                                    }
994                            }
995                    }
996            }
997    
998            /**
999             * カラãƒ?��リンクソートを表示するカラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
1000             *
1001             * ヘッãƒ??にソート用リンクを作æ?する useTableSorter 属æ? に対してã€?
1002             * カラãƒ??別に作æ?する場合ã?カラãƒ?��をカンマ区åˆ?‚Šæ–?­—でæŒ?®šしますã?
1003             * こã? tableSorterKeys 属æ?は、useTableSorter 属æ? と無関係に、指定しã�?
1004             * カラãƒ??み、リンクを表示しますã?
1005             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、columnName="*" を設定しますã?
1006             * 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
1007             *
1008             * @og.rev 3.6.0.0 (2004/09/17) 新規作æ?
1009             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
1010             *
1011             * @param       columnName      カラãƒ?��
1012             */
1013            public void setTableSorterKeys( final String columnName ) {
1014                    if( columnName != null ) {
1015                            setBooleanArray( columnName,true,sortKeys );
1016    
1017                            useSorterKeys = true;                           // 使用したことを記æ?
1018    //                      String[] clmNames = StringUtil.csv2Array( columnName );
1019    //                      for( int i=0; i<clmNames.length; i++ ) {
1020    //                              if( clmNames[i] != null && clmNames[i].length() > 0 ) {
1021    //                                      int no = table.getColumnNo( clmNames[i] );
1022    //                                      if( no >= 0 ) { sortKeys[ no ] = true; }
1023    //                              }
1024    //                      }
1025                    }
1026            }
1027    
1028            /**
1029             * å�?‚«ラãƒ??フィールドã?ãƒ??タ長を返しますã?
1030             *
1031             * @og.rev 3.5.5.5 (2004/04/23) DBColumn の size と maxlength の 意味を変更
1032             *
1033             * @param       column カラãƒ?•ª号
1034             *
1035             * @return      カラãƒ?•°
1036             */
1037            protected int getColumnSize( final int column ) {
1038                    return dbColumn[column].getTotalSize(); // 4.0.0 (2005/01/31) メソãƒ?ƒ‰名変更
1039            }
1040    
1041            /**
1042             * カラãƒ?•°を返しますã?
1043             *
1044             * @return      カラãƒ?•°
1045             */
1046            protected int getColumnCount() {
1047                    return columnCount ;
1048            }
1049    
1050            /**
1051             * 行数を返しますã?
1052             *
1053             * @return      行数
1054             */
1055            protected int getRowCount() {
1056                    return rowCount;
1057            }
1058    
1059            /**
1060             * リストã?ãƒ?‚¯スを作æ?する場合ã? name をセãƒ?ƒˆしますã?
1061             *
1062             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1063             *
1064             * @param  name 属æ?
1065             */
1066            protected void setName( final String name ) {
1067                    this.name = name;
1068            }
1069    
1070            /**
1071             * リストã?ãƒ?‚¯スを作æ?する場合ã? name を返しますã?
1072             *
1073             * @return      name属æ?
1074             */
1075            protected String getName() {
1076                    return name;
1077            }
1078    
1079            /**
1080             * カラãƒ?��をもとに、そのカラãƒ?•ª号を返しますã?
1081             * カラãƒ?��が存在しなã�??合ã??¤ HybsSystemException ã‚?throw しますã?
1082             *
1083             * @param       columnName       カラãƒ?��
1084             *
1085             * @return      カラãƒ?•ª号
1086             */
1087            protected int getColumnNo( final String columnName ) {
1088                    return table.getColumnNo( columnName );
1089            }
1090    
1091            /**
1092             * 表示開始位置を返しますã?
1093             *
1094             * @return      表示開始位置
1095             */
1096            public int getStartNo() {
1097                    return startNo;
1098            }
1099    
1100            /**
1101             * 表示開始位置をセãƒ?ƒˆしますã?
1102             *
1103             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1104             *
1105             * @param  no    表示開始位置
1106             */
1107            public void setStartNo( final int no ) {
1108                    if( no >= 0 ) { startNo = no; }
1109            }
1110    
1111            /**
1112             * 先é?へ戻るリンク間隔を返しますã?
1113             *
1114             * @return      backLinkCount    リンク間隔
1115             */
1116            public int getBackLinkCount() {
1117                    return backLinkCount;
1118            }
1119    
1120            /**
1121             * 先é?へ戻るリンク間隔をセãƒ?ƒˆしますã?
1122             *
1123             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1124             *
1125             * @param  no   リンク間隔
1126             */
1127            public void setBackLinkCount( final int no ) {
1128                    if( no >= 0 ) { backLinkCount = no; }
1129            }
1130    
1131            /**
1132             * ヘッãƒ??をå?力する間隔を取得しますã?
1133             *
1134             * @og.rev 3.5.2.0 (2003/10/20) 新規作æ?
1135             *
1136             * @return      ヘッãƒ??の表示間隔 ( 0:通常ヘッãƒ??n:n回ごとに現れる )
1137             */
1138            public int getHeaderSkipCount() {
1139                    return headerSkipCount;
1140            }
1141    
1142            /**
1143             * ヘッãƒ??をå?力する間隔をセãƒ?ƒˆしますã?
1144             *
1145             * 0を指定すると、繰り返しません(つまりã?ヘッãƒ??を最初に表示するã�?�‘ですã?)
1146             * 数字をæŒ?®šすると、その回数毎に、ã?ãƒ?ƒ€ーをデータの行に挿入しますã?
1147             *
1148             * @og.rev 3.5.2.0 (2003/10/20) 新規作æ?
1149             *
1150             * @param       hsc ヘッãƒ??の表示間隔 ( 0:通常ヘッãƒ??n:n回ごとに現れる )
1151             */
1152            public void setHeaderSkipCount( final int hsc ) {
1153                    headerSkipCount = hsc;
1154            }
1155    
1156            /**
1157             * 表示件数を取得しますã?
1158             *
1159             * @return      表示件数
1160             */
1161            public int getPageSize() {
1162                    return pageSize;
1163            }
1164    
1165            /**
1166             * 表示件数をセãƒ?ƒˆしますã?
1167             *
1168             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1169             *
1170             * @param       psize 表示件数
1171             */
1172            public void setPageSize( final int psize ) {
1173                    if( psize > 0 ) { pageSize = psize; }
1174            }
1175    
1176            /**
1177             * フォーマットを設定しますã?
1178             * ※ こã?クラスでは実è£?�•れてã�?�¾せんã€?
1179             *
1180             * @og.rev 3.5.4.0 (2003/11/25) 新規作æ?
1181             * @param list TableFormatterのリスãƒ?
1182             */
1183            public void setFormatterList( final List<TableFormatter> list ) {         // 4.3.3.6 (2008/11/15) Generics警告対å¿?
1184                    String errMsg = "こã?メソãƒ?ƒ‰は、フォーマット関係ã?ビューでのみ使用できますã?";
1185                    throw new UnsupportedOperationException( errMsg );
1186            }
1187    
1188            /**
1189             * 表示時ã?選択用オブジェクトã?タイプをæŒ?®šしますã?
1190             * ・è¤?•°選択可能時ã? "checkbox" を指定しますã?
1191             * ・ä¸?�¤ã�?�‘選ばせる場合ã?, "radio" を指定しますã?
1192             * ・éš?�—フィールドで全件を選ぶ場合ã?ã€?hidden" を指定しますã?
1193             * ・Noカラãƒ?��のもã?を表示させなã�??合ã?ã€?none" を指定しますã?
1194             * 初期値はã€?checkbox" ですã?
1195             *
1196             * @og.rev 2.2.0.0 (2002/12/17) 選択用オブジェクトã?タイプとして"hidden" を追åŠ?
1197             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1198             * @og.rev 3.5.1.0 (2003/10/03) displayNumber å»?­¢。numberType 新規追åŠ??
1199             *
1200             * @param       type 選択用オブジェクトã?タイãƒ? "checkbox"/"radio"/"hidden"/"null" )
1201             */
1202            public void setSelectedType( final String type ) {
1203                    if( type != null ) {
1204                            if( "checkbox".equalsIgnoreCase( type  ) ||
1205                                    "radio".equalsIgnoreCase( type  ) ||
1206                                    "hidden".equalsIgnoreCase( type ) ) {
1207                                            selectedType = type;
1208                            }
1209                            else {
1210                                    selectedType = null;
1211                            }
1212                    }
1213            }
1214    
1215            /**
1216             * 表示時ã?行番号の表示方法をæŒ?®šしますã?
1217             * ・sequenceはã€?¼‘から始まるé?番ですã?
1218             * ・none を指定すると、番号は表示されませんã€?
1219             * ・delete を指定すると、行番号表示そã?もã?のタグを取り除きますã?(3.5.5.0 追åŠ?
1220             * ・skip=カラãƒ?��を指定すると、そのカラãƒ??値ã�?NULL の場合ã?、番号をスキãƒ??しますã?
1221             * ・view=カラãƒ?��を指定すると、そのカラãƒ??値がã?使用されますã?(ラベルは付きません)
1222             * skip=XX と、view=XX はã€?の前後にスペã?スをå?れなã�?�§下さã�??
1223             * 初期値はã€?sequence" ですã?
1224             *
1225             * @og.rev 3.5.1.0 (2003/10/03) 新規作æ?
1226             * @og.rev 3.5.5.0 (2004/03/12) numberType 属æ?の "delete" 値追åŠ?�«伴なã�??numberDisplay 変数の追åŠ??
1227             * @og.rev 5.3.0.0 (2010/12/01) 左右åˆ?‰²スクロール(SplitViewTag)対応ã?numberType 再設定時のnumberDisplay初期åŒ?
1228             *
1229             * @param       type 行番号の表示方法ã?タイãƒ? /sequence/none/delete/skip=カラãƒ?��/view=カラãƒ?��/ )
1230             */
1231            public void setNumberType( final String type ) {
1232    
1233                    numberType = type ;
1234                    numberDisplay = true;   // 5.3.0.0 (2010/12/01) numberType 再設定時のnumberDisplay初期åŒ?
1235                    if( type != null && !type.startsWith( "seq" ) && !type.startsWith( "none" ) ) {
1236                            if( type.startsWith( "skip=" ) ) {
1237                                    numberTypeClm = table.getColumnNo( type.substring( 5 ) );
1238                                    numberTypeData = new String[rowCount];
1239                                    int cnt = 1;
1240                                    for( int i=0; i<rowCount; i++ ) {
1241                                            String tmp = table.getValue( i,numberTypeClm );
1242                                            if( tmp != null && tmp.length() > 0 ) {
1243                                                    numberTypeData[i] = String.valueOf( cnt );
1244                                                    cnt++ ;
1245                                            }
1246                                            else {
1247                                                    numberTypeData[i] = "" ;
1248                                            }
1249                                    }
1250                            }
1251                            else if( type.startsWith( "view=" ) ) {
1252                                    numberTypeClm = getColumnNo( type.substring( 5 ) );
1253                            }
1254                            // 3.5.5.0 (2004/03/12)
1255                            else if( type.startsWith( "delete" ) ) {
1256                                    numberDisplay = false;
1257                            }
1258                            else {
1259                                    // 3.5.5.0 (2004/03/12) 不正な値をエラーチェãƒ?‚¯
1260                                    String errMsg = "numberType属æ?の値が不正ですã?numberType=[" + numberType + "]" +
1261                                                    HybsSystem.CR +
1262                                                    "設定できるのは、sequence/none/delete/skip=カラãƒ?��/view=カラãƒ?��/ ですã?";
1263                                    throw new HybsSystemException( errMsg );
1264                            }
1265                    }
1266            }
1267    
1268            /**
1269             * 表示時ã?選択用オブジェクトã?タイプを返しますã?
1270             * è¤?•°選択可能時ã? "checkbox"     ä¸?�¤ã�?�‘選ばせる場合ã?, "radio" を指定しますã?
1271             * 初期値はã€?checkbox" ですã?
1272             * "checkbox"/"radio"/"hidden" 以外ã?æ–?­—å?の場合ã?, null を返しますã?
1273             *
1274             * @return       選択用オブジェクトã?タイãƒ? "checkbox"/"radio"/"hidden"/"null" )
1275             */
1276            protected String getSelectedType() {
1277                    return selectedType ;
1278            }
1279    
1280            /**
1281             * No カラãƒ??æ–?­—å?を取得しますã?
1282             * setNumberType でæŒ?®šしたã?(sequence / none / skip=カラãƒ?�� / view=カラãƒ?��)に
1283             * 応じたå?(レンãƒ?ƒ©ーの値)を返しますã?
1284             *
1285             * @og.rev 3.5.1.0 (2003/10/03) 新規作æ?
1286             *
1287             * @param   row 行番号
1288             *
1289             * @return      Noカラãƒ??æ–?­—å?
1290             */
1291            protected String getNumberData( final int row ) {
1292                    String rtn = null;
1293    
1294                    if( numberType == null || numberType.startsWith( "se" ) ) {     // sequence
1295                            rtn = String.valueOf( row + 1 );
1296                    }
1297                    else {
1298                            if( numberType.startsWith( "no" ) ) {                   // none
1299                                    rtn = "";
1300                            }
1301                            else if( numberType.startsWith( "vi" ) ) {              // view
1302                                    rtn = getRendererValue( row,numberTypeClm );
1303                            }
1304                            else if( numberType.startsWith( "sk" ) ) {              // skip
1305                                    rtn = numberTypeData[row];
1306                            }
1307                    }
1308    
1309                    return rtn ;
1310            }
1311    
1312            /**
1313             * No カラãƒ??ヘッãƒ??æ–?­—å?を取得しますã?
1314             * setNumberType でæŒ?®šしたã?(sequence / none / skip=カラãƒ?�� / view=カラãƒ?��)に
1315             * 応じたå?(ラベル)を返しますã?
1316             * 具体的には、none 以外ã?ã€?No" とã�?�†æ–?­—を、none の時ã?ã€?"(ゼロストリング)を返しますã?
1317             *
1318             * @og.rev 3.5.4.6 (2004/01/30) 新規作æ?
1319             *
1320             * @return       Noカラãƒ??ヘッãƒ??æ–?­—å?
1321             */
1322            protected String getNumberHeader() {
1323                    String rtn = NO_HEADER;
1324    
1325                    if( numberType.startsWith( "no" ) ) {                   // none
1326                            rtn = "";
1327                    }
1328    
1329                    return rtn ;
1330            }
1331    
1332            /**
1333             * ãƒ??ブル等ã?チェãƒ?‚¯ボックスに属æ?を付加しまã�?
1334             * JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?まま
1335             * チェãƒ?‚¯ボックス/ラジオボタン等に使用しますã?
1336             *
1337             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
1338             *
1339             * @param       option オプション属æ?æ–?­—å?
1340             */
1341            public void setOptionTypeAttributes( final String option ) {
1342                    optTypeAttri = option;
1343            }
1344    
1345            /**
1346             * ãƒ??ブル等ã?チェãƒ?‚¯ボックスに属æ?を付加しまã�?
1347             * JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?まま
1348             * チェãƒ?‚¯ボックス/ラジオボタン等に使用しますã?
1349             *
1350             * @return      オプション属æ?
1351             */
1352            protected String getOptionTypeAttributes() {
1353                    return optTypeAttri ;
1354            }
1355    
1356            /**
1357             * æœ?µ‚表示番号を取得しますã?
1358             * æœ?µ‚表示番号は、表示開始位置 + 表示件数 で求まりますã?
1359             * lastNo = startNo +  pageSize;
1360             *
1361             * ただしã?æœ?µ‚表示番号 ??ãƒ??タ件数 の場合ã??¤ æœ?µ‚表示番号 = ãƒ??タ件数
1362             * としますã?
1363             * なおã?表示件数 ã�?-1 の場合ã??¤ãƒ?ƒ•ォルトã?表示件数を使用しますã?
1364             *
1365             * @param       startNo    表示開始位置
1366             * @param       pageSize   表示件数
1367             *
1368             * @return      æœ?µ‚表示番号
1369             */
1370            protected int getLastNo( final int startNo, final int pageSize ) {
1371                    int lastNo = startNo +  (( pageSize < 0 ) ? getPageSize() : pageSize );
1372                    if( lastNo > rowCount ) {
1373                            lastNo = rowCount ;
1374                    }
1375    
1376                    if( rowCount < 0 || startNo < 0 || lastNo < 0 ) {
1377                            String errMsg = "startNo lastNo のç¯?›²が不正ですã?" + HybsSystem.CR
1378                                                    + " startNo=" + startNo + " , lastNo=" + lastNo + " , RowCount=" + rowCount;
1379                            throw new HybsSystemException( errMsg );
1380                    }
1381    
1382                    return lastNo ;
1383            }
1384    
1385            /**
1386             * ビューフォーãƒ??タイプを返しますã?
1387             * これは、ViewFormFactory で、org.opengion.hayabusa.html.ViewForm_ + 『typeã€?
1388             * で作æ?されるサブクラスの 『typeã€?部åˆ?‚’返しますã?
1389             *
1390             * @og.rev 3.5.4.3 (2004/01/05) viewFormID を使用するように変更しますã?
1391             *
1392             * @return      ビューフォーãƒ??タイãƒ?
1393             */
1394            public String getViewFormType() {
1395                    return viewFormID ;
1396            }
1397    
1398            /**
1399             * ビューリンクオブジェクトを設定しますã?
1400             * これは、ViewLink タグで作æ?されã�?キー(カラãƒ?��)とリンクæ–?­—å?ã‚?
1401             * 持ってã�?‚‹ Attributes オブジェクトを受け取り、å?部でリンク表示に
1402             * 使用しますã?
1403             *
1404             * @og.rev 3.5.6.4 (2004/07/16) table ã�?null の場合ã?、セãƒ?ƒˆしませんã€?
1405             *
1406             * @param       link    ビューリンクオブジェクãƒ?
1407             */
1408            public void setViewLink( final ViewMarker link ) {
1409                    viewLink = link;
1410                    if( viewLink != null && table != null ) {
1411                            viewLink.setDBTableModel( table ) ;
1412                    }
1413            }
1414    
1415            /**
1416             * ビューマã?カーオブジェクトを設定しますã?
1417             * これは、ViewMarker タグで作æ?されã�?キー(カラãƒ?��)とマã?カーæ–?­—å?ã‚?
1418             * 持ってã�?‚‹ Attributes オブジェクトを受け取り、å?部でマã?カー表示に
1419             * 使用しますã?
1420             *
1421             * @og.rev 3.5.6.4 (2004/07/16) table ã�?null の場合ã?、セãƒ?ƒˆしませんã€?
1422             *
1423             * @param       marker  ビューマã?カーオブジェクãƒ?
1424             */
1425            public void setViewMarker( final ViewMarker marker ) {
1426                    viewMarker = marker;
1427                    if( viewMarker != null && table != null ) {
1428                            viewMarker.setDBTableModel( table ) ;
1429                    }
1430            }
1431    
1432            /**
1433             * エãƒ?‚£ãƒ?ƒˆマã?カーオブジェクトを設定しますã?
1434             * これは、ViewMarker タグで、isRendere="false" で作æ?されã�?エãƒ?‚£ãƒ?ƒˆキー(カラãƒ?��)と
1435             * マã?カーæ–?­—å?を持ってã�?‚‹ Attributes オブジェクトを受け取り、å?部でマã?カー表示に
1436             * 使用しますã?
1437             *
1438             * @og.rev 3.8.6.1 (2006/10/20) 新規追åŠ?
1439             *
1440             * @param       marker  ビューマã?カーオブジェクãƒ?
1441             */
1442            public void setEditMarker( final ViewMarker marker ) {
1443                    editMarker = marker;
1444                    if( editMarker != null && table != null ) {
1445                            editMarker.setDBTableModel( table ) ;
1446                    }
1447            }
1448    
1449            /**
1450             * 検索結果メãƒ?‚»ージを表示する/しなã�?‚’設定しまã�?
1451             * 初期値は、表示する(false)ですã?
1452             *
1453             * @param       noMessage [true:表示しなã�?false:表示する]
1454             */
1455            public void setNoMessage( final boolean noMessage ) {
1456                    this.noMessage = noMessage;
1457            }
1458    
1459            /**
1460             * DBColumn オブジェクトを返しますã?
1461             *
1462             * @og.rev 3.1.8.0 (2003/05/16) DBColumn オブジェクト取得用のメソãƒ?ƒ‰追åŠ?
1463             *
1464             * @param       column カラãƒ?•ª号
1465             *
1466             * @return  DBColumnオブジェクãƒ?
1467             */
1468            protected DBColumn getDBColumn( final int column ) {
1469                    return dbColumn[column];
1470            }
1471    
1472    
1473            /**
1474             * カラãƒ?åˆ?にカラãƒ?‚ªブジェクトを割り当てますã?
1475             * カラãƒ?‚ªブジェクトã??Œラベルã‚?ƒ�ーãƒ?�ªど?Œそのカラãƒ?ƒ…報ã‚?
1476             * 保持したオブジェクトですã?
1477             *
1478             * @og.rev 5.6.2.3 (2013/03/22) 新規追åŠ?
1479             *
1480             * @param   column  カラãƒ?‚ªブジェクãƒ?
1481             * @param   clm       ヘッãƒ??を適応するカラãƒ?åˆ?
1482             */
1483            protected void setDBColumn( int column, DBColumn clm ) {
1484                    dbColumn[column] = clm;
1485            }
1486    
1487            /**
1488             * チェãƒ?‚¯の入った行ã?みを表示させるかどã�?�‹æŒ?®šしますã?
1489             *
1490             * "true" で、チェãƒ?‚¯の入った行ã?みを表示させますã?
1491             * 従来は、TextField系のViewに対して、NEXT,PREVでチェãƒ?‚¯の
1492             * 入った行ã?みを表示させる機è?でしたがã?Table系のViewに対してもã?
1493             * 同様に機è?するように、しましたã€?
1494             * 初期値は、ViewForm.DEFAULT_SKIP ですã?
1495             *
1496             * @og.rev 3.5.3.1 (2003/10/31) 新規追åŠ?
1497             *
1498             * @param       skp チェãƒ?‚¯の入った行ã?みを表示させるかどã�?�‹(true:のみ表示/false:前件表示)
1499             */
1500            public void setSkip( final boolean skp ) {
1501                    skip = skp;
1502            }
1503    
1504            /**
1505             * チェãƒ?‚¯の入った行ã?みを表示させるかどã�?�‹(スキãƒ??するかどã�?�‹)を返しますã?
1506             *
1507             * skip=true で、かつ、チェãƒ?‚¯の入ってã�?�ªã�?¡Œã?場合に、trueを返しますã?
1508             * つまりã?skip=trueの場合ã?、チェãƒ?‚¯の入ってã�?�ªã�?¡Œã?、スキãƒ??するとã�?�†
1509             * 判断を行いますã?
1510             * skip属æ?の初期値は、ViewForm.DEFAULT_SKIP ですã?
1511             *
1512             * @og.rev 3.5.3.1 (2003/10/31) 新規追åŠ?
1513             *
1514             * @param       row     行番号
1515             *
1516             * @return      スキãƒ??する(true)?�スキãƒ??しなã�?false)
1517             */
1518            protected boolean isSkip( final int row ) {
1519                    return skip && ! isChecked( row );
1520            }
1521    
1522            /**
1523             * チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択するJavaScript の機è?を使用するかどã�?�‹を指定しますã?
1524             *
1525             * 1 で、コントロール用のチェãƒ?‚¯ボックスが現れて、この機è?を使用することができるようになりますã?
1526             * 0 は、従来どおりですã?
1527             * 使用するにあたりã?jsp/commpn/default.js にJavaScriptを設定しておきますã?(設定済み)
1528             * 初期値は、シスãƒ?ƒ パラメータ の VIEW_USE_CHECK_CONTROL ですã?(0:使用しなã�?
1529             *
1530             * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
1531             * @og.rev 3.7.0.1 (2005/01/31) 全件チェãƒ?‚¯コントロール変更( boolean â‡?int )
1532             *
1533             * @param       chCtrl チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択する機è?を使用するかどã�?�‹
1534             *                      (1:使用する/0:使用しなã�?2:初期値チェãƒ?‚¯済み)
1535             */
1536            public void setUseCheckControl( final int chCtrl ) {
1537                    useCheckControl = chCtrl;
1538            }
1539    
1540            /**
1541             * チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択するJavaScript の機è?を使用するかどã�?�‹を返しますã?
1542             *
1543             * å†?ƒ¨çš?�«はã€?1:使用する/0:使用しなã�?2:初期値チェãƒ?‚¯済み)の値を保持してã�?�¾すがã€?
1544             * タグを作æ?する場合には、まずã?使用するかどã�?�‹を指定するå¿?¦�があるためã€?
1545             * 1:使用する/2:初期値チェãƒ?‚¯済み は、true:使用するã€? は、false:使用しなã�?
1546             * を返しますã?
1547             *
1548             * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
1549             *
1550             * @return      チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択する機è?を使用するかどã�?�‹(true:使用する/false:使用しなã�?
1551             */
1552            protected boolean isUseCheckControl() {
1553                    return useCheckControl > 0;
1554            }
1555    
1556            /**
1557             * チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択すã‚?タグæ–?­—å?を返しますã?
1558             *
1559             * å†?ƒ¨çš?�«はã€?1:使用する/0:使用しなã�?2:初期値チェãƒ?‚¯済み)の値ã‚?
1560             * 保持してã�?�¾すã?で、それに対応した文字å?を返しますã?
1561             *
1562             * @og.rev 3.7.0.1 (2005/01/31) 新規追åŠ?
1563             * @og.rev 5.1.8.0 (2010/07/01) 全チェãƒ?‚¯を押した状態で画面遷移した場合にチェãƒ?‚¯状態を保持するã€?
1564             *
1565             * @return      チェãƒ?‚¯ボックスの全チェãƒ?‚¯を選択する機è?を使用するかどã�?�‹
1566             *                      (1:使用する/0:使用しなã�?2:初期値チェãƒ?‚¯済み)
1567             */
1568            protected String getAllCheckControl() {
1569                    final String rtn;
1570                    switch( useCheckControl ) {
1571                            case 1: rtn = "<input type=\"checkbox\" name=\"ALL_CHECK\" value=\"2\" onClick=\"checkbox(this);\" />" ;
1572                                            break;
1573                            case 2: rtn = "<input type=\"checkbox\" name=\"ALL_CHECK\" value=\"2\" onClick=\"checkbox(this);\" checked=\"checked\" />" ;
1574                                            break;
1575                            default : rtn = "" ;
1576                    }
1577                    return rtn ;
1578            }
1579    
1580            /**
1581             * ヘッãƒ??にソート用リンクを作æ?するかどã�?�‹を指定しますã?
1582             *
1583             * "true" で、ã?ãƒ?ƒ€ーにソート用リンクを作æ?しますã?
1584             * false は、作æ?しませんã€?
1585             *
1586             * @og.rev 3.5.4.7 (2004/02/06) 新規追åŠ?
1587             *
1588             * @param       flag ヘッãƒ??にソート用リンクを作æ?するかどã�?�‹(true:作æ?する/false:作æ?しなã�?
1589             */
1590            public void setUseTableSorter( final boolean flag ) {
1591                    useTableSorter = flag;
1592            }
1593    
1594            /**
1595             * ヘッãƒ??にソート用リンクを作æ?する時ã?、リクエスト引数のMapを設定しますã?
1596             *
1597             * ソート用URLに、リクエスト時の引数を設定するå¿?¦�がありますã?
1598             * そã?ため、リクエスト時のキーと値のセãƒ?ƒˆをMapでæŒ?®šしますã?
1599             * こã?Map は、リクエストキャãƒ?‚·ュより取り出しますã?
1600             * 実è£?�§は、このMapをå?に、URLのQuery部æ–?­—å?を作æ?しますã?処ç�?�Ž程においてã€?
1601             * こã?Map を書き換えることは行いませんã€?
1602             *
1603             * @og.rev 3.6.0.0 (2004/09/17) 新規作æ?
1604             * @og.rev 3.6.0.0 (2004/09/22) 引数ã�?null の時ã?処ç�?¿½åŠ?
1605             * @og.rev 4.0.0.0 (2005/01/31) Map.keySet より Map.entrySet を使用するように変更
1606             *
1607             * @param       map ヘッãƒ??ソート時のリンクに追åŠ?�™るリクエスト変数のキャãƒ?‚·ュMap
1608             */
1609            public void makeTableSorterQuery( final Map<?,?> map ) {          // 4.3.3.6 (2008/11/15) Generics警告対å¿?
1610                    if( map == null ) { return; }                   // 3.6.0.0 (2004/09/22)
1611    
1612                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1613                    Iterator<?> ite = map.entrySet().iterator() ;     // 4.0.0 (2005/01/31)
1614                    while( ite.hasNext() ) {
1615                            Map.Entry<?,?> entry = (Map.Entry<?,?>)ite.next();  // 4.3.3.6 (2008/11/15) Generics警告対å¿?
1616                            String key = (String)entry.getKey();
1617                            if( key != null
1618                                             &&     ! key.equalsIgnoreCase( "command" )
1619                                             &&     ! key.equalsIgnoreCase( HybsSystem.SORT_COLUMNS ) ) {
1620                                    String[] vals = (String[])entry.getValue();     // 4.0.0 (2005/01/31)
1621                                    if( vals != null ) {
1622                                            for( int i=0; i<vals.length; i++ ) {
1623                                                    buf.append( "&" ).append( key ).append( "=" );
1624                                                    buf.append( StringUtil.urlEncode( vals[i] ) );
1625                                            }
1626                                    }
1627                            }
1628                    }
1629    
1630                    if( buf.length() > 0 ) {
1631                            sorterQuery = buf.toString();
1632                    }
1633            }
1634    
1635            /**
1636             * カラãƒ?‚½ート機è?(リンク)の付いたラベル名を返しますã?
1637             * カラãƒ??é ?›®名に対して,見える形のæ–?­—å?を返しますã?
1638             * ä¸?ˆ¬には,リソースバンドルとçµ?�ˆせて,å�?›½ロケール毎にラベルã‚?
1639             * åˆ?›¿えますã?
1640             *
1641             * @og.rev 3.5.4.7 (2004/02/06) 新規追åŠ?
1642             * @og.rev 3.6.0.0 (2004/09/17) sortKeys の使用によるカラãƒ??別のリンク有無追åŠ?
1643             * @og.rev 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?を利用する場合ã?処ç�?‚’追åŠ?
1644             * @og.rev 5.2.3.0 (2010/12/01) チェãƒ?‚¯ボックスでは、onChange ではなくã?onClick でイベントを発生させますã?
1645             * @og.rev 5.6.9.1 (2013/10/11) カラãƒ?•·にカンマが入ったå?合ã?対å¿?
1646             *
1647             * @param       column カラãƒ?•ª号
1648             *
1649             * @return      ソート機è?(リンク)の付いたラベルå�?
1650             */
1651            protected String getSortedColumnLabel( final int column ) {
1652                    String rtn = getColumnLabel( column ) ;
1653    
1654                    if( ( useSorterKeys && sortKeys[column] ) ||
1655                            ( ! useSorterKeys && useTableSorter ) ) {
1656    //                      return "<a href=\"?command=VIEW&" +
1657    //                                              HybsSystem.SORT_COLUMNS + "=" + dbColumn[column].getName() +
1658    //                                              sorterQuery + "\">" +
1659    //                                              getColumnLabel( column ) + "</a>" ;               // 4.0.0 (2005/01/31)
1660                            rtn = "<a href=\"?command=VIEW&" +
1661                                            HybsSystem.SORT_COLUMNS + "=" + dbColumn[column].getName() +
1662                                            sorterQuery + "\">" +
1663                                            rtn + "</a>" ;
1664                    }
1665    //              else {
1666    //                      return getColumnLabel( column ) ;               // 4.0.0 (2005/01/31)
1667    //              }
1668    
1669                    // 5.2.1.0 (2010/10/01) ä¸?‹¬入力カラãƒ??アシスト機è?対å¿?
1670                    if( isClmBulkSet( column ) ) {
1671                            org.opengion.hayabusa.db.DBColumnConfig config = dbColumn[column].getConfig();
1672                            config.setAddNoValue( true );
1673                            if( "TEXT".equals( config.getEditor() ) ) {
1674                                    String mlen = config.getMaxlength();
1675                                    int     idx = mlen.indexOf( "," ); // 5.6.9.1 (2013/10/11) カンマが入ってã�?‚‹場合ã?対å¿?
1676                                    if( idx < 0 ){ idx = mlen.length();}
1677    //                              if( mlen != null && Integer.parseInt(mlen) < COLUMNS_MAXSIZE ) {
1678                                    if( mlen != null && Integer.parseInt( mlen.substring( 0, idx ) ) < COLUMNS_MAXSIZE ) { // 5.6.9.1 (2013/10/11)
1679                                            config.setViewLength( mlen );
1680                                    }
1681                                    config.setMaxlength( "1000" );
1682                            }
1683                            else if( "RADIO".equals( config.getEditor() ) ) {
1684                                    config.setEditor( "MENU" );
1685                            }
1686    
1687                            Attributes attri = new Attributes();
1688                            // 5.2.3.0 (2010/12/01) チェãƒ?‚¯ボックスでは、onChange ではなくã?onClick でイベントを発生させますã?
1689                            if( "CHBOX".equals( config.getEditor() ) ) {
1690                                    attri.add( "onClick",  "bulkSet(this);" );
1691                            }
1692                            else {
1693                                    attri.add( "onChange",  "bulkSet(this);" );
1694                                    attri.add( "ondblclick","bulkPaste(this);" );
1695                            }
1696                            attri.add( "onkeydown", "ctrlCV(this);" );
1697                            config.setEditorAttributes( attri );
1698    
1699                            String key = config.getName();
1700                            config.setName( "h_" + key );
1701                            DBColumn clm = new DBColumn( config );
1702    
1703                            rtn = rtn + "<br />" + clm.getEditorValue( null ) ;
1704                    }
1705    
1706                    return rtn ;
1707            }
1708            
1709            /**
1710             * æŒ?®šカラãƒ?oがmustæŒ?®šされてã�?‚‹かどã�?�‹
1711             *
1712             * @og.rev 5.5.4.2 (2012/07/13)
1713             *
1714             * @param       column カラãƒ?O
1715             * @return mustæŒ?®šされてã�?‚‹かどã�?�‹[true:されてã�?‚‹/false:されてã�?�ªい]
1716             */
1717            protected boolean isMustColumn( final int column){
1718                    if( nullCheck != null && nullCheck.length > 0 ){
1719                            for(int i=0; i < nullCheck.length; i++){
1720                                    if( nullCheck[i].equals( dbColumn[column].getName() ) ){
1721                                            return true;
1722                                    }
1723                            }
1724                    }
1725                    return false;
1726            }
1727            
1728            /**
1729             * æŒ?®šカラãƒ?oがmustAnyæŒ?®šされてã�?‚‹かどã�?�‹
1730             *
1731             * @og.rev 5.5.4.2 (2012/07/13)
1732             *
1733             * @param       column カラãƒ?O
1734             * @return mustAnyæŒ?®šされてã�?‚‹かどã�?�‹[true:されてã�?‚‹/false:されてã�?�ªい]
1735             */
1736            protected boolean isMustAnyColumn( final int column){
1737                    if( mustAnyCheck != null && mustAnyCheck.length > 0 ){
1738                            for(int i=0; i < mustAnyCheck.length; i++){
1739                                    if( mustAnyCheck[i].equals( dbColumn[column].getName() ) ){
1740                                            return true;
1741                                    }
1742                            }
1743                    }
1744                    return false;
1745            }
1746    
1747            /**
1748             * ViewForm のサブクラスに渡すパラメータマップを設定しますã?
1749             *
1750             * @og.rev 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを追åŠ?�—ますã?
1751             *
1752             * @param       map パラメータマッãƒ?
1753             */
1754            public void setParam( final Map<String,String> map ) {
1755                    viewParam = map ;
1756            }
1757    
1758            /**
1759             * ViewForm のサブクラスに渡すパラメータマップã?値を返しますã?
1760             * パラメータã�?存在しなã�?null)かã?値ã�?存在しなã�?null)の場合ã?ã€?
1761             * 初期値を返しますã?
1762             *
1763             * @og.rev 3.5.5.9 (2004/06/07) 新規追åŠ?
1764             *
1765             * @param       key     パラメータの取り出すキー
1766             * @param       def     パラメータが存在しなã�??合ã?初期値
1767             *
1768             * @return      パラメータ値
1769             */
1770            protected String getParam( final String key, final String def ) {
1771                    if( viewParam == null ) { return def; }
1772    //              String rtn = (String)viewParam.get( key );
1773                    String rtn = viewParam.get( key );              // 4.3.3.6 (2008/11/15) Generics警告対å¿?
1774    
1775                    return ( rtn != null ) ? rtn : def ;
1776            }
1777    
1778            /**
1779             * ViewForm のサブクラスに渡すパラメータマップã?値を返しますã?
1780             * パラメータは、å?期å?が設定されてã�?‚‹もã?としã?そã?まま、å?を返しますã?
1781             *
1782             * @og.rev 5.5.5.6 (2012/08/31) 新規追åŠ?
1783             *
1784             * @param       key     パラメータの取り出すキー
1785             *
1786             * @return      パラメータ値
1787             */
1788            protected String getParam( final String key ) {
1789                    return (viewParam == null) ? null : viewParam.get( key );
1790            }
1791    
1792            /**
1793             * ViewForm のサブクラスに渡すパラメータマップã?値ã‚?int で返しますã?
1794             * パラメータは、å?期å?が設定されてã�?‚‹もã?としã?null の場合ã?ã€?1 を返しますã?
1795             *
1796             * @og.rev 5.5.5.6 (2012/08/31) 新規追åŠ?
1797             *
1798             * @param       key     パラメータの取り出すキー
1799             *
1800             * @return      パラメータ値(未設定時はã€?1)
1801             */
1802            protected int getIntParam( final String key ) {
1803                    String rtn = (viewParam == null) ? null : viewParam.get( key );
1804                    return (rtn == null) ? -1 : Integer.parseInt( rtn );
1805            }
1806    
1807            /**
1808             * ViewForm のサブクラスに渡すパラメータマップã?値ã‚?boolean で返しますã?
1809             * パラメータは、å?期å?が設定されてã�?‚‹もã?としã?null の場合ã?、false を返しますã?
1810             *
1811             * @og.rev 5.5.5.6 (2012/08/31) 新規追åŠ?
1812             *
1813             * @param       key     パラメータの取り出すキー
1814             *
1815             * @return      パラメータ値(未設定時は、false)
1816             */
1817            protected boolean getBoolParam( final String key ) {
1818                    String rtn = (viewParam == null) ? null : viewParam.get( key );
1819                    return (rtn == null) ? false : Boolean.parseBoolean( rtn );
1820            }
1821            
1822            /**
1823             * ViewForm のサブクラスに渡すパラメータ(æ–?­—å?配å?のArrayList)を設定しますã?
1824             *
1825             * @og.rev 5.5.8.3 (2012/11/17) ViewParamTag のパラメータを追åŠ?�—ますã?
1826             * @og.rev 5.5.9.0 (2012/12/03) ArrayListに変更
1827             *
1828             * @param       list æ–?­—å?配å?のArrayList
1829             */
1830    //      public void setViewObject( final Map<String,Object> obj ) {
1831            public void setViewArrayList( final ArrayList<String[]> list ) {
1832                    viewArrayList = list ;
1833            }
1834            
1835            /**
1836             * ViewForm のサブクラスに渡すパラメータ(æ–?­—å?配å?のArrayList)の値を返しますã?
1837             * パラメータは、å?期å?が設定されてã�?‚‹もã?としã?そã?まま、å?を返しますã?
1838             *
1839             * @og.rev 5.5.8.3 (2012/11/17) 新規追åŠ?
1840             * @og.rev 5.5.9.0 (2012/12/03) ArrayListに変更
1841             *
1842             * @return      パラメータ値
1843             */
1844            //protected Object getViewObject( final String key ) {
1845            protected ArrayList<String[]> getViewArrayList() {
1846                    return viewArrayList;
1847            }
1848    
1849            /**
1850             * No æ¬?��のもã?を作æ?するかどã�?�‹を返しますã?
1851             *
1852             * numberType 属æ?にã€?delete" とã�?�†値を設定したå?合ã?、No æ¬?��のもã?ã‚?
1853             * 作æ?しません。それ以外ã?、作æ?しますã?
1854             * 初期値は、作æ?する(true)ですã?
1855             *
1856             * @og.rev 3.5.5.0 (2004/03/12) 新規追åŠ?
1857             *
1858             * @return      Noæ¬?��のもã?を作æ?するかどã�?�‹(true:作æ?する/false:作æ?しなã�?
1859             */
1860            protected boolean isNumberDisplay() {
1861                    return numberDisplay;
1862            }
1863    
1864            /**
1865             * マã?カーオブジェクãƒ?リンク、ã?ーカー)を設定しますã?
1866             * ここでは、旧 ViewForm 属æ?ã‚?新ViewForm に直接セãƒ?ƒˆしますã?
1867             *
1868             * @og.rev 3.5.6.1 (2004/06/25) 新規追åŠ?
1869             * @og.rev 3.8.6.1 (2006/10/20) editMarker 追åŠ?
1870             *
1871             * @param       view ViewFormオブジェクãƒ?
1872             */
1873            public void markerSet( final ViewForm view ) {
1874                    if( view instanceof AbstractViewForm ) {
1875                            viewLink   = ((AbstractViewForm)view).viewLink ;
1876                            if( viewLink != null ) { viewLink.setDBTableModel( table ); }
1877                            viewMarker = ((AbstractViewForm)view).viewMarker;
1878                            if( viewMarker != null ) { viewMarker.setDBTableModel( table ); }
1879                            editMarker = ((AbstractViewForm)view).editMarker;
1880                            if( editMarker != null ) { editMarker.setDBTableModel( table ); }
1881                    }
1882                    else {
1883                            String errMsg = "AbstractViewForm 以外ã? view は、サポã?トしてã�?�¾せんã€?
1884                                            + " view=[" + view + "]" ;
1885                            throw new HybsSystemException( errMsg );
1886                    }
1887            }
1888    
1889            /**
1890             * ãƒ??ブルのバックグラウンドカラーの入れ替えã?サイクルをセãƒ?ƒˆしますã?
1891             * 0(ゼブラなã�?ã€?1(ワーニング)ã€?2以ä¸?エラー)ã€?(ゼブラ)ã€?以ä¸?行数まとã‚?
1892             * 初期値はã€?(ゼブラ)ですã?
1893             *
1894             * @og.rev 3.5.6.2 (2004/07/05) ViewForm_HTMLTable より移å‹?
1895             *
1896             * @param  sycle  0(ゼブラなã�?ã€?1(ワーニング)ã€?2以ä¸?エラー)ã€?(ゼブラ)ã€?以ä¸?行数まとã‚?
1897             */
1898            public void setBgColorCycle( final int sycle ) {
1899                    bgColorCycle    = 1;            // 強制çš?�«設å®?
1900    
1901                    if( sycle > 0 ) {                                            // 1(ゼブラ)ã€?以ä¸?行数まとã‚?
1902                            color_row0              = BG_COLOR_ROW0 ;
1903                            color_row1              = BG_COLOR_ROW1 ;
1904                            bgColorCycle    = sycle;                        // こã?ケースのみ引数を設å®?
1905                    }
1906                    else if( sycle == -1 ) {                                        // -1(ワーニング)
1907                            color_row0              = BG_WARNING_COLOR_ROW0 ;
1908                            color_row1              = BG_WARNING_COLOR_ROW1 ;
1909                    }
1910                    else if( sycle < -1 ) {                                      // -2以ä¸?エラー)
1911                            color_row0              = BG_ERROR_COLOR_ROW0 ;
1912                            color_row1              = BG_ERROR_COLOR_ROW1 ;
1913                    }
1914                    else {                                                                                  // 0(ゼブラなã�?
1915                            color_row0              = "" ;
1916                            color_row1              = "" ;
1917                    }
1918            }
1919    
1920            /**
1921             * ãƒ??ブルのバックグラウンドカラーのクラスにæŒ?®šするカラãƒ?��を指定しますã?
1922             *
1923             * 通常のゼブラ模様ã?、tr 属æ?のクラスæŒ?®šとして、row_0、row_1 が指定されますã?
1924             * そã?代わりに、ここでæŒ?®šされたカラãƒ??値がクラス属æ?として設定されますã?
1925             * (æŒ?®šするã?はカラãƒ?��ですã?行単位にクラス属æ?の値を変えることが可能ですã?)
1926             * 選択è¡?row_sel)は、優先して使用されますã?
1927             * 出力されるクラス名ã?ã€?row_" + 属æ?値 になりますã?
1928             *
1929             * @og.rev 5.1.8.0 (2010/07/01) 新規追åŠ?
1930             *
1931             * @param  clsClm ゼブラ模様ã?替わりにæŒ?®šするクラスをæ?納したカラãƒ?��
1932             */
1933            public void setBgColorClsClm( final String clsClm ) {
1934                    if( clsClm != null ) {
1935                            bgColorClsClmNo = table.getColumnNo( clsClm );
1936                    }
1937            }
1938    
1939            /**
1940             * ãƒ??ブルのバックグラウンドカラーの値をセãƒ?ƒˆしますã?
1941             * これは、DBTableModele が指定ã?行番号の時に、BG_COLOR_ROWSEL ã‚?
1942             * 返しますã?それ以外ã?ã€??常の getBgColorCycleClass( int )と
1943             * 同じ結果を返しますã?
1944             * BG_COLOR_ROWSEL の使用有無は、シスãƒ?ƒ パラメータの
1945             * VIEW_USE_SELROW_COLOR 属æ?でæŒ?®šできますã?
1946             *
1947             * @og.rev 3.7.0.3 (2005/03/01) 新規追åŠ?
1948             * @og.rev 3.7.1.1 (2005/05/31) SEL_ROW機è?使用時に、BG_COLOR_ROWSEL の使用 æœ?無を指å®?
1949             *
1950             * @param       indx 先é?からの連番( ?�から始めã‚?)
1951             * @param       row 行番号
1952             *
1953             * @return      行ã?色を指定すã‚?class 属æ?( cssファイルでæŒ?®?)
1954             * @see #getBgColorCycleClass( int )
1955             */
1956            protected String getBgColorCycleClass( final int indx,final int row ) {
1957                    if( useSelRowColor && ( scrollRowNo == row ) ) {
1958                            return BG_COLOR_ROWSEL;
1959                    }
1960                    else {
1961                            return getBgColorCycleClass( indx );
1962                    }
1963            }
1964    
1965            /**
1966             * ãƒ??ブルのバックグラウンドカラーの値をセãƒ?ƒˆしますã?
1967             * 行番号は, ?�から始まるã?で、å?数ã‚?HTML_BG_COLOR_ROW0 ã€?
1968             * å¥?•°行を HTML_BG_COLOR_ROW1 としますã?
1969             * setBgColorCycle で、設定å?変換してã�?�¾すã?
1970             * bgColorClsClm が指定されてã�?‚‹場合ã?、その値を利用したクラス属æ?を返しますã?
1971             * クラス名ã?ã€?row_" + æŒ?®šカラãƒ??値 ですã?
1972             * æŒ?®šカラãƒ??値 がã?null またã?、空æ–?­—å?の場合ã?、従来のゼブラ模様が優先されますã?
1973             * またã?行選択があれば、そちらがæœ?„ª先されますã?
1974             *
1975             * @og.rev 3.5.6.2 (2004/07/05) ViewForm_HTMLTable より移å‹?
1976             * @og.rev 5.1.8.0 (2010/07/01) bgColorClsClmNo 対å¿?
1977             *
1978             * @param       row 行番号( ?�から始めã‚?)
1979             *
1980             * @return      行ã?色を指定すã‚?class 属æ?( cssファイルでæŒ?®?)
1981             * @see         #setBgColorClsClm( String )
1982             */
1983            protected String getBgColorCycleClass( final int row ) {
1984                    String rtn = null ;
1985    
1986                    // 5.1.8.0 (2010/07/01) bgColorClsClmNo 対å¿?
1987                    if( bgColorClsClmNo >= 0 ) {
1988                            String val = table.getValue( row,bgColorClsClmNo );
1989                            if( val != null && val.length() > 0 ) {
1990                                    rtn = " class=\"row_" + val + "\"";
1991                            }
1992                    }
1993    
1994                    if( rtn == null ) {
1995                            if( (row/bgColorCycle) % 2 == 0 ) {
1996                                    rtn = color_row0;               // 偶数の場å�?
1997                            }
1998                            else {
1999                                    rtn = color_row1;               // å¥?•°の場å�?
2000                            }
2001                    }
2002    
2003                    return rtn ;
2004            }
2005    
2006            /**
2007             * スクロールバã?用のDIV要ç´?‚’出力するかどã�?�‹(初期値はシスãƒ?ƒ パラメータ)
2008             *
2009             * スクロールバã?対応する為、テーブルの先é?に、DIV要ç´?‚’出力しますã?
2010             * 初期値は、シスãƒ?ƒ パラメータ の VIEW_USE_SCROLLBAR ですã?
2011             * ※ 互換性の関係よりã?false になってã�?�¾すã?
2012             * ※ 互換性の関係よりã?新しいタイプã?ヘッãƒ??固定を、TYPE2 としますã?
2013             *
2014             * @og.rev 3.5.6.4 (2004/07/16) 新規追åŠ?
2015             * @og.rev 3.8.0.3 (2005/07/15) barType 変数の追åŠ?
2016             * @og.rev 4.0.0.0 (2007/04/10) ヘッãƒ??固定ã?スクロールタイプã?、TYPE2 のみにするã€?
2017             *
2018             * @param  useBar  スクロールバã?用のDIV要ç´??出åŠ?[true:出力すã‚?false:出力しない]
2019             */
2020            public void setUseScrollBar( final boolean useBar ) {
2021                    useScrollBar  = useBar;
2022            }
2023    
2024            /**
2025             * スクロールバã?用の開始DIV要ç´?¿”しますã?
2026             *
2027             * スクロールバã?対応する為、テーブルの先é?に、DIV要ç´?‚’出力しますã?
2028             * 初期値は、シスãƒ?ƒ パラメータ の VIEW_USE_SCROLLBAR でæŒ?®šされたDIV要ç´?�§すã?
2029             * DIV要ç´??開始タグになりますã?
2030             *
2031             * @og.rev 3.8.0.3 (2005/07/15) 新規追åŠ?
2032             * @og.rev 4.2.0.0 (2008/03/18) outerにwidthとheightをå?すよã�?�«修正
2033             *
2034             * @return  LAYER_ST スクロールバã?用の開始DIV要ç´?
2035             */
2036            protected String getScrollBarStartDiv() {
2037                    String layerStart = LAYER_ST0 ;
2038                    if( useScrollBar ) {
2039    //                      layerStart = LAYER_ST2 ;
2040                            layerStart = "<div id=\"divPos\" style=\"";
2041                            if( height != null ){
2042                                    layerStart += "height:" + height + ";";
2043                            }
2044                            if( width != null ){
2045                                    layerStart += "width:" + width + ";";
2046                            }
2047                            layerStart += "\" >"
2048                                    +       "<div id=\"outer\">"
2049                                    +       "<div id=\"layer\" onscroll=\"SetScrollHeader(this);\">"
2050                                    +       "<div id=\"divHide\">" ;
2051                    }
2052                    return layerStart;
2053            }
2054    
2055            /**
2056             * スクロールバã?用の終äº?IV要ç´?¿”しますã?
2057             *
2058             * スクロールバã?対応する為、テーブルの終äº?�«、DIV要ç´?‚’出力しますã?
2059             * 初期値は、シスãƒ?ƒ パラメータ の VIEW_USE_SCROLLBAR でæŒ?®šされたDIV要ç´?�§すã?
2060             * DIV要ç´??終äº?‚¿グになりますã?
2061             *
2062             * @og.rev 3.8.0.3 (2005/07/15) 新規追åŠ?
2063             *
2064             * @return  スクロールバã?用の終äº?IV要ç´?
2065             */
2066            protected String getScrollBarEndDiv() {
2067                    String layerEnd = LAYER_END0 ;
2068                    if( useScrollBar ) {
2069                            layerEnd = LAYER_END2 ;
2070                    }
2071                    return layerEnd;
2072            }
2073    
2074            /**
2075             * æŒ?®šã?行番号まで画面をスクロールさせるå?合ã?行番号を設定しますã?
2076             *
2077             * 画面をスクロール後ã?リンク等で他画面を表示後ã?戻ってきた場合にã€?
2078             * 先ã?スクロール位置まで戻しますã?
2079             * ただしã?厳å¯?�«戻すことはできなã�?�Ÿめã?大体ã?あたりに戻しますã?
2080             * æŒ?®šしなã�??å�?クリアする場å�?はã€?1 をセãƒ?ƒˆしてくださいã€?
2081             * useSelRowColor はã€?�¸択行に色づけするかどã�?�‹を指定しますã?
2082             *
2083             * @og.rev 3.7.0.3 (2005/03/01) 新規追åŠ?
2084             * @og.rev 3.7.1.1 (2005/05/31) 選択行ã?ーカーの使用有無
2085             *
2086             * @param       rowNo   æŒ?®šã?行番号まで画面をスクロールさせるå?合ã?行番号
2087             * @param       useSelRowColor  選択行ã?ーカーの使用有無
2088             */
2089            public void setScrollRowNo( final int rowNo, final boolean useSelRowColor ) {
2090                    scrollRowNo = rowNo;
2091                    firstChecked = false;
2092                    this.useSelRowColor = useSelRowColor;
2093            }
2094    
2095            /**
2096             * 設定å?に "_" が含まれてã�?‚‹場合にレンãƒ?ƒ©ーを使用するカラãƒ?‚’CSV形式でæŒ?®šしますã?
2097             *
2098             * これは、従来の カラãƒ?®š義の WRITABLE エãƒ?‚£ターと同等ã?働きを行うように
2099             * カラãƒ?±žæ?を指定しますã?
2100             * WRITABLE エãƒ?‚£ターは、設定å?にアンãƒ??バã? "_" が含まれてã�?‚‹場合にã€?
2101             * そã?値を書込み禁止にする機è?ですã?これは、エãƒ?‚£ター自身がå?を判断して
2102             * 書き込み許可か禁止かを判断してã�?�¾すã?
2103             * こã?動きを汎用çš?�«するため、指定ã?カラãƒ?‚’カンマ区åˆ?‚Šæ–?­?CSV)でæŒ?®?
2104             * することにより、レンãƒ?ƒ©ーとエãƒ?‚£ターを設定å?によって動的にåˆ?‚Š替える
2105             * 機è?を実現しますã?
2106             * そã?場合ã?表示/編é›?�¨もに、å?頭のアンãƒ??バã?は削除されますã?
2107             * またã?全カラãƒ?�«つã�?�¦、有効にする場合ã?、writableControl="*" を設定しますã?
2108             *
2109             * @og.rev 3.8.0.9 (2005/10/17) 新規追åŠ?
2110             * @og.rev 5.1.8.0 (2010/07/01) å†?ƒ¨ロジãƒ?‚¯変更(setBooleanArray)
2111             *
2112             * @param  wrtCtrl 書き込み制御を行いたいカラãƒ?‚’CSV形式でæŒ?®?
2113             */
2114            public void setWritableControl( final String wrtCtrl ) {
2115                    setBooleanArray( wrtCtrl,true,writeCtrl );
2116    
2117    //              if( wrtCtrl != null ) {
2118    //                      // 書き込み制御の許可 をカラãƒ?�˜位で設定ã?* の場合ã?、å?カラãƒ?¨±可
2119    //                      if( "*".equals( wrtCtrl ) ) {
2120    //                              Arrays.fill( writeCtrl,true );
2121    //                      }
2122    //                      else {
2123    //                              Arrays.fill( writeCtrl,false );
2124    //                              String[] clmNames = StringUtil.csv2Array( wrtCtrl );
2125    //                              for( int i=0; i<clmNames.length; i++ ) {
2126    //                                      if( clmNames[i] != null && clmNames[i].length() > 0 ) {
2127    //                                              int no = table.getColumnNo( clmNames[i] );
2128    //                                              if( no >= 0 ) { writeCtrl[ no ] = true; }
2129    //                                      }
2130    //                              }
2131    //                      }
2132    //              }
2133            }
2134    
2135            /**
2136             * CSV形式でæŒ?®šされたカラãƒ?�«、true/false の初期設定を行いますã?
2137             *
2138             * 従来は、各クラスで実è£?�•れてã�?�Ÿ処ç�?‚’、ä¸?®?‰€にまとめますã?
2139             * これにより、各種機è?をあらかじめ実è£?�—ておきますã?
2140             * æŒ?®šã?カラãƒ?�Œ、null の場合ã?、何も処ç�?‚’行いませんã€?つまりã?初期値のまま)
2141             * æŒ?®šã?カラãƒ?�Œã€? の場合ã?、すべてのカラãƒ?�ŒæŒ?®šされたとみなしã?配å?に値を設定しますã?
2142             * æŒ?®šã?カラãƒ?�Œã€?"(ゼロæ–?­—å?)の場合ã?、なにもカラãƒ?�ŒæŒ?®šされてã�?�ªã�?‚‚のとみなされã€?
2143             * 初期値のé€?�§埋められますã?
2144             *
2145             * @og.rev 5.1.8.0 (2010/07/01) 新規追åŠ?
2146             *
2147             * @param  clsm    æŒ?®šã?カラãƒ?‚’CSV形式でæŒ?®?
2148             * @param  def     設定するå?
2149             * @param       arrays  設定すã‚?配å?
2150             */
2151            private void setBooleanArray( final String clsm , final boolean def , final boolean[] arrays ) {
2152                    if( clsm != null ) {
2153                            // 書き込み制御の許可 をカラãƒ?�˜位で設定ã?* の場合ã?、å?カラãƒ?¨±可
2154                            if( "*".equals( clsm ) ) {
2155                                    Arrays.fill( arrays,def );
2156                            }
2157                            else {
2158                                    Arrays.fill( arrays,!def );
2159                                    String[] clmNames = StringUtil.csv2Array( clsm );
2160                                    for( int i=0; i<clmNames.length; i++ ) {
2161                                            if( clmNames[i] != null && clmNames[i].length() > 0 ) {
2162                                                    int no = table.getColumnNo( clmNames[i] );
2163                                                    if( no >= 0 ) { arrays[ no ] = def; }
2164                                            }
2165                                    }
2166                            }
2167                    }
2168            }
2169    
2170            /**
2171             * ogPopup で検索結果の値を返すキーをã?CSV形式でæŒ?®šしますã?
2172             *
2173             * popup の検索結果を返す画面で、結果のラジオボタンにイベントセãƒ?ƒˆしますã?
2174             * こã?場合ã?オープンもとのwindow に値を返しますが、そのキーをCSV形式で
2175             * æŒ?®šしますã?
2176             * なおã?こã?メソãƒ?ƒ‰は、ä¸?¦§表示(HTMLTable)関係ã?ビューのみでサポã?トして
2177             * ã�?�¾すが、チェãƒ?‚¯メソãƒ?ƒ‰の関係で、それ以外ã?ビューに適用してもç´??ã‚?
2178             * するようにしますã?(エラーにしません)
2179             *
2180             * @og.rev 3.8.6.1 (2006/10/20) 新規追åŠ?
2181             *
2182             * @param  rtnKeys ogPopupで値を返すカラãƒ?–‡字å?(CSV形å¼?
2183             */
2184            public void setPopupReturnKeys( final String rtnKeys ) {
2185                    // こã?メソãƒ?ƒ‰は、ä¸?¦§表示(HTMLTable)関係ã?ビューのみでサポã?トして
2186                    // ã�?�¾すが、チェãƒ?‚¯メソãƒ?ƒ‰の関係で、それ以外ã?ビューに適用してもç´??ã‚?
2187                    // するようにしますã?(エラーにしません)
2188            }
2189    
2190            /**
2191             * table要ç´?�«対して class 属æ?を設定しますã?
2192             *
2193             * 従来の シスãƒ?ƒ リソースでのãƒ??ブルレイアウトã?設定をå»?­¢しã?
2194             * CSSファイルで、指定するよã�?�«変更してã�?�¾すã?
2195             * これに伴ã�??CSSファイルのキーとして、クラス属æ?をå?力しますã?
2196             * view(またã?、å?力されるtableタグ)のレイアウトã?、このクラス属æ?で
2197             * æŒ?®šすることが可能になりますã?
2198             * 初期値は、viewTable ですã?
2199             *
2200             * @og.rev 4.0.0.0 (2007/04/16) 新規追åŠ?
2201             *
2202             * @param       cls     class属æ?を表す文字å?
2203             */
2204            public void setTableClass( final String cls ) {
2205                    if( cls != null ) {
2206                            clazz = cls;
2207                    }
2208            }
2209    
2210            /**
2211             * table要ç´?�«対して class 属æ?を返しますã?
2212             *
2213             * @og.rev 4.0.0.0 (2007/04/16) 新規追åŠ?
2214             *
2215             * @return      class属æ?を表す文字å?
2216             */
2217            protected String getTableClass() {
2218                    return clazz;
2219            }
2220    
2221            /**
2222             * outerのIDを持つDIV要ç´?�«heightを指定しまã�?
2223             *
2224             * ビューの高さ、å¹?‚’æŒ?®šできるようにしますã?
2225             * これによって?‘画面に?’つのビューをå?力する事も可能となりますã?
2226             * 初期値はnullですã?
2227             *
2228             * @og.rev 4.2.0.0 (2008/03/18) 新規追åŠ?
2229             *
2230             * @param       high    ビューの高さ
2231             */
2232            public void setHeight( final String high ) {
2233                    height = high;
2234            }
2235    
2236            /**
2237             * outerのIDを持つDIV要ç´?�«widthを指定しまã�?
2238             *
2239             * ビューの高さ、å¹?‚’æŒ?®šできるようにしますã?
2240             * これによって?‘画面に?’つのビューをå?力する事も可能となりますã?
2241             * 初期値はnullですã?
2242             *
2243             * @og.rev 4.2.0.0 (2008/03/18) 新規追åŠ?
2244             *
2245             * @param       wide    ビューの高さ
2246             */
2247            public void setWidth( final String wide ) {
2248                    width = wide;
2249            }
2250    
2251            /**
2252             * リソースマネージャを設定しますã?
2253             * クロスé›?¨ˆ時に、useColumnHeader="true"とした場合ã?み設定されますã?
2254             *
2255             * @og.rev 4.0.0.0 新規作æ?
2256             *
2257             * @param       res リソースマネージャー
2258             */
2259            public void setResourceManager( final ResourceManager res ) {
2260                    resourceManager = res;
2261            }
2262    
2263            /**
2264             * リソースマネージャを取得しますã?
2265             *
2266             * @og.rev 4.0.0.0 新規作æ?
2267             *
2268             * @return      ResourceManagerリソースマネージャー
2269             */
2270            protected ResourceManager getResourceManager() {
2271                    return resourceManager;
2272            }
2273    
2274            /**
2275             * 改廃Cのつã�?�¦ã�?�ªã�?¡Œをスキãƒ??するかどã�?�‹æŒ?®šしますã?
2276             *
2277             * "true" で、改廃Cのつã�?�Ÿ行をスキãƒ??しますã?
2278             * 初期値はfalseですã?
2279             *
2280             * @og.rev 4.3.1.0 (2008/09/08) 新規追åŠ?
2281             *
2282             * @param       sne 改廃Cのつã�?�¦ã�?�ªã�?¡Œをスキãƒ??するかどã�?�‹(true:スキãƒ??する/false:スキãƒ??しなã�?
2283             */
2284            public void setSkipNoEdit( final boolean sne ) {
2285                    skipNoEdit = sne;
2286            }
2287    
2288            /**
2289             * 改廃Cのつã�?�¦ã�?�ªã�?¡Œをスキãƒ??するかどã�?�‹æŒ?®šしますã?
2290             *
2291             * skipNoEdit="true"でかつ、編é›?�•れてã�?�ªã�?改廃Cがつã�?�¦ã�?�ªã�?場合ã?み
2292             * trueを返しますã?
2293             *
2294             * @og.rev 4.3.1.0 (2008/09/08) 新規追åŠ?
2295             *
2296             * @param       row     行番号
2297             *
2298             * @return      スキãƒ??対象行か
2299             */
2300            protected boolean isSkipNoEdit( final int row ) {
2301                    return skipNoEdit && ( table.getModifyType( row ) == null || table.getModifyType( row ).length() == 0 );
2302            }
2303    
2304            /**
2305             * 画面遷移なしモードに対応した形で処ç�?‚’行うかをæŒ?®šしますã?
2306             *
2307             * "true" で、画面遷移なしモードに対応しますã?
2308             * 初期値はfalseですã?
2309             *
2310             * @og.rev 4.3.3.0 (2008/10/01) 新規追åŠ?
2311             *
2312             * @param       flag 画面遷移なしモードに対応するかどã�?�‹(true:対応すã‚?false:対応しなã�?
2313             */
2314            public void setNoTransition( final boolean flag ) {
2315                    noTransition = flag;
2316            }
2317    
2318            /**
2319             * 画面遷移なしモードに対応した形で処ç�?‚’行うかを返しますã?
2320             *
2321             * "true" で、画面遷移なしモードに対応しますã?
2322             * 初期値はfalseですã?
2323             *
2324             * @og.rev 4.3.3.0 (2008/10/01) 新規追åŠ?
2325             *
2326             * @return      画面遷移なしモードに対応するかどã�?�‹(true:対応すã‚?false:対応しなã�?
2327             */
2328            protected boolean isNoTransition() {
2329                    return noTransition;
2330            }
2331    
2332            /**
2333             * 該当行ã?行番号と改廃Cをå?力しますã?
2334             * 出力形式ã?ã€?rid="[行番号]" kh="[改廃C]" ですã?
2335             * 改廃Cが付加されてã�?�ªã�??合ã?、改廃Cがnullの場合ã?、kh属æ?は出力されませんã€?
2336             * (画面遷移なしモードで使用しまã�?
2337             *
2338             * @og.rev 4.3.3.0 (2008/10/01) 新規作æ?
2339             *
2340             * @param       row 行番号( ?�から始めã‚?)
2341             *
2342             * @return      該当行ã?行番号と改廃C
2343             */
2344            protected String getHiddenRowValue( final int row ) {
2345                    String kh = "";
2346                    if( table.getModifyType( row ) != null && table.getModifyType( row ).length() > 0 ) {
2347                            kh = " " + hiddenCdkhKey + "=\"" + table.getModifyType( row ) + "\"";
2348                    }
2349                    return " " + hiddenRowKey + "=\"" + row + "\"" + kh;
2350            }
2351    
2352            /**
2353             * ビューで表示したカラãƒ??ä¸?¦§をカンマ区åˆ?‚Šで返しますã?
2354             *
2355             * @og.rev 5.1.6.0 (2010/05/01) 新規追åŠ?
2356             *
2357             * @return      ビューで表示したカラãƒ??ä¸?¦§
2358             */
2359            public String getViewClms() {
2360                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
2361                    for( int i=0; i<clmDisplay.length; i++ ) {
2362                            if( clmDisplay[i] && !( rowWritableFlag && i==0 ) ) {
2363                                    if( buf.length() > 0 ) { buf.append( ',' ); }
2364                                    buf.append( dbColumn[i].getName() );
2365                            }
2366                    }
2367                    return buf.toString();
2368            }
2369    
2370            /**
2371             * 表示é ?›®の編é›?並び替ã�?が可能かどã�?�‹を返しまã�?
2372             *
2373             * @og.rev 5.1.6.0 (2010/05/01) 新規追åŠ?
2374             *
2375             * @return      表示é ?›®の編é›?並び替ã�?が可能かどã�?�‹(true:可能)
2376             */
2377            public boolean isEditable() {
2378                    return true;
2379            }
2380    
2381            /**
2382             * こã?ViewFormが作æ?された画面IDをセãƒ?ƒˆしますã?
2383             *
2384             * @og.rev 5.1.7.0 (2010/06/01) 新規追åŠ?
2385             *
2386             * @param gamenId 画面ID
2387             */
2388            public void setGamenId( final String gamenId ) {
2389                    this.gamenId = gamenId;
2390            }
2391    
2392            /**
2393             * こã?ViewFormが作æ?された画面IDを返しますã?
2394             *
2395             * @og.rev 5.1.7.0 (2010/06/01) 新規追åŠ?
2396             *
2397             * @return      画面ID
2398             */
2399            public String getGamenId() {
2400                    return gamenId;
2401            }
2402    
2403            /**
2404             * カラãƒ?�Œä¸?‹¬入力アシスト機è?を利用するかどã�?�‹を返しますã?
2405             *
2406             * 条件は、ä¸?‹¬入力アシストカラãƒ?�§、かつ、書き込み許可(isColumnWritable(clm)==true)の場合とするã€?
2407             *
2408             * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
2409             *
2410             * @param       column カラãƒ?•ª号
2411             *
2412             * @return      利用する(true)?�しなã�?false)
2413             */
2414            protected boolean isClmBulkSet( final int column ) {
2415                    return clmBulkSet[ column ] && clmWritable[ column ];
2416            }
2417    
2418            /**
2419             * ä¸?‹¬入力カラãƒ??アシスト機è?を利用するカラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
2420             *
2421             * これは、カラãƒ??書き込み時に、ä¸?‹¬入力可能なカラãƒ?‚’ヘッãƒ??に表示しã?
2422             * ä¸?‹¬登録できる機è?を提供しますã?
2423             * こã?機è?は、jsp/common/bulkSet.js JavaScript とともに提供されますã?
2424             * IE につã�?�¦は、クリãƒ??ボã?ドも利用できますã?Ctrl-C と Ctrl-V でそれぞれ
2425             * ä¸??のカラãƒ??値の取り出しと書き込みが可能になりますã?
2426             * "*" を指定すると、すべてのカラãƒ?‚’(columnBulkSet)æŒ?®šしたことになりますã?
2427             *
2428             * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
2429             *
2430             * @param       columnName      例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
2431             */
2432            public void setColumnBulkSet( final String columnName ) {
2433                    setBooleanArray( columnName,true,clmBulkSet );
2434            }
2435    }