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