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 */
016package org.opengion.hayabusa.db;
017
018import org.opengion.fukurou.util.Attributes;
019import org.opengion.hayabusa.common.HybsSystem;
020import org.opengion.hayabusa.resource.CodeData;
021import org.opengion.hayabusa.resource.ColumnData;
022import org.opengion.hayabusa.resource.LabelData;
023
024/**
025 * DBColumnオブジェクトを構築する為の 引数を持っているデータクラスです。
026 * このクラス自身は、書き換え可能ですが、DBColumnオブジェクトは、読込み専用の
027 * オブジェクトのため、別のオブジェクトを作成したい場合は、このクラスを
028 * DBColumnオブジェクトより取得し、内容を書き換えて、再度 DBColumnオブジェクトを
029 * 構築することになります。
030 *
031 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。
032 * @og.group テーブル管理
033 *
034 * @version  4.0
035 * @author       Kazuhiko Hasegawa
036 * @since    JDK5.0,
037 */
038public final class DBColumnConfig {
039        private String[]        clmData;                                                                                                // カラム配列データ
040        private LabelData       labelData;                                                                                              // ラベルデータ
041        private CodeData        codeData;                                                                                               // コードデータ
042
043        // 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。
044        private final Attributes        rendAttri = new Attributes();                                   // 表示用レンデラー追加用属性
045        private final Attributes        editAttri = new Attributes();                                   // 編集用エディター追加用属性
046
047        private String  lang;                                                                                                           // 言語
048        private String  writable        = "true";                                                                               // カラムが書き込み可能かどうか
049        private boolean addNoValue;                                                                                                     // メニューに空の選択リストを追加するかどうか        // 3.5.5.7 (2004/05/10)
050        private String  addKeyLabel;                                                                                            // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか
051        private boolean writeKeyLabel;                                                                                          // 6.2.3.0 (2015/05/01)
052        private String  dbid;                                                                                                           // データベース接続先ID
053        private boolean official;                                                                                                       // カラムリソースから作成されたかどうか(再設定可能)            // 5.4.3.4 (2012/01/12)
054
055        private String  eventColumn;                                                                                            // 4.3.6.0 (2009/04/01) イベントカラム
056        private String  eventValue;                                                                                                     // 6.3.3.0 (2015/07/25) eventValue 追加
057        private String  rawEditParameter;                                                                                       // 4.3.6.0 (2009/04/01) {@XXXX}を変換していないパラメータ
058        private String  rawRendParameter;                                                                                       // 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し
059        private String  eventURL;                                                                                                       // 5.1.9.0 (2010/08/01) 動的プルダウン不具合対応
060
061        private String  useSLabel               = "auto";                                                                       // 5.5.1.0 (2012/04/03)  MENU系でSLABELを利用するかどうか
062        private String  noDisplayVal;                                                                                           // 5.6.2.3 (2013/03/22) 非表示文字の設定
063
064        // 6.0.4.0 (2014/11/28) codeKeyVal は、KBMENU として、param にセットする為、廃止
065
066        private boolean stringOutput    = HybsSystem.sysBool( "USE_STRING_EXCEL_OUTPUT" );      // 5.7.6.3 (2013/05/23) ファイルレンデラ出力時のフラグ
067        private boolean writeCtrl;                                                                                                      // 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除
068        private boolean useDateFeed             = true;                                                                         // 日付送り戻し機能の有効/無効 8.1.2.3 (2022/05/20)
069
070        /**
071         * コンストラクター
072         * 引数は、すべて文字列型で渡します。
073         *
074         * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。
075         * @og.rev 3.5.5.7 (2004/05/10) CodeSelection を、codeName を元に構築できるように設定します。
076         * @og.rev 3.6.0.3 (2004/10/05) dbTypePrm は、editorPrm と無関係に設定します。
077         * @og.rev 3.6.0.7 (2004/11/06) カラムリソースから作成されたかどうか(official属性追加)
078         * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。
079         * @og.rev 5.7.3.0 (2014/02/07) labelData の null 対応
080         * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする)
081         *
082         * @param       lang            言語
083         * @param       name            カラム名
084         * @param       labelData       カラムのラベルデータオブジェクト
085         * @param       className       カラムのクラスを文字列にした名称
086         * @param       fieldSize       入力枠サイズ                                                  // 6.2.0.0 (2015/02/27)
087         * @param       viewLength      カラムの表示文字数                                               // 6.2.0.0 (2015/02/27)
088         * @param       maxlength       カラムの最大桁数
089         * @param       writable        カラムが書き込み可能かどうか
090         * @param       renderer        データの表示用レンデラー
091         * @param       editor          データの編集用エディター
092         * @param       codeData        メニューの項目オブジェクト
093         * @param       dbType          データのタイプ
094         * @param       dataDef         データのデフォルト値
095         * @param       rendererPrm     表示用レンデラーのパラメータ
096         * @param       editorPrm       編集用エディターのパラメータ
097         * @param       dbTypePrm       データのタイプのパラメータ
098         * @param       roles           カラムロール
099         * @param       official        正規カラムかどうか
100         * @param       dbid            データベース接続先ID
101         */
102        public DBColumnConfig(  final String    lang            ,
103                                                        final String    name            ,
104                                                        final LabelData labelData       ,               // 4.0.0 (2005/01/31)
105                                                        final String    className       ,
106                                                        final String    fieldSize       ,               // 6.2.0.0 (2015/02/27)
107                                                        final String    viewLength      ,               // 6.2.0.0 (2015/02/27)
108                                                        final String    maxlength       ,               // 3.5.5.5 (2004/04/23)
109                                                        final String    writable        ,
110                                                        final String    renderer        ,
111                                                        final String    editor          ,
112                                                        final CodeData  codeData        ,               // 4.0.0 (2005/01/31)
113                                                        final String    dbType          ,
114                                                        final String    dataDef         ,
115                                                        final String    rendererPrm     ,
116                                                        final String    editorPrm       ,
117                                                        final String    dbTypePrm       ,
118                                                        final String    roles           ,               // 4.0.0 (2005/11/30)
119                                                        final boolean   official        ,               // 3.6.0.7 (2004/11/06)
120                                                        final String    dbid ) {
121                clmData = new String[ColumnData.DATA_SIZE];
122                clmData[ColumnData.CLM           ] = name               ;
123                clmData[ColumnData.CLS_NAME      ] = className  ;
124                clmData[ColumnData.FIELD_SIZE    ] = fieldSize  ;               // 6.2.0.0 (2015/02/27)
125                clmData[ColumnData.VIEW_LENGTH   ] = viewLength ;               // 6.2.0.0 (2015/02/27)
126                clmData[ColumnData.USE_LENGTH    ] = maxlength  ;
127                clmData[ColumnData.RENDERER      ] = renderer   ;
128                clmData[ColumnData.EDITOR        ] = editor             ;
129                clmData[ColumnData.DBTYPE        ] = dbType             ;
130                clmData[ColumnData.DATA_DEFAULT  ] = dataDef    ;
131                clmData[ColumnData.RENDERER_PARAM] = rendererPrm;
132                clmData[ColumnData.TYPE_PARAM    ] = dbTypePrm  ;
133                clmData[ColumnData.ROLES         ] = roles              ;               // 4.0.0 (2005/11/30)
134
135                this.lang               = lang          ;
136                // 5.7.3.0 (2014/02/07) labelData の null 対応
137                // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..;
138                this.labelData  = labelData == null ? new LabelData( name ) : labelData ;
139                this.writable   = writable      ;
140                this.codeData   = codeData      ;               // 4.0.0 (2005/01/31)
141                this.dbid               = dbid          ;               // 4.0.0 (2005/01/31)
142
143                if( "=".equals(editorPrm) ) {
144                        clmData[ColumnData.EDITOR_PARAM  ] = rendererPrm        ;
145                }
146                else {
147                        clmData[ColumnData.EDITOR_PARAM  ] = editorPrm  ;
148                }
149
150                // 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。
151                if( dbType == null ) {
152                        clmData[ColumnData.DBTYPE        ] = DBType.DEF_TYPE;
153                }
154
155                this.official = official;               // 3.6.0.7 (2004/11/06)
156        }
157
158        /**
159         * 簡易コンストラクター
160         * キーのみを設定して作成する、簡易的な DBColumnConfig オブジェクトを
161         * 作成します。
162         *
163         * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。
164         * @og.rev 3.6.0.7 (2004/11/06) カラムリソースから作成されたかどうか(official属性追加)
165         * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。
166         * @og.rev 5.7.3.0 (2014/02/07) labelData の null 対応
167         * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする)
168         * @og.rev 6.2.3.0 (2015/05/01) もう一つのコンストラクタを呼びように変更。
169         *
170         * @param       name    カラム名
171         */
172        public DBColumnConfig( final String name ) {
173                this(   "ja"                                    ,       // lang
174                                name                                    ,       // name
175                                new LabelData( name )   ,       // labelData
176                                "VARCHAR2"                              ,       // className
177                                null                                    ,       // fieldSize    入力枠サイズ
178                                null                                    ,       // viewLength   カラムの表示文字数
179                                "60"                                    ,       // maxlength    カラムの最大桁数
180                                "true"                                  ,       // writable
181                                null                                    ,       // renderer
182                                null                                    ,       // editor
183                                null                                    ,       // codeData
184                                DBType.DEF_TYPE                 ,       // dbType
185                                ""                                              ,       // dataDef
186                                ""                                              ,       // rendererPrm
187                                ""                                              ,       // editorPrm
188                                ""                                              ,       // dbTypePrm
189                                null                                    ,       // roles
190                                false                                   ,       // official
191                                null                                            // dbid
192                        );
193        }
194
195        /**
196         * 言語を返します。
197         *
198         * @return      言語
199         */
200        public String getLang() {
201                return lang;
202        }
203
204        /**
205         * 言語を設定します。
206         *
207         * @param       lang 言語
208         */
209        public void setLang( final String lang ) {
210                this.lang = lang;
211        }
212
213        /**
214         * カラム名を返します。
215         *
216         * @return      カラム名
217         */
218        public String getName() {
219                return clmData[ColumnData.CLM];
220        }
221
222        /**
223         * カラム名を設定します。
224         *
225         * @param       name カラム名
226         */
227        public void setName( final String name ) {
228                clmData[ColumnData.CLM] = name;
229        }
230
231        /**
232         * ラベル名を返します。
233         *
234         * @return      ラベル名
235         */
236        public String getLabel() {
237                return ( labelData == null ) ? clmData[ColumnData.CLM] : labelData.getLabel() ;
238        }
239
240        /**
241         * カラムのクラスを文字列にした名称を返します。
242         *
243         * @return      カラムのクラスを文字列にした名称
244         */
245        public String getClassName() {
246                return clmData[ColumnData.CLS_NAME];
247        }
248
249        /**
250         * 現在の値と、新しい値をチェックして、条件に応じて新しい値を返します。
251         *
252         * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
253         * 上位で、val が null チェックを入れていますが、汎用的に、こちらでも入れておきます。
254         *
255         * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
256         *
257         * @param       now 現在の値
258         * @param       val 新しい値("既存値:設定値" と指定可能)
259         * @return      新しい値
260         */
261        private String oldNewSplit( final String now , final String val ) {
262                final String rtn ;
263
264                if( val == null || val.length() == 0 ) {
265                        rtn = now;
266                }
267                else {
268                        final int ad = val.indexOf( ':' );
269                        if( ad < 0 ) {                                                  // コロンがない。通常処理
270                                rtn = val;
271                        }
272                        else if( ad == 0 ) {                                    // コロンが先頭。コロンをはずして、セット
273                                rtn = val.substring(1);
274                        }
275                        else {                                                                  // コロンがある。OLD:NEW 形式なので、コロンで分割
276                                final String old = val.substring( 0,ad );
277                                if( old.equals( now ) ) {                       // 一致した。
278                                        rtn = val.substring( ad+1 );
279                                }
280                                else {
281                                        rtn = now ;
282                                }
283                        }
284                }
285
286                return rtn ;
287        }
288
289        /**
290         * カラムのクラスを文字列にした名称を設定します。
291         *
292         * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
293         *
294         * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
295         *
296         * @param       className カラムのクラス名
297         */
298        public void setClassName( final String className ) {
299                clmData[ColumnData.CLS_NAME] = oldNewSplit( clmData[ColumnData.CLS_NAME] , className );         // 6.4.1.1 (2016/01/16)
300        }
301
302        /**
303         * カラムの入力枠サイズ(横幅)を文字数で取得します。
304         * fieldSize は、設定した場合のみ、使用できます。通常は、null が返ります。
305         *
306         * @og.rev 6.2.0.0 (2015/02/27) fieldSize 属性の追加
307         *
308         * @return      カラムの入力枠サイズ
309         */
310        public String getFieldSize() {
311                return clmData[ColumnData.FIELD_SIZE];
312        }
313
314        /**
315         * カラムの入力枠サイズ(横幅)を文字数で設定します。
316         *
317         * 従来の #setViewLength(String) で指定していた値です。
318         *
319         * @og.rev 6.2.0.0 (2015/02/27) fieldSize 属性の追加
320         *
321         * @param       fieldSize カラムの入力枠サイズ
322         */
323        public void setFieldSize( final String fieldSize ) {
324                clmData[ColumnData.FIELD_SIZE] = fieldSize;
325        }
326
327        /**
328         * カラムの表示桁数を返します。
329         * viewLength は、設定した場合のみ、使用できます。通常は、null が返ります。
330         *
331         * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 getSize() → getViewLength()
332         *
333         * @return      カラムの表示桁数
334         */
335        public String getViewLength() {
336                return clmData[ColumnData.VIEW_LENGTH];
337        }
338
339        /**
340         * カラムの表示桁数を設定します。
341         *
342         * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 setSize() → setViewLength()
343         *
344         * @param       viewLength カラムの表示桁数
345         */
346        public void setViewLength( final String viewLength ) {
347                clmData[ColumnData.VIEW_LENGTH] = viewLength;
348        }
349
350        /**
351         * カラムの文字桁数を返します。
352         *
353         * @og.rev 3.5.5.5 (2004/04/23) 新規追加
354         *
355         * @return      カラムの文字桁数
356         */
357        public String getMaxlength() {
358                return clmData[ColumnData.USE_LENGTH];
359        }
360
361        /**
362         * カラムの文字桁数を設定します。
363         *
364         * @og.rev 3.5.5.5 (2004/04/23) 新規追加
365         *
366         * @param       maxlength カラムの文字桁数
367         */
368        public void setMaxlength( final String maxlength ) {
369                clmData[ColumnData.USE_LENGTH] = maxlength;
370        }
371
372        /**
373         * カラムが書き込み可能かどうか[true/false]を返します。
374         *
375         * @return      カラムが書き込み可能かどうか[true/false]
376         */
377        public boolean isWritable() {
378                return "true".equalsIgnoreCase( writable ) ;
379        }
380
381        /**
382         * カラムが書き込み可能かどうか[true/false]を設定します。
383         *
384         * @param       writable 書き込み可能かどうか[true/false]
385         */
386        public void setWritable( final String writable ) {
387                this.writable = writable;
388        }
389
390        /**
391         * データの表示用レンデラーを返します。
392         *
393         * @og.rev 3.1.0.0 (2003/03/20) Renderer をキーのみ返すように変更
394         *
395         * @return      データの表示用レンデラー
396         */
397        public String getRenderer() {
398                return clmData[ColumnData.RENDERER];
399        }
400
401        /**
402         * データの表示用レンデラーを設定します。
403         *
404         * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
405         *
406         * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
407         *
408         * @param       renderer 表示用レンデラー
409         */
410        public void setRenderer( final String renderer ) {
411                clmData[ColumnData.RENDERER] = oldNewSplit( clmData[ColumnData.RENDERER] , renderer );          // 6.4.1.1 (2016/01/16)
412        }
413
414        /**
415         * データの編集用エディターを返します。
416         *
417         * @og.rev 3.1.0.0 (2003/03/20) Editor をキーのみ返すように変更
418         *
419         * @return      データの編集用エディター
420         */
421        public String getEditor() {
422                return clmData[ColumnData.EDITOR];
423        }
424
425        /**
426         * データの編集用エディターを設定します。
427         *
428         * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
429         *
430         * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
431         *
432         * @param       editor 編集用エディター
433         */
434        public void setEditor( final String editor ) {
435                clmData[ColumnData.EDITOR] = oldNewSplit( clmData[ColumnData.EDITOR] , editor );                // 6.4.1.1 (2016/01/16)
436        }
437
438        /**
439         * 文字種別名を返します。
440         *
441         * @return  データの文字種別
442         */
443        public String getDbType() {
444                return clmData[ColumnData.DBTYPE];
445        }
446
447        /**
448         * データのタイプを設定します。
449         *
450         * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
451         *
452         * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。
453         * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。
454         *
455         * @param       dbType 文字種別
456         */
457        public void setDbType( final String dbType ) {
458                clmData[ColumnData.DBTYPE] = oldNewSplit( clmData[ColumnData.DBTYPE] , (dbType == null) ? DBType.DEF_TYPE : dbType );           // 6.4.1.1 (2016/01/16)
459        }
460
461        /**
462         * カラムロールを返します。
463         *
464         * @return  カラムロール
465         */
466        public String getRoles() {
467                return clmData[ColumnData.ROLES];
468        }
469
470        /**
471         * カラムロールを設定します。
472         *
473         * @param       roles カラムロール
474         */
475        public void setRoles( final String roles ) {
476                clmData[ColumnData.ROLES] = roles;
477        }
478
479        /**
480         * データのデフォルト値を返します。
481         *
482         * @og.rev 5.1.8.0 (2010/07/01) メソッド名変更(getDefValue ⇒ getDefault)
483         *
484         * @return      データのデフォルト値
485         */
486        public String getDefault() {
487                // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..;
488                return ( clmData[ColumnData.DATA_DEFAULT] == null ) ? "" : clmData[ColumnData.DATA_DEFAULT];
489        }
490
491        /**
492         * データのデフォルト値を設定します。
493         *
494         * @og.rev 5.1.8.0 (2010/07/01) メソッド名変更(setDefValue ⇒ setDefault)
495         *
496         * @param       dataDef デフォルト値
497         */
498        public void setDefault( final String dataDef ) {
499                clmData[ColumnData.DATA_DEFAULT] = dataDef;
500        }
501
502        /**
503         * 表示用レンデラーの追加属性を返します。
504         *
505         * @return   属性リスト
506         * @og.rtnNotNull
507         */
508        public Attributes getRendererAttributes() {
509                return rendAttri ;
510        }
511
512        /**
513         * 表示用レンデラーの追加属性を設定します。
514         *
515         * 元のrendAttriが、何も設定されていない場合は、引数のAttributesに
516         * 置き換えます。
517         * すでに、設定済みの場合は、putAll で、すべての属性を追加します。
518         * 既存の属性は、そのまま残りますので、クリアしたい場合は、
519         * 先に、getRendererAttributes() で取り出した Attributes を、
520         * clear() してから、セットしてください。
521         *
522         * @og.rev 6.4.5.2 (2016/05/06) Attributesは、既存のAttributesに、ADDする。
523         *
524         * @param   attri       属性リスト
525         */
526        public void setRendererAttributes( final Attributes attri ) {
527                rendAttri.set( attri );
528        }
529
530        /**
531         * 編集用エディター用の追加属性を返します。
532         *
533         * @return       追加属性
534         * @og.rtnNotNull
535         */
536        public Attributes getEditorAttributes() {
537                return editAttri;
538        }
539
540        /**
541         * 編集用エディター用の追加属性を設定します。
542         *
543         * 元のrendAttriが、何も設定されていない場合は、引数のAttributesに
544         * 置き換えます。
545         * すでに、設定済みの場合は、putAll で、すべての属性を追加します。
546         * 既存の属性は、そのまま残りますので、クリアしたい場合は、
547         * 先に、getEditorAttributes() で取り出した Attributes を、
548         * clear() してから、セットしてください。
549         *
550         * @og.rev 6.4.5.2 (2016/05/06) Attributesは、既存のAttributesに、ADDする。
551         *
552         * @param   attri       属性リスト
553         */
554        public void setEditorAttributes( final Attributes attri ) {
555                editAttri.set( attri );
556        }
557
558        /**
559         * 編集用エディター用の属性を削除します。
560         *
561         * 属性を、入れ替えではなく、追加したことで、削除が困難になりました。
562         * そこで、属性の削除が出来るようにします。
563         * キーとなる設定値から、値の文字列を切り取ります。
564         * class 属性など、スペース連結の場合は、問題はありませんが、カンマ連結では
565         * カンマが連続で並びますので、うまく対応できません。
566         * 属性値が、一致する場合と、val がnullの場合は、そのキー自体を削除します。
567         *
568         * @og.rev 6.8.1.4 (2017/08/25) must="false"で、setEditorAttributes の属性の取り消しが出来ないための対応。
569         *
570         * @param   key 属性キー
571         * @param   val 属性値
572         */
573        public void removeEditorAttributes( final String key , final String val ) {
574                final String oldval = editAttri.get( key );
575                // Attributes は、ConcurrentHashMap で管理しているので、oldval に null は、含みません。(が、チェックしておきます)
576                if( val != null && oldval != null && oldval.contains( val ) ) {
577                        final String newval = oldval.replace( val , "" );               // val の削除
578                        if( newval.trim().isEmpty() ) {
579                                editAttri.remove( key );
580                        }
581                        else {
582                                editAttri.set( key,newval );
583                        }
584                }
585        }
586
587        /**
588         * パラメータを設定します。
589         * ここで設定された値は、すべて(表示、編集、文字)のパラメータにセットされます。
590         *
591         * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。
592         *
593         * @param       inParam 入力パラメータ
594         */
595        public void setParameter( final String inParam ) {
596                clmData[ColumnData.RENDERER_PARAM]      = inParam ;
597                clmData[ColumnData.EDITOR_PARAM]        = inParam ;
598                clmData[ColumnData.TYPE_PARAM]          = inParam ;
599        }
600
601        /**
602         * 表示用レンデラーのパラメータを取得します。
603         *
604         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
605         *
606         * @return      表示用レンデラーのパラメータ
607         */
608        public String getRendererParam() {
609                return clmData[ColumnData.RENDERER_PARAM];
610        }
611
612        /**
613         * 表示用レンデラーのパラメータを設定します。
614         *
615         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
616         *
617         * @param       inParam 表示用レンデラーのパラメータ
618         */
619        public void setRendererParam( final String inParam ) {
620                clmData[ColumnData.RENDERER_PARAM] = inParam;
621        }
622
623        /**
624         * 編集用エディターのパラメータを取得します。
625         *
626         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
627         *
628         * @return      編集用エディターのパラメータ
629         */
630        public String getEditorParam() {
631                return clmData[ColumnData.EDITOR_PARAM];
632        }
633
634        /**
635         * 編集用エディターのパラメータを設定します。
636         *
637         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
638         *
639         * @param       inParam 編集用エディターのパラメータ
640         */
641        public void setEditorParam( final String inParam ) {
642                clmData[ColumnData.EDITOR_PARAM] = inParam      ;
643        }
644
645        /**
646         * データタイプのパラメータを取得します。
647         *
648         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
649         *
650         * @return      データタイプのパラメータ
651         */
652        public String getDbTypeParam() {
653                return clmData[ColumnData.TYPE_PARAM];
654        }
655
656        /**
657         * データタイプのパラメータをします。
658         *
659         * @og.rev 3.4.0.0 (2003/09/01) 新規追加
660         *
661         * @param       inParam データタイプのパラメータ
662         */
663        public void setDbTypeParam( final String inParam ) {
664                clmData[ColumnData.TYPE_PARAM] = inParam ;
665        }
666
667        /**
668         * メニューに空の選択リストを追加するかどうかを取得します。
669         *
670         * @og.rev 3.5.5.7 (2004/05/10) 新規追加
671         *
672         * @return      選択リストを追加するかどうか(true:追加する/false:追加しない)
673         */
674        public boolean isAddNoValue() {
675                return addNoValue ;
676        }
677
678        /**
679         * メニューに空の選択リストを追加するかどうかを設定します。
680         *
681         * @og.rev 3.5.5.7 (2004/05/10) 新規追加
682         *
683         * @param       add     [true:追加する/false:追加しない]
684         */
685        public void setAddNoValue( final boolean add ) {
686                this.addNoValue = add   ;
687        }
688
689        /**
690         * セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を指定します(初期値:null)。
691         *
692         * カラムがプルダウンメニュー形式の場合、キー:ラベル形式で表示するか、ラベルだけで表示するかを
693         * 選択できます。
694         * true を指定すると、「強制的に」キー:ラベル形式で表示します。
695         * false の場合は、「強制的に」ラベルのみで表示されます。
696         * 初期値の null の場合、コードリソースや、SQL文に準拠した指定通りの形式で表示します。
697         *
698         * &lt;og:column name="CDC" addKeyLabel="true" /&gt;
699         *
700         * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加
701         *
702         * @param   addKeyLbl  [true:キー:ラベル形式/false:ラベルのみ/null:指定通り]
703         * @see         #getAddKeyLabel()
704         */
705        public void setAddKeyLabel( final String addKeyLbl ) {
706                addKeyLabel = addKeyLbl;
707        }
708
709        /**
710         * セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を返します。
711         *
712         * これは、上位入れ子のタグの OptionTag で、addKeyLabel を取り出して、
713         * true であれば、キー:ラベル形式 のオプションを、#addOption( String ) で
714         * 登録させます。
715         *
716         * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加
717         *
718         * @return      true:キー:ラベル形式/false:ラベルのみ/null:指定通り
719         * @see         #setAddKeyLabel( String )
720         */
721        public String getAddKeyLabel() {
722                return addKeyLabel;
723        }
724
725        /**
726         * セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を指定します(初期値:false)。
727         *
728         * カラムがプルダウンメニュー形式の場合、ファイル出力時に、キーとラベルを分離して出力する事ができます。
729         * この属性と、addKeyLabel とは、微妙に関連していて、addKeyLabel="true" のみの場合は、
730         * キー:ラベル形式で、出力されますが、writeKeyLabel="true" も指定されている場合は、こちらが優先されます。
731         * なお、この指定が有効なのは、セレクトメニューのカラムのみです。
732         * 初期値は、false です。
733         *
734         * @og.rev 6.2.3.0 (2015/05/01) キー/ラベルで分離して出力するかどうか。
735         *
736         * @param   flag  キー/ラベル分離出力するかどうか [true:分離出力/false:通常]
737         */
738        public void setWriteKeyLabel( final boolean flag ) {
739                writeKeyLabel = flag;
740        }
741
742        /**
743         * セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を取得します。
744         *
745         * カラムがプルダウンメニュー形式の場合、ファイル出力時に、キーとラベルを分離して出力する事ができます。
746         * この属性と、addKeyLabel とは、微妙に関連していて、addKeyLabel="true" のみの場合は、
747         * キー:ラベル形式で、出力されますが、writeKeyLabel="true" も指定されている場合は、こちらが優先されます。
748         * なお、この指定が有効なのは、セレクトメニューのカラムのみです。
749         *
750         * @og.rev 6.2.3.0 (2015/05/01) キー/ラベルで分離して出力するかどうか。
751         *
752         * @return      キー/ラベル分離出力するかどうか[true:分離出力/false:通常]
753         */
754        public boolean isWriteKeyLabel() {
755                return writeKeyLabel ;
756        }
757
758        /**
759         * このカラムオブジェクトがカラムリソースより正式に作られたかどうかを取得します。
760         * カラムリソースが無い場合は、仮オブジェクトかデータベースメタデータより作成されます。
761         * その場合は、チェック機能が緩くなるため、正式なカラムオブジェクトと区別する為に
762         * この属性を持ちます。
763         *
764         * @og.rev 3.6.0.7 (2004/11/06) 新規追加
765         *
766         * @return      カラムリソースより正式に作られたかどうか(true:正式/false:暫定)
767         */
768        public boolean isOfficial() {
769                return official;
770        }
771
772        /**
773         * このカラムオブジェクトがカラムリソースより正式に作られたかどうかを設定します。
774         * 従来は、自動判定で、再セット不可能でしたが、動的カラムを実現する場合に、
775         * エラーチェックで引っかかるため、再設定可能にします。
776         *
777         * @og.rev 5.4.3.4 (2012/01/12) 新規追加
778         *
779         * @param       official 正式かどうか [true:正式/false:暫定]
780         */
781        public void setOfficial( final boolean official ) {
782                this.official = official ;
783        }
784
785        /**
786         * 接続先IDを設定します。
787         *
788         * @param dbid 接続先ID
789         */
790        public void setDbid( final String dbid ) {
791                this.dbid = dbid;
792        }
793
794        /**
795         * 接続先IDを返します。
796         *
797         * @return      接続先ID
798         */
799        public String getDbid() {
800                return dbid;
801        }
802
803        /**
804         * カラムデータオブジェクトを取得します。
805         *
806         * @return      カラムデータオブジェクト
807         * @og.rtnNotNull
808         */
809        public ColumnData getColumnData() {
810                return new ColumnData( clmData );
811        }
812
813        /**
814         * カラムデータオブジェクトを設定します。
815         * ここでは、オブジェクトその物を持つのではなく、設定された値のみ持ちます。
816         *
817         * @param       clmDt カラムデータオブジェクト
818         */
819        public void setColumnData( final ColumnData clmDt ) {
820                clmData = clmDt.getColumnData();
821        }
822
823        /**
824         * コードデータオブジェクトを取得します。
825         *
826         * @og.rev 4.0.0.0 (2005/01/31)  新規作成
827         *
828         * @return      コードデータオブジェクト
829         */
830        public CodeData getCodeData() {
831                return codeData;
832        }
833
834        /**
835         * コードデータオブジェクトを設定します。
836         *
837         * @og.rev 4.0.0.0 (2005/01/31)  新規作成
838         *
839         * @param       codeData コードデータオブジェクト
840         */
841        public void setCodeData( final CodeData codeData ) {
842                this.codeData = codeData;
843        }
844
845        /**
846         * ラベルデータオブジェクトを取得します。
847         *
848         * @return      ラベルデータオブジェクト
849         */
850        public LabelData getLabelData() {
851                return labelData;
852        }
853
854        /**
855         * ラベルデータオブジェクトを設定します。
856         *
857         * @param       labelData ラベルデータオブジェクト
858         */
859        public void setLabelData( final LabelData labelData ) {
860                this.labelData = labelData;
861        }
862
863        /**
864         * イベントカラム(親カラム)のセット
865         *
866         * イベントカラムをセットします。
867         *
868         * @og.rev 4.3.6.0 (2009/04/01)
869         * @param       col     親カラムID
870         */
871        public void setEventColumn( final String col ) {
872                this.eventColumn = col;
873        }
874
875        /**
876         * イベントカラム(親カラム)の取得
877         *
878         * イベントカラムを取得します。
879         *
880         * @og.rev 4.3.6.0 (2009/04/01)
881         *
882         * @return  イベントカラム
883         */
884        public String getEventColumn() {
885                return eventColumn;
886        }
887
888        /**
889         * イベントカラムの子カラムの値を出力するためのSQL文のセット
890         *
891         * イベントカラムの子カラムの値を出力するためのSQL文をセットします。
892         *
893         * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加
894         *
895         * @param       val     イベントカラムの値SQL文
896         */
897        public void setEventValue( final String val ) {
898                this.eventValue = val;
899        }
900
901        /**
902         * イベントカラムの子カラムの値を出力するためのSQL文の取得
903         *
904         * イベントカラムの子カラムの値を出力するためのSQL文を取得します。
905         *
906         * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加
907         *
908         * @return  イベントカラムの値SQL文
909         */
910        public String getEventValue() {
911                return eventValue;
912        }
913
914        /**
915         * {&#064;XXXX}を変換していない状態の編集パラメータ
916         *
917         * 生のパラメータを取得します。
918         *
919         * @og.rev 4.3.6.0 (2009/04/01)
920         *
921         * @return  生編集パラメータ
922         */
923        public String getRawEditParameter() {
924                return rawEditParameter;
925        }
926
927        /**
928         * {&#064;XXXX}を変換していない状態の表示パラメータ
929         *
930         * 生のパラメータを取得します。
931         *
932         * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し
933         *
934         * @return  生表示パラメータ
935         */
936        public String getRawRendParameter() {
937                return rawRendParameter;
938        }
939
940        /**
941         * {&#064;XXXX}を変換していない状態のparameterセット用
942         *
943         * 編集種別・表示種別
944         * 生のパラメータをセットします。(編集種別・表示種別の両方に適用されます。)
945         *
946         * @og.rev 4.3.6.0 (2009/04/01)
947         * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し
948         *
949         * @param param パラメータ
950         */
951        public void setRawParameter( final String param ) {
952                rawEditParameter = param;
953                rawRendParameter = param;
954        }
955
956        /**
957         * {&#064;XXXX}を変換していない状態の編集種別 parameterセット用
958         *
959         * DBColumn とのデータ変換のため、内部変数として、編集種別・表示種別を分けて管理します。
960         *
961         * @og.rev 5.1.8.0 (2010/07/01) 新規追加
962         *
963         * @param param パラメータ
964         */
965        public void setRawEditParameter( final String param ) {
966                rawEditParameter = param;
967        }
968
969        /**
970         * {&#064;XXXX}を変換していない状態の表示種別 parameterセット用
971         *
972         * DBColumn とのデータ変換のため、内部変数として、編集種別・表示種別を分けて管理します。
973         *
974         * @og.rev 5.1.8.0 (2010/07/01) 新規追加
975         *
976         * @param param パラメータ
977         */
978        public void setRawRendParameter( final String param ) {
979                rawRendParameter = param;
980        }
981
982        /**
983         * イベントURLのセット。
984         *
985         * イベントカラム利用時にコールされるURLのセット
986         *
987         * @og.rev 4.3.6.0 (2009/04/01)
988         * @param url イベントURL
989         */
990        public void setEventURL( final String url ) {
991                this.eventURL = url;
992        }
993
994        /**
995         * イベントURLの取得。
996         *
997         * eventColumn利用時のJSから呼び出すためのURL取得
998         *
999         * @og.rev 4.3.6.0 (2009/04/01)
1000         *
1001         * @return  イベントURL
1002         */
1003        public String getEventURL() {
1004                return eventURL;
1005        }
1006
1007        /**
1008         * MENU時にラベル短ベースで表示するかどうか[auto/true/その他]のコントロール
1009         *
1010         * auto/trueが有効。それ以外はfalse扱いとする。標準auto
1011         *
1012         * @og.rev 5.5.1.0 (2012/04/03)
1013         * @param use 表示するかどうか[auto/true/その他]
1014         */
1015        public void setUseSLabel( final String use ) {
1016                this.useSLabel = use;
1017        }
1018
1019        /**
1020         * MENU時にラベル短ベースで表示するかどうかのコントロール。
1021         *
1022         * @og.rev 5.5.1.0 (2012/04/03)
1023         *
1024         * @return  イベントURL
1025         */
1026        public String getUseSLabel() {
1027                return useSLabel;
1028        }
1029
1030        /**
1031         * 非表示文字列を設定します。
1032         *
1033         * これは、例えば、数字型の場合は、0 がデフォルトなどの場合、
1034         * あえて表示したくないなどのケースに使います。
1035         * そのような状況が設定されていない場合は、null を設定してください。
1036         * 初期値は、null です。
1037         *
1038         * @og.rev 5.6.2.3 (2013/03/22) 新規追加
1039         *
1040         * @param val 非表示にする文字列
1041         */
1042        public void setNoDisplayVal( final String val ) {
1043                this.noDisplayVal = val;
1044        }
1045
1046        /**
1047         * 非表示文字列を返します。
1048         *
1049         * これは、例えば、数字型の場合は、0 がデフォルトなどの場合、
1050         * あえて表示したくないなどのケースに使います。
1051         * そのような状況が設定されていない場合は、null が返されます。
1052         * 初期値は、null です。
1053         *
1054         * @og.rev 5.6.2.3 (2013/03/22) 新規追加
1055         *
1056         * @return 非表示文字
1057         */
1058        public String getNoDisplayVal() {
1059                return noDisplayVal;
1060        }
1061
1062        /**
1063         * レンデラー利用ファイル出力時に数値等も文字タイプ固定にするかどうかを設定します
1064         *              (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。
1065         *
1066         * これは、レンデラーでのExcel出力時のセルタイプに影響します。
1067         * trueの場合は数値も全て文字として出力します。
1068         * falseの場合はDBTYPEに従った出力になりるため、数値型の DBTYPE では、doubleに一度変換されます。
1069         * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。
1070         *
1071         * @og.rev 5.7.6.3 (2014/05/23) 新規追加
1072         *
1073         * @param flag レンデラー利用時の出力方法 (true:String出力/false:DBTYPEに従う)
1074         */
1075        public void setStringOutput( final boolean flag ) {
1076                stringOutput = flag;
1077        }
1078
1079        /**
1080         * レンデラー利用ファイル出力時に数値等も文字タイプ固定にするかどうか
1081         *              (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。
1082         *
1083         * これは、レンデラーでのExcel出力時のセルタイプに影響します。
1084         * trueの場合は数値も全て文字として出力します。
1085         * falseの場合はDBTYPEに従った出力になりるため、数値型の DBTYPE では、doubleに一度変換されます。
1086         * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。
1087         *
1088         * @og.rev 5.7.6.3 (2014/05/23) 新規追加
1089         *
1090         * @return レンデラー利用時の出力方法 (true:String出力/false:DBTYPEに従う)
1091         */
1092        public boolean isStringOutput() {
1093                return stringOutput;
1094        }
1095
1096        /**
1097         * 設定値に "_" が含まれる書込み禁止カラムでかどうかを指定します。
1098         *
1099         * true に設定された場合は、#getWriteValue( String ) で、先頭のアンダーバーを
1100         * 削除して返します。
1101         * 初期値は、false:使わないです。
1102         *
1103         * @og.rev 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除
1104         *
1105         * @param flag writableControlを使うかどうか [true:使う/false:使わない]
1106         */
1107        public void setWriteControl( final boolean flag ) {
1108                writeCtrl = flag;
1109        }
1110
1111        /**
1112         * 設定値に "_" が含まれる書込み禁止カラムかどうかを返します。
1113         *
1114         * true に設定された場合は、#getWriteValue( String ) で、先頭のアンダーバーを
1115         * 削除して返します。
1116         * 初期値は、false:使わないです。
1117         *
1118         * @og.rev 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除
1119         *
1120         * @return writableControlを使うかどうか [true:使う/false:使わない]
1121         */
1122        public boolean isWriteControl() {
1123                return writeCtrl;
1124        }
1125
1126        /**
1127         * 日付送り戻し機能を有効にするかどうか[true:有効/false:無効]指定します(初期値:true)。
1128         *
1129         * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加)
1130         *
1131         * @param       flag    日付送り戻し機能有無 [true:有効/false:無効]
1132         */
1133        public void setUseDateFeed( final boolean flag ) {
1134                this.useDateFeed = flag;
1135        }
1136
1137        /**
1138         * 日付送り戻し機能を有効にするかどうか[true:有効/false:無効]返します。
1139         *
1140         * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加)
1141         *
1142         * @return      flag    日付送り戻し機能有無 [true:有効/false:無効]
1143         */
1144        public boolean isDateFeed() {
1145                return useDateFeed;
1146        }
1147}