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