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