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.db;
017
018 import org.opengion.fukurou.model.NativeType;
019 import org.opengion.fukurou.util.Attributes;
020 import org.opengion.fukurou.util.ErrorMessage;
021 import org.opengion.fukurou.util.TagBuffer;
022 import org.opengion.hayabusa.common.HybsSystem;
023 import org.opengion.hayabusa.common.HybsSystemException;
024 import org.opengion.hayabusa.resource.CodeData;
025 import org.opengion.hayabusa.resource.ColumnData;
026 import org.opengion.hayabusa.resource.LabelData;
027 import org.opengion.hayabusa.resource.RoleMode;
028
029 /**
030 * DBType インターフェースを継承した Abstractクラスですã?
031 * getRendererValue( String value ) 、getEditorValue( String value ) ã€?
032 * isValueChack( String ) メソãƒ?ƒ‰をã?サブクラスで実è£?�™るå¿?¦�がありますã?
033 *
034 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編é›?ƒ‘ラメータ、文字パラメータの追åŠ??
035 * @og.group ãƒ??ブル管ç�?
036 *
037 * @version 4.0
038 * @author Kazuhiko Hasegawa
039 * @since JDK5.0,
040 */
041 public final class DBColumn {
042
043 // 3.5.4.2 (2003/12/15) COLUMNS_MAXSIZE を定義しておきますã?
044 private final int COLUMNS_MAXSIZE = HybsSystem.sysInt( "HTML_COLUMNS_MAXSIZE" ) ; // 表示フィールドã?大きさ
045
046 private final ColumnData columnData ;
047 private final LabelData labelData ;
048 private final CodeData codeData ;
049
050 private final CellRenderer cellRenderer ; // 表示用レンãƒ?ƒ©ー
051 private final CellEditor cellEditor ; // 編é›?”¨エãƒ?‚£ター
052 private final DBType dbType ; // ãƒ??タのタイãƒ?
053
054 private final String lang ; // è¨?ª?
055 private final boolean writable ; // カラãƒ?�Œ書き込み可能かどã�?�‹
056 private final String defValue ; // ãƒ??タのãƒ?ƒ•ォルトå?
057 private final Attributes rendAttri ; // 表示用レンãƒ?ƒ©ー追åŠ?”¨属æ?
058 private final Attributes editAttri ; // 編é›?”¨エãƒ?‚£ター追åŠ?”¨属æ?
059 private final boolean addNoValue ; // メニューに空の選択リストを追åŠ?�™るかどã�?�‹ // 3.5.5.7 (2004/05/10)
060 private final String dbid ; // ãƒ??タベã?ス接続å?ID
061 private final boolean official ; // カラãƒ?ƒªソースから作æ?されたかどã�?�‹ // 3.6.0.7 (2004/11/06)
062
063 private final int checkLevel ; // DBColumn の 整合æ?チェãƒ?‚¯を行うレベルを規定しますã?
064
065 private final Selection selection ; // 4.0.0.0 (2007/11/07)
066
067 private final String eventColumn ; // 4.3.6.0 (2009/04/01) イベントカラãƒ?
068 private final String rawEditParameter; // 4.3.6.0 (2009/04/01) {@XXXX}の変換がされてã�?�ªã�?”Ÿパラメータ
069 private final String rawRendParameter; // 5.1.7.0 (2009/04/01) {@XXXX}の変換がされてã�?�ªã�?”Ÿパラメータ
070 private final String eventURL ; // 4.3.6.0 (2009/04/01) イベントカラãƒ?�§利用するURL
071
072 private final String useSLabel ; // 5.5.1.0 (2012/04/03) MENUのベã?ス表示のåˆ?‚Š替ã�?
073 private final String noDisplayVal ; // 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設å®?
074
075 /**
076 * DBColumnConfig オブジェクトより作æ?されるコンストラクター
077 * すべてのæƒ??は、インスタンス作æ?時に設定しますã?
078 * こã?オブジェクトã?ã€?¼‘度作æ?されると変更されることはありませんã€?
079 *
080 * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
081 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャãƒ?‚·ュする
082 * @og.rev 4.3.6.0 (2009/04/01) eventColumnの対å¿?
083 * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
084 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対å¿?
085 * @og.rev 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設定ã?noDisplayVal追åŠ?
086 * @og.rev 5.7.3.0 (2014/02/07) SelectionFactory 対å¿?
087 *
088 * @param lang è¨?ª?
089 * @param clmData カラãƒ?ƒ‡ータオブジェクãƒ?
090 * @param lblData ラベルãƒ??タオブジェクãƒ?
091 * @param cdData コードデータオブジェクãƒ?
092 */
093 public DBColumn( final String lang,
094 final ColumnData clmData ,
095 final LabelData lblData ,
096 final CodeData cdData ) {
097 this.lang = lang ;
098 this.columnData = clmData ;
099 this.labelData = lblData ;
100 this.codeData = cdData ;
101
102 writable = true ;
103
104 try {
105 dbType = DBTypeFactory.newInstance( columnData.getDbType() );
106 }
107 catch( RuntimeException ex ) {
108 String errMsg = "dbType の作æ?に失敗しましたã€?
109 + " name=[" + columnData.getName() + "]"
110 + " dbType=[" + columnData.getDbType() + "] "
111 + ex.getMessage();
112 throw new HybsSystemException( errMsg,ex );
113 }
114
115 rendAttri = null ;
116 editAttri = null ;
117 addNoValue = false ;
118 official = true ; // 3.6.0.7 (2004/11/06)
119 checkLevel = -1;
120 dbid = null ; // 標準から作æ?されるカラãƒ?‚ªブジェクトã?、DEFAULT 接続å?を設定するã?
121
122 eventColumn = null; // 4.3.6.0 (2009/04/01)
123 rawEditParameter = clmData.getEditorParam(); // 4.3.6.0 (2009/04/01)
124 rawRendParameter = clmData.getRendererParam(); // 5.1.7.0 (2010/06/01)
125 eventURL = null; // 4.3.6.0 (2009/04/01)
126
127 useSLabel = "auto"; // 5.5.1.0
128 noDisplayVal= null; // 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設å®?
129
130 String def = columnData.getDefault();
131 if( def != null ) { defValue = def; }
132 else { defValue = dbType.getDefault() ; }
133
134 // 4.0.0.0 (2007/11/07)
135 // selection = ( codeData == null ? null : new Selection_CODE( codeData ) );
136 // 5.7.3.0 (2014/02/07) SelectionFactory 対å¿?
137 selection = ( codeData == null ? null : SelectionFactory.newSelection( "MENU",codeData ) );
138
139 try {
140 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this );
141 cellEditor = DBCellFactory.newEditor( columnData.getEditor(), this );
142 }
143 catch( RuntimeException ex ) {
144 String errMsg = "Renderer,Editor の作æ?に失敗しましたã€?
145 + " name=[" + columnData.getName() + "]"
146 + " Renderer=[" + columnData.getRenderer() + "] "
147 + " Editor=[" + columnData.getEditor() + "] "
148 + ex.getMessage();
149 throw new HybsSystemException( errMsg,ex );
150 }
151 }
152
153 /**
154 * DBColumnConfig オブジェクトより作æ?されるコンストラクター
155 * すべてのæƒ??は、インスタンス作æ?時に設定しますã?
156 * こã?オブジェクトã?ã€?¼‘度作æ?されると変更されることはありませんã€?
157 *
158 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャãƒ?‚·ュする
159 * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
160 * @og.rev 5.1.8.0 (2010/07/01) メソãƒ?ƒ‰名変更(getDefValue â‡?getDefault)
161 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対å¿?
162 * @og.rev 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設定ã?noDisplayVal追åŠ?
163 * @og.rev 5.6.6.0 (2013/07/05) codeKeyVal 属æ?を使用した、Selection_KEYVAL オブジェクトã?作æ?
164 * @og.rev 5.7.3.0 (2014/02/07) SelectionFactory 対å¿?
165 *
166 * @param config DBColumnConfigオブジェクãƒ?
167 */
168 public DBColumn( final DBColumnConfig config ) {
169 lang = config.getLang() ;
170
171 columnData = config.getColumnData();
172 labelData = config.getLabelData();
173 codeData = config.getCodeData();
174
175 writable = config.isWritable();
176 dbType = DBTypeFactory.newInstance( columnData.getDbType() );
177 rendAttri = config.getRendererAttributes();
178 editAttri = config.getEditorAttributes();
179 addNoValue = config.isAddNoValue();
180 official = config.isOfficial(); // 3.6.0.7 (2004/11/06)
181 dbid = config.getDbid();
182
183 eventColumn = config.getEventColumn(); // 4.3.6.0 (2009/04/01)
184 rawEditParameter = config.getRawEditParameter(); // 4.3.6.0 (2009/04/01)
185 rawRendParameter = config.getRawRendParameter(); // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
186 eventURL = config.getEventURL(); // 4.3.6.0 (2009/04/01)
187
188 useSLabel = config.getUseSLabel(); // 5.5.1.0 (2012/04/03)
189 noDisplayVal = config.getNoDisplayVal(); // 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設å®?
190
191 // DBColumn の 整合æ?チェãƒ?‚¯を行うレベルを規定しますã?
192 String CHECK_LEVEL = HybsSystem.sys( "DB_OFFICIAL_COLUMN_CHECK_LEVEL" );
193 if( !official && ( CHECK_LEVEL != null && CHECK_LEVEL.length() > 0 ) ) {
194 checkLevel = Integer.parseInt( CHECK_LEVEL );
195 }
196 else {
197 checkLevel = -1;
198 }
199
200 // String def = config.getDefValue();
201 String def = config.getDefault();
202 if( def != null ) { defValue = def; }
203 else { defValue = dbType.getDefault() ; }
204
205 // 4.0.0.0 (2007/11/07)
206 // selection = ( codeData == null ? null : new Selection_CODE( codeData ) );
207 // 5.6.6.0 (2013/07/05) codeKeyVal 属æ?を使用した、Selection_KEYVAL オブジェクトã?作æ?
208 // 優先é?位ã?、codeData オブジェクトで、codeKeyVal を利用したSelectionは、DBColumnConfig からのみ作æ?可能
209 if( codeData != null ) {
210 // 5.7.3.0 (2014/02/07) SelectionFactory 対å¿?
211 // selection = new Selection_CODE( codeData );
212 selection = SelectionFactory.newSelection( "MENU",codeData );
213 }
214 else {
215 String codeKeyVal = config.getCodeKeyVal();
216 if( codeKeyVal != null ) {
217 // 5.7.3.0 (2014/02/07) SelectionFactory 対å¿?
218 // selection = new Selection_KEYVAL( codeKeyVal );
219 selection = SelectionFactory.newSelection( "KEYVAL", codeKeyVal );
220 }
221 else {
222 selection = null;
223 }
224 }
225
226 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this );
227 cellEditor = DBCellFactory.newEditor( columnData.getEditor(),this );
228 }
229
230 /**
231 * è¨?ªžを返しますã?
232 *
233 * @return è¨?ª?
234 */
235 public String getLang() {
236 return lang;
237 }
238
239 /**
240 * カラãƒ?��を返しますã?
241 *
242 * @return カラãƒ?��
243 */
244 public String getName() {
245 return columnData.getName();
246 }
247
248 /**
249 * カラãƒ??ラベル名を返しますã?
250 *
251 * @return カラãƒ??ラベルå�?
252 */
253 public String getLabel() {
254 return labelData.getLabel();
255 }
256
257 /**
258 * カラãƒ??ラベル名を返しますã?
259 *
260 * @return カラãƒ??ラベルå�?名前(短))
261 */
262 public String getShortLabel() {
263 return labelData.getShortLabel();
264 }
265
266 /**
267 * カラãƒ??ラベル名を返しますã?
268 *
269 * @return カラãƒ??ラベルå�?名前(長))
270 */
271 public String getLongLabel() {
272 return labelData.getLongLabel();
273 }
274
275 /**
276 * カラãƒ??クラスを文字å?にした名称を返しますã?
277 * これは?ŒHTML上ã?å�?¨®タグに?Œデータベã?ス定義に応じたクラス名を
278 * 表しますã?(VARCHAR2、NUMBER など)
279 *
280 * これは、カラãƒ??ãƒ??タタイãƒ?X,S9など)と機è?çš?�«重è¤?�—ますが?¤
281 * そã?カラãƒ?�Œ、大まかなåˆ?¡žで、文字å?であるかã?数字であるかを示しますã?
282 *
283 * 画面表示上ã?右å¯?�›、左å¯?�›ã‚??IMEのON/OFFなどの CSSファイルのæŒ?®šã?ã€?
284 * カラãƒ??ãƒ??タタイãƒ?X,S9など)ですが、テーブルソート時のソート条件
285 * は、この クラスæ–?—å?(VARCHAR2、NUMBER)を参照しますã?
286 *
287 * @return カラãƒ??クラスを文字å?にした名称(VARCHAR2、NUMBER など)
288 */
289 public String getClassName() {
290 return columnData.getClassName();
291 }
292
293 /**
294 * フィールドã?ãƒ??タ長を返しますã?
295 * 通常は、整数型ã?æ–?—å?とãƒ??タ長は同じですが,小数点を表すデータ長は
296 * x,y 形式ã?場合ã?x + 2 桁で表されますã?(マイナス記号と小数点記号)
297 * 7,3 はã€?xxxx,yyy のフォーマットで、データ長はã€? になりますã?
298 *
299 * @og.rev 2.1.1.2 (2002/11/21) æœ?¤§桁数入力時の桁数チェãƒ?‚¯の間違ã�?‚’訂正ã€?
300 * @og.rev 4.0.0.0 (2005/01/31) メソãƒ?ƒ‰名変更 getMaxlength() â†?getTotalSize()
301 *
302 * @return ãƒ??タ長定義æ–?—å?
303 */
304 public int getTotalSize() {
305 return columnData.getTotalSize();
306 }
307
308 /**
309 * フィールドã?使用桁数を返しますã?
310 * 少数æŒ?®šã?場合ã?ã€?7,3" のようなカンマで整数部、小数部を区åˆ?�£た書式になりますã?
311 * 7,3 はã€?xxxx,yyy のフォーマットで、整数部?”桁ã?小数部?“桁を意味しますã?
312 *
313 * @return 使用桁数
314 */
315 public String getMaxlength() {
316 return columnData.getMaxlength();
317 }
318
319 /**
320 * フィールドã?整数部のãƒ??タ長を返しますã?
321 * 通常は、整数型ã?æ–?—å?とãƒ??タ長は同じですが,小数点を表すデータ長は
322 * x,y 形式ã?場合ã?x - y 桁で表されますã?(マイナス記号含まã�?
323 * 7,3 はã€?xxxx,yyy のフォーマットで、データ長はã€? になりますã?
324 *
325 * @return ãƒ??タ長定義æ–?—å?
326 */
327 public int getSizeX() {
328 return columnData.getSizeX() ;
329 }
330
331 /**
332 * フィールドã?小数部のãƒ??タ長を返しますã?
333 * 通常は、整数型ã?æ–?—å?ではã€? になりますが,小数点を表すデータ長は
334 * x,y 形式ã?場合ã?y 桁で表されますã?
335 * 7,3 はã€?xxxx,yyy のフォーマットで、データ長はã€? になりますã?
336 *
337 * @return ãƒ??タ長定義æ–?—å?
338 */
339 public int getSizeY() {
340 return columnData.getSizeY() ;
341 }
342
343 /**
344 * カラãƒ??表示桁数を返しますã?
345 * viewLength は、設定したå?合ã?み、使用できますã?通常は、null が返りますã?
346 *
347 * @og.rev 3.5.5.5 (2004/04/23) 新規追åŠ?
348 * @og.rev 4.0.0.0 (2005/01/31) メソãƒ?ƒ‰名変更 getSize() â†?getViewLength()
349 *
350 * @return カラãƒ??æ–?—桁数
351 */
352 public String getViewLength() {
353 return columnData.getViewLength();
354 }
355
356 /**
357 * カラãƒ?�Œ書き込み可能かどã�?�‹を返しますã?
358 *
359 * @return カラãƒ?�Œ書き込み可能かどã�?�‹
360 */
361 public boolean isWritable() {
362 return writable;
363 }
364
365 /**
366 * ãƒ??タの値そã?もã?ではなくã?そã?値のラベルæ–?—を返しますã?
367 *
368 * @og.rev 3.5.5.4 (2004/04/15) value ã�?null の場合ã?ã€?"(ゼロストリング)にするã€?
369 *
370 * @param value 入力å?
371 *
372 * @return ãƒ??タ表示用のæ–?—å?
373 */
374 public String getRendererValue( final String value ) {
375 return cellRenderer.getValue( (value != null ) ? value : "" );
376 }
377
378 /**
379 * ãƒ??タ表示用のHTMLæ–?—å?を作æ?しますã?
380 * 行番号毎に異なるå?を返すことの出来ã‚?DBCellRenderer を使用することがå?来ますã?
381 *
382 * @og.rev 3.5.5.7 (2004/05/10) 行番号に無関係に、å?を返すように変更しますã?
383 * @og.rev 4.0.0.0 (2005/11/30) 行番号に対応したå?を返すように変更しますã?
384 *
385 * @param row 行番号
386 * @param value 入力å?
387 *
388 * @return ãƒ??タ編é›?”¨のæ–?—å?
389 */
390 public String getRendererValue( final int row,final String value ) {
391 return cellRenderer.getValue( row,(value != null ) ? value : "" );
392 }
393
394 /**
395 * ãƒ??タ編é›?”¨のHTMLæ–?—å?を作æ?しますã?
396 *
397 * @og.rev 3.5.5.4 (2004/04/15) value ã�?null の場合ã?ã€?"(ゼロストリング)にするã€?
398 *
399 * @param value 入力å?
400 *
401 * @return ãƒ??タ編é›?”¨のæ–?—å?
402 */
403 public String getEditorValue( final String value ) {
404 return cellEditor.getValue( (value != null ) ? value : "" );
405 }
406
407 /**
408 * ãƒ??タ編é›?”¨のHTMLæ–?—å?を作æ?しますã?
409 * 行番号付ã?編é›?ƒ‡ータを作æ?しますã?名前_行番号 で登録する為ã€?
410 * リクエスト情報を1つ毎ã?フィールドで処ç�?�§きますã?
411 *
412 * @param row 行番号
413 * @param value 入力å?
414 *
415 * @return ãƒ??タ編é›?”¨のæ–?—å?
416 */
417 public String getEditorValue( final int row,final String value ) {
418 return cellEditor.getValue( row,(value != null ) ? value : "" );
419 }
420
421 /**
422 * ãƒ??タ出力用の固定長æ–?—å?を作æ?しますã?
423 * HOST送信用桁数がセãƒ?ƒˆされてã�?‚Œば、そちらを優先しますã?
424 *
425 * @og.rev 3.5.4.5 (2004/01/23) エンコード指定に変更しますã?
426 *
427 * @param value 対象の値
428 * @param encode 固定長で変換するæ–?—エンコーãƒ?
429 *
430 * @return ãƒ??タ編é›?”¨のæ–?—å?
431 */
432 public String getWriterValue( final String value,final String encode ) {
433 return dbType.valueFill( value ,columnData.getSizeX(), columnData.getSizeY(), encode );
434 }
435
436 /**
437 * ãƒ??タの表示用レンãƒ?ƒ©ーを返しますã?
438 *
439 * @og.rev 3.8.0.2 (2005/07/11) 新規追åŠ?
440 *
441 * @return ãƒ??タの表示用レンãƒ?ƒ©ー
442 */
443 public String getRenderer() {
444 return columnData.getRenderer() ;
445 }
446
447 /**
448 * ãƒ??タの編é›?”¨エãƒ?‚£ターを返しますã?
449 *
450 * @og.rev 3.8.0.2 (2005/07/11) 新規追åŠ?
451 *
452 * @return ãƒ??タの編é›?”¨エãƒ?‚£ター
453 */
454 public String getEditor() {
455 return columnData.getEditor() ;
456 }
457
458 /**
459 * æ–?—種別名を返しますã?
460 * カラãƒ??æ–?—種別名名称を返しますã?
461 * これは?ŒHTML上ã?å�?¨®タグに?Œデータベã?ス定義に応じたクラスã‚?
462 * セãƒ?ƒˆã�?CSS(Cascading Style Sheet)の class="xxxxx" とする事により
463 * å�?¨®スタイルを表現するのに使用しますã?
464 *
465 * ここでは, カラãƒ?ƒªソースの DBTYPE 属æ?でæŒ?®šã?æ–?—å?(X,S9,KXなど)を返しますã?
466 *
467 * @return ãƒ??タのæ–?—種別(X,KX,S9 など)
468 */
469 public String getDbType() {
470 return columnData.getDbType() ;
471 }
472
473 /**
474 * ãƒ??タのNATIVEの型ã?識別コードを返しますã?
475 *
476 * @og.rev 4.1.1.2 (2008/02/28) Enumåž?fukurou.model.NativeType)に変更
477 *
478 * @return NATIVEの型ã?識別コーãƒ?DBType で規å®?
479 * @see org.opengion.fukurou.model.NativeType
480 */
481 public NativeType getNativeType() {
482 return dbType.getNativeType();
483 }
484
485 /**
486 * そã?カラãƒ??,ãƒ?ƒ•ォルトå?の値を返しますã?
487 *
488 * カラãƒ?ƒªソースに ãƒ?ƒ•ォルト情報が登録されてã�?‚‹場合ã?,そã?値を返しますã?
489 * ãƒ?ƒ•ォルトå?が設定されてã�?�ªã�??合ã?, null を返しますã?
490 *
491 * @return ãƒ?ƒ•ォルトå?(無ければ null)
492 */
493 public String getDefault() {
494 return defValue;
495 }
496
497 /**
498 * 表示用レンãƒ?ƒ©ーのパラメータを取得しますã?
499 *
500 * @og.rev 3.4.0.0 (2003/09/01) 新規追åŠ?
501 *
502 * @return 表示用レンãƒ?ƒ©ーのパラメータ
503 */
504 public String getRendererParam() {
505 return columnData.getRendererParam();
506 }
507
508 /**
509 * 編é›?”¨エãƒ?‚£ターのパラメータを取得しますã?
510 *
511 * @og.rev 3.4.0.0 (2003/09/01) 新規追åŠ?
512 *
513 * @return 編é›?”¨エãƒ?‚£ターのパラメータ
514 */
515 public String getEditorParam() {
516 return columnData.getEditorParam();
517 }
518
519 /**
520 * ãƒ??タタイプã?パラメータを取得しますã?
521 *
522 * @og.rev 3.4.0.0 (2003/09/01) 新規追åŠ?
523 *
524 * @return ãƒ??タタイプã?パラメータ
525 */
526 public String getDbTypeParam() {
527 return columnData.getDbTypeParam();
528 }
529
530 /**
531 * カラãƒ?ƒールを取得しますã?
532 *
533 * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
534 *
535 * @return カラãƒ?ƒール
536 */
537 public String getRoles() {
538 return columnData.getRoles();
539 }
540
541 /**
542 * カラãƒ?‚ªブジェクトã?ロールモードを返しますã?
543 *
544 * @og.rev 4.3.0.0 (2008/07/04) ロールモードã?ルチ対å¿?
545 *
546 * @return カラãƒ?‚ªブジェクトã?ロールモーãƒ?
547 */
548 public RoleMode getRoleMode() {
549 return columnData.getRoleMode();
550 }
551
552 /**
553 * 接続å?IDを返しますã?
554 *
555 * @return 接続å?ID
556 */
557 public String getDbid() {
558 return dbid;
559 }
560
561 /**
562 * String引数のæ–?—å?を+1した文字å?を返しますã?
563 * これは、英字ã?場å�?A,B,C など)は、B,C,D のように,æœ?µ‚桁ã?æ–?—コードを
564 * ?‹ï¼?しますã?
565 * æ–?—å?が数字タイプã?場合ã?, 数字に変換してã€?1 しますã?(桁上がりもあり)
566 * 混在タイプã?場合ã?,æœ?¾Œã?桁だけを確認して ?‹1しますã?
567 * 引数ã�?null の場合と、ゼロæ–?—å?("")の場合ã?,引数ã‚?そã?まま返しますã?
568 *
569 * ※ 機è?拡張?š第?’引数にæŒ?®šã?æ–?—å?(数字ã?日付ç?を指定する事でã€?
570 * 引数のæ–?—å?に、任意ã?値を加算できるようにしますã?
571 * ただしã?すべての DBTypeではなくã?ある程度特定しますã?
572 * 対象外ã? DBTypeで、第?’引数ã�?null 出なã�??合ã?、Exception ã‚?Throwsしますã?
573 * 第?’引数がã?null の場合ã?、従来と同じ?‹1しますã?
574 *
575 * @og.rev 5.6.0.3 (2012/01/24) ADD に、引数の値を加算する機è?を追åŠ?�—ますã?
576 *
577 * @param value 引数のæ–?—å?
578 * @param add åŠ?®—する文字å?(null の場合ã?、従来と同じã€?1 しますã?)
579 *
580 * @return 引数のæ–?—å?を+1した文字å?。またã?、任意ã?値を加算した文字å?ã€?
581 */
582 // public String valueAdd( final String value ) {
583 public String valueAdd( final String value,final String add ) {
584 // return dbType.valueAdd( value );
585
586 // DBType の実è£??関係で、旧メソãƒ?ƒ‰は残しておきますã?
587 if( add == null || add.isEmpty() ) {
588 return dbType.valueAdd( value );
589 }
590 else {
591 return dbType.valueAdd( value , add );
592 }
593 }
594
595 /**
596 * ãƒ??タが登録可能かどã�?�‹をチェãƒ?‚¯しますã?
597 * ãƒ??タがエラーの場合ã?、そのエラーå†?®¹を返しますã?
598 *
599 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追åŠ?
600 * @og.rev 3.6.0.7 (2004/11/06) official属æ?がfalseの場合ã?チェãƒ?‚¯レベルに対応したチェãƒ?‚¯を行うã€?
601 * @og.rev 3.8.0.8 (2005/10/03) 企画改å–?61200-050921-02 ラベルからHTMLタグを削除するã€?
602 * @og.rev 5.2.2.0 (2010/11/01) å†?ƒ¨処ç�?‚’ã€?valueCheck( value , true ) に委譲ã€?
603 *
604 * @param value チェãƒ?‚¯対象の値
605 *
606 * @return エラーå†?®¹ 正常時ã? null
607 * @see #valueCheck( String , boolean )
608 */
609 public ErrorMessage valueCheck( final String value ) {
610 return valueCheck( value , true );
611 }
612
613 /**
614 * ãƒ??タが登録可能かどã�?�‹をチェãƒ?‚¯しますã?
615 * ãƒ??タがエラーの場合ã?、そのエラーå†?®¹を返しますã?
616 *
617 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追åŠ?
618 * @og.rev 3.6.0.7 (2004/11/06) official属æ?がfalseの場合ã?チェãƒ?‚¯レベルに対応したチェãƒ?‚¯を行うã€?
619 * @og.rev 3.8.0.8 (2005/10/03) 企画改å–?61200-050921-02 ラベルからHTMLタグを削除するã€?
620 * @og.rev 5.2.2.0 (2010/11/01) 厳å¯?�«チェãƒ?‚¯(isStrict=true)するフラグを追åŠ?
621 *
622 * @param value チェãƒ?‚¯対象の値
623 * @param isStrict 厳å¯?�«チェãƒ?‚¯(isStrict=true)するかどã�?�‹
624 *
625 * @return エラーå†?®¹ 正常時ã? null
626 */
627 // public ErrorMessage valueCheck( final String value ) {
628 public ErrorMessage valueCheck( final String value , final boolean isStrict ) {
629
630 // 3.8.0.8 (2005/10/03) ラベルからHTMLタグを削除するã€?
631 String lbl = labelData.getLabel() ;
632 if( lbl.indexOf( '<' ) >= 0 ) {
633 lbl = lbl.replaceAll( "<[^>]*>","" );
634 }
635
636 // 5.2.2.0 (2010/11/01) 厳å¯?�«チェãƒ?‚¯(isStrict=true)するフラグを追åŠ?
637 // ErrorMessage errMsg = dbType.valueCheck( lbl,value,columnData.getSizeX(), columnData.getSizeY(),columnData.getDbTypeParam() );
638 ErrorMessage errMsg = dbType.valueCheck( lbl,value,columnData.getSizeX(), columnData.getSizeY(),columnData.getDbTypeParam() , isStrict );
639 if( checkLevel >= 0 ) {
640 // ERR0034:æŒ?®šã?カラãƒ?‚ªブジェクトには、カラãƒ?ƒªソースが存在しません。name={0} label={1}
641 errMsg.addMessage( 0,checkLevel,"ERR0034", columnData.getName(),labelData.getLabel() );
642 }
643 return errMsg ;
644 }
645
646 /**
647 * エãƒ?‚£ターで編é›?�•れたãƒ??タを登録する場合に、データそã?もã?ã‚?
648 * 変換して、実登録ãƒ??タを作æ?しますã?
649 * 例えば,大æ–?—ã?みのフィールドならã?大æ–?—化しますã?
650 * 実登録ãƒ??タの作æ?は、DBType オブジェクトを利用しますã?で,
651 * これと DBCellEditor とがアンマッチã?場合ã?、うまくデータ変換
652 * されなã�?�¯能性がありますã?で、注意願いますã?
653 *
654 * @param value ä¸?ˆ¬に編é›?ƒ‡ータとして登録されたデータ
655 *
656 * @return 修正後ã?æ–?—å?(ä¸?ˆ¬にãƒ??タベã?スに登録するãƒ??タ)
657 */
658 public String valueSet( final String value ) {
659 return dbType.valueSet( value );
660 }
661
662 /**
663 * action でæŒ?®šされたコマンドを実行して、å?の変換を行いますã?
664 * oldValue(旧ãƒ??タ)は、å?のDBTableModelに設定されてã�?�Ÿ値ですã?通常はã€?
665 * こã?値を使用してカラãƒ?¯Žに変換を行いますã?newValue(新ãƒ??タ)は、引数で
666 * æŒ?®šされた新しい値ですã?こã?値には、パラメータを指定して変換方法を
667 * 制御することも可能ですã?
668 * æŒ?®šã?アクションがカラãƒ?�§処ç�?�§きなã�??合ã?、エラーになりますã?
669 *
670 * @param action アクションコマンãƒ?
671 * @param oldValue 入力データ(旧ãƒ??タ)
672 * @param newValue 入力データ(新ãƒ??タ)
673 *
674 * @return 実行後ã?ãƒ??タ
675 */
676 public String valueAction( final String action,final String oldValue,final String newValue ) {
677 return dbType.valueAction( action,oldValue,newValue );
678 }
679
680 /**
681 * å†?ƒ¨の設定情報オブジェクトを返しますã?
682 * こã?オブジェクトを ローカルで書き換えて、DBColumn を作るようにしますã?
683 *
684 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig 関係ã?見直しã?
685 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編é›?ƒ‘ラメータ、文字パラメータの追åŠ??
686 * @og.rev 3.5.5.5 (2004/04/23) size 属æ?の意味を変更、maxlength 属æ?を追åŠ??
687 * @og.rev 3.5.5.8 (2004/05/20) codeName 属æ?を追åŠ??
688 * @og.rev 3.6.0.7 (2004/11/06) カラãƒ?ƒªソースから作æ?されたかどã�?�‹(official属æ?追åŠ?
689 * @og.rev 5.1.8.0 (2010/07/01) すべての属æ?を設定するよã�?�«しますã?
690 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対å¿?
691 * @og.rev 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設定ã?noDisplayVal追åŠ?
692 *
693 * @return 設定情報オブジェクãƒ?
694 */
695 public DBColumnConfig getConfig() {
696 // 互換性確保ã?ため、DBColumnConfig の コンストラクタは修正してã�?�¾せんã€?
697
698 DBColumnConfig config =
699 new DBColumnConfig(
700 lang ,
701 columnData.getName() ,
702 labelData ,
703 columnData.getClassName() ,
704 columnData.getMaxlength() ,
705 String.valueOf( writable ) ,
706 columnData.getRenderer() ,
707 columnData.getEditor() ,
708 codeData ,
709 columnData.getDbType() ,
710 defValue ,
711 columnData.getRendererParam() ,
712 columnData.getEditorParam() ,
713 columnData.getDbTypeParam() ,
714 columnData.getRoles() , // 4.0.0 (2005/11/30)
715 official , // 3.6.0.7 (2004/11/06)
716 dbid ) ;
717 config.setViewLength( columnData.getViewLength() );
718
719 // 5.1.8.0 (2010/07/01) すべての属æ?を設定するよã�?�«しますã?
720 // コンストラクタは修正してã�?�ªã�?�Ÿめã?セãƒ?‚¿ーメソãƒ?ƒ‰経由で渡しますã?
721 config.setRendererAttributes( rendAttri );
722 config.setEditorAttributes( editAttri );
723 config.setAddNoValue( addNoValue );
724 config.setEventColumn( eventColumn );
725 config.setRawEditParameter( rawEditParameter );
726 config.setRawRendParameter( rawRendParameter );
727 config.setEventURL( eventURL );
728
729 config.setUseSLabel( useSLabel ); // 5.5.1.0 (2012/04/03)
730 config.setNoDisplayVal( noDisplayVal ); // 5.6.2.3 (2013/03/22) 非表示æ–?—ã?設å®?
731
732 return config ;
733 }
734
735 /**
736 * 表示用レンãƒ?ƒ©ーの追åŠ?±žæ?を返しますã?
737 *
738 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクトã?å†?ƒ¨キープをå»?¢
739 *
740 * @return 属æ?リスãƒ?
741 */
742 public Attributes getRendererAttributes() {
743 return rendAttri ;
744 }
745
746 /**
747 * 編é›?”¨エãƒ?‚£ター用の追åŠ?±žæ?を返しますã?
748 *
749 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクトã?å†?ƒ¨キープをå»?¢
750 *
751 * @return 属æ?リスãƒ?
752 */
753 public Attributes getEditorAttributes() {
754 return editAttri ;
755 }
756
757 /**
758 * メニューに空の選択リストを追åŠ?�™るかどã�?�‹を取得しますã?
759 *
760 * @og.rev 3.5.5.7 (2004/05/10) 新規追åŠ?
761 *
762 * @return 空の選択リストを追åŠ?�™るかどã�?�‹(true:追åŠ?�™ã‚?false:追åŠ?�—なã�?
763 */
764 public boolean isAddNoValue() {
765 return addNoValue ;
766 }
767
768 /**
769 * こã?カラãƒ?‚ªブジェクトがカラãƒ?ƒªソースより正式に作られたかどã�?�‹を取得しますã?
770 * カラãƒ?ƒªソースが無ã�??合ã?、仮オブジェクトかãƒ??タベã?スメタãƒ??タより作æ?されますã?
771 * そã?場合ã?、チェãƒ?‚¯機è?が緩くなるためã?正式なカラãƒ?‚ªブジェクトと区別する為に
772 * こã?属æ?を持ちますã?
773 *
774 * @og.rev 3.6.0.7 (2004/11/06) 新規追åŠ?
775 *
776 * @return 正式に作られたかどã�?�‹(true:正å¼?false:暫å®?
777 */
778 public boolean isOfficial() {
779 return official ;
780 }
781
782 /**
783 * カラãƒ??ラベルãƒ??タオブジェクトを返しますã?
784 *
785 * @return カラãƒ??ラベルãƒ??タオブジェクãƒ?
786 */
787 public LabelData getLabelData() {
788 return labelData;
789 }
790
791 /**
792 * カラãƒ??コードデータオブジェクトを返しますã?
793 * コードデータが存在しなã�??合ã?、null を返しますã?
794 * 受け取り側で、null かどã�?�‹判定してから使用してくださいã€?
795 *
796 * @og.rev 5.2.1.0 (2010/10/01) codeData ã�?null でもã?そã?まま返しますã?
797 *
798 * @return カラãƒ??コードデータオブジェクãƒ?
799 */
800 public CodeData getCodeData() {
801 // if( codeData == null ) {
802 // String errMsg = "コードリソースが定義されてã�?�¾せんã€? + HybsSystem.CR
803 // + "name=[" + getName() + "],label=[" + getLabel() + "]" ;
804 // throw new HybsSystemException( errMsg );
805 // }
806 return codeData;
807 }
808
809 /**
810 * æœ?¤§入力サイズ(maxlength)より、実際のフィールドã?サイズを求めますã?
811 *
812 * maxlength : colums_maxsize ?? â‡?size="maxlength" 変換しませんã€?
813 *
814 * ただしã?maxlength がã?colums_maxsize をè¶?�ˆるå?合ã?、colums_maxsize としますã?
815 *
816 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソãƒ?ƒ‰ã‚?XHTMLTag から DBColumn へ移å‹?
817 * @og.rev 4.0.0.0 (2007/02/05) ADJUSTMENT 処ç�?‚’å»?¢しますã?(CSSにて対å¿?
818 *
819 * @param maxlength 実際のæœ?¤§桁数
820 * @param colums_maxsize 表示上ã?æœ?¤§桁数ã€?
821 *
822 * @return 表示すべきサイズ
823 * @see #getFieldSize( int )
824 */
825 public int getFieldSize( final int maxlength,final int colums_maxsize ) {
826 int size = maxlength;
827
828 if( size <= 0 || size > colums_maxsize ) {
829 size = colums_maxsize;
830 }
831
832 return size;
833 }
834
835 /**
836 * æœ?¤§入力サイズ(maxlength)より、実際のフィールドã?サイズを求めますã?
837 *
838 * maxlength : colums_maxsize ?? â‡?size="maxlength" 変換しませんã€?
839 *
840 * ただしã?maxlength がã?COLUMNS_MAXSIZE をè¶?�ˆるå?合ã?、COLUMNS_MAXSIZE としますã?
841 *
842 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソãƒ?ƒ‰ã‚?XHTMLTag から DBColumn へ移å‹?
843 * @og.rev 4.0.0.0 (2007/02/05) ADJUSTMENT 処ç�?‚’å»?¢しますã?(CSSにて対å¿?
844 *
845 * @param maxlength 実際のæœ?¤§桁数
846 *
847 * @return 表示すべきサイズ
848 * @see #getFieldSize( int ,int )
849 */
850 public int getFieldSize( final int maxlength ) {
851 return getFieldSize( maxlength,COLUMNS_MAXSIZE );
852 }
853
854 /**
855 * コードリソースSelectionオブジェクトを返しますã?
856 *
857 * @og.rev 4.0.0.0 (2007/11/02) 新規追åŠ?
858 * @og.rev 5.7.3.0 (2014/02/07) null 対å¿?コードリソースの設定不良ç?
859 *
860 * @return コードSelectionオブジェクãƒ?
861 */
862 public Selection getSelection() {
863 // 5.6.1.1 (2013/02/08) 暫定å?置。とりあえずエラーは発生させなã�??
864 // if( selection == null ) {
865 // String errMsg = "コードリソースが定義されてã�?�¾せんã€? + HybsSystem.CR
866 // + "name=[" + getName() + "],label=[" + getLabel() + "]" ; // 5.1.8.0 (2010/07/01) errMsg 修正
867 // throw new HybsSystemException( errMsg );
868 // }
869
870 // 5.7.3.0 (2014/02/07) null 対å¿?コードリソースの設定不良ç?
871 if( selection == null ) {
872 String errMsg = "clm=[" + getName() + "],label=[" + getLabel() + "]のコードリソースが定義されてã�?�¾せんã€? ;
873 System.err.println( "警告ï¼? + errMsg );
874 return SelectionFactory.newSelection( "NULL",errMsg );
875 }
876
877 return selection ;
878 }
879
880 /**
881 * イベントカラãƒ?親カラãƒ?
882 *
883 * @og.rev 4.3.6.0 (2009/04/01)
884 *
885 * @return イベントカラãƒ?
886 */
887 public String getEventColumn() {
888 return eventColumn ;
889 }
890
891 // /**
892 // * {@XXXX}を変換してã�?�ªã�?ж態ã?編é›?ƒ‘ラメータを返す
893 // *
894 // * @og.rev 4.3.6.0 (2009/04/01)
895 // *
896 // * @return 生編é›?ƒ‘ラメータ
897 // */
898 // public String getRawParam() {
899 // return rawEditParameter ;
900 // }
901
902 /**
903 * {@XXXX}を変換してã�?�ªã�?ж態ã?編é›?ƒ‘ラメータを返しますã?
904 *
905 * @og.rev 4.3.6.0 (2009/04/01)
906 *
907 * @return 生編é›?ƒ‘ラメータ
908 */
909 public String getRawEditParam() {
910 return rawEditParameter ;
911 }
912
913 /**
914 * {@XXXX}を変換してã�?�ªã�?ж態ã?編é›?ƒ‘ラメータを返しますã?
915 *
916 * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ン実è£?¦‹直ã�?
917 *
918 * @return 生表示パラメータ
919 */
920 public String getRawRendParam() {
921 return rawRendParameter ;
922 }
923
924 /**
925 * eventColumn利用時にJSで利用するURL
926 *
927 * @og.rev 4.3.6.0 (2009/04/01)
928 *
929 * @return イベンãƒ?RL
930 */
931 public String getEventURL() {
932 return eventURL ;
933 }
934
935 /**
936 * 引数のタグæ–?—å?に対して、イベントカラãƒ??実行にå¿?¦�なspanタグを付加した
937 * æ–?—å?を返しますã?
938 *
939 * @param tag タグæ–?—å?
940 * @param initVal 子カラãƒ??初期値
941 * @param writable タグの要ç´?�Œ書き込み可能かどã�?�‹
942 *
943 * @return spanタグを付加したタグæ–?—å?
944 */
945 public String getEventColumnTag( final String tag, final String initVal, final boolean writable ) {
946 return getEventColumnTag( tag, initVal, -1, writable );
947 }
948
949 /**
950 * 引数のタグæ–?—å?に対して、イベントカラãƒ??実行にå¿?¦�なspanタグを付加した
951 * æ–?—å?を返しますã?
952 *
953 * @param tag タグæ–?—å?
954 * @param initVal 子カラãƒ??初期値
955 * @param row 行番号
956 * @param writable タグの要ç´?�Œ書き込み可能かどã�?�‹
957 *
958 * @return spanタグを付加したタグæ–?—å?
959 */
960 public String getEventColumnTag( final String tag, final String initVal, final int row, final boolean writable ) {
961 TagBuffer span = new TagBuffer( "span" );
962 span.add( "class", HybsSystem.EVENT_COLUMN_CLASS );
963 // span.add( HybsSystem.EVENT_COLUMN_ID, columnData.getName() + ( row < 0 ? "" : HybsSystem.JOINT_STRING + String.valueOf( row ) ) );
964 span.add( HybsSystem.EVENT_COLUMN_ID, columnData.getName() + ( row < 0 ? "" : HybsSystem.JOINT_STRING + row ) );
965 span.add( HybsSystem.EVENT_COLUMN_INITVAL, initVal );
966 span.add( HybsSystem.EVENT_COLUMN_WRITABLE, String.valueOf( writable ) );
967 span.setBody( tag );
968 return span.makeTag();
969 }
970
971 /**
972 * セãƒ?ƒˆされてã�?‚‹表示パラメータ、編é›?ƒ‘ラメータに"{@XXXX}"が含まれてã�?‚‹ã�?パラメーターのパã?スがå¿?¦�か)ã‚?
973 * 返しますã?
974 *
975 * @return "{@XXXX}"が含まれてã�?‚‹ã�?含まれてã�?‚‹場å�?rue)
976 */
977 public boolean isNeedsParamParse() {
978 return ( columnData.getRendererParam() != null && columnData.getRendererParam().indexOf( "{@" ) >= 0 )
979 || ( columnData.getEditorParam() != null && columnData.getEditorParam().indexOf( "{@" ) >= 0 );
980 }
981
982 /**
983 * ラベル短ベã?スのメニューにするかどã�?�‹
984 *
985 * @og.rev 5.5.1.0 (2012/04/03)
986 *
987 * @return イベントカラãƒ?
988 */
989 public String getUseSLabel() {
990 return useSLabel ;
991 }
992
993 /**
994 * 非表示æ–?—å?を返しますã?
995 *
996 * これは、例えば、数字型の場合ã?ã€? がデフォルトなどの場合ã?
997 * あえて表示したくなã�?�ªどのケースに使ã�?�¾すã?
998 * そã?ような状況が設定されてã�?�ªã�??合ã?、null が返されますã?
999 *
1000 * @og.rev 5.6.2.3 (2013/03/22) 新規追åŠ?
1001 *
1002 * @return 非表示æ–??
1003 */
1004 public String getNoDisplayVal() {
1005 return noDisplayVal ;
1006 }
1007 }