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    //       * {&#064;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             * {&#064;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             * {&#064;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             * セãƒ?ƒˆされてã�?‚‹表示パラメータ、編é›?ƒ‘ラメータに"{&#64;XXXX}"が含まれてã�?‚‹ã�?パラメーターのパã?スがå¿?¦�か)ã‚?
956             * 返しますã?
957             *
958             * @return "{&#64;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    }