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