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