    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.plugin.column;
    017
    018import org.opengion.hayabusa.db.CellEditor;
    019import org.opengion.hayabusa.db.DBColumn;
    020import org.opengion.hayabusa.db.SelectionFactory;               // 5.7.3.0 (2014/02/07)
    021
    022/**
    023 * カラムの編集パラメーターの開始、終了、ステップ、フォーマット、titleフォーマットの情報より、
    024 * プルダウンメニューを作成して編集する場合に使用するエディタークラスです。
    025 *
    026 * パラメータの初期値は、開始(0)、終了(14)、ステップ(1)、フォーマット(MM/dd)、titleフォーマット(null) です。
    027 *
    028 * ここでは、日付(年/月/日）の自動生成を行います。
    029 * 基準は、実行日に対して、＋−の数字を指定します。
    030 * 例：20130206 に対して、-2,3,1 を指定すると、20130204,20130205,20130206,20130207,20130208,20130209 となります。
    031 *
    032 * 開始、終了に、特殊なコマンドを指定する事も可能です。
    033 * ・SD ：当月の最初の日付にセットします。(当月１日)
    034 * ・ED ：当月の最後の日付にセットします。(当月月末)
    035 * ・SW ：日付処理の週初め(月曜日)にセットします。日付は当日より前に移動します。
    036 * ・EW ：日付処理の週末(日曜日)にセットします。日付は当日より後ろに移動します。
    037 * ・D1 〜 DXXX ：日を指定の分だけ進めます。D1なら翌日、D200 なら200日後
    038 * ・M1 〜 MXXX ：月を指定の分だけ進めます。M1なら翌月、M6 なら半年後
    039 * ・BSD ：先月の最初の日付にセットします。(先月１日)
    040 * ・BED ：先月の最後の日付にセットします。(先月月末)
    041 * ・ASD ：翌月の最初の日付にセットします。(翌月１日)
    042 * ・AED ：翌月の最後の日付にセットします。(翌月月末)
    043 * ・M1  ：１か月先。数字部分は、任意に指定できるため、M5 とすれば、５か月先。M-2 は、２か月前
    044 *
    045 * ステップは、無指定の場合は、１日単位です。例えば、SW,M6,7 とすれば、毎週月曜日を６か月先まで作成します。
    046 * また、M1 は、１か月単位になります。ただし、開始日を SD などにしないと、大の月と小の月で、おかしくなるので
    047 * ご注意ください。
    048 *
    049 * キーは、８文字の yyyyMMdd 形式で与えられます。ラベルは、フォーマットの指定に準拠します。
    050 * フォーマットを指定する場合は、ステップは、必須となります。
    051 * フォーマットの初期値は、MM/dd です。
    052 * titleフォーマット は、tips表示する場合のフォーマットになります。初期値は、ありません。
    053 *
    054 * カラムの表示に必要な属性は, DBColumn オブジェクト より取り出します。
    055 * このクラスは、DBColumn オブジェクト毎に１つ作成されます。
    056 *
    057 * @og.rev 5.6.1.1 (2013/02/08) 新規作成
    058 * @og.group データ編集
    059 *
    060 * @version  4.0
    061 * @author       Kazuhiko Hasegawa
    062 * @since    JDK5.0,
    063 */
    064public class Editor_YMDMENU extends Editor_MENU {
    065        //* このプログラムのVERSION文字列を設定します。   {@value} */
    066        private static final String VERSION = "5.7.7.1 (2014/06/13)" ;
    067
    068        /**
    069         * デフォルトコンストラクター。
    070         * このコンストラクターで、基本オブジェクトを作成します。
    071         *
    072         */
    073        public Editor_YMDMENU() {
    074                super();
    075        }
    076
    077        /**
    078         * コンストラクター。
    079         *
    080         * ここでは、親クラスの Editor_MENU で初期化を行い、セレクションオブジェクト に、
    081         * Selection_YMD を使用するように再設定します。
    082         *
    083         * @og.rev 5.7.3.0 (2014/02/07) SelectionFactory 対応
    084         * @og.rev 5.7.7.1 (2014/06/13) バグ修正
    085         *
    086         * @param       clm     DBColumnオブジェクト
    087         */
    088        private Editor_YMDMENU( final DBColumn clm ) {
    089                super( clm );
    090
    091//              selection = SelectionFactory.newSelection( "YMD" , clm.getCodeData() );
    092                selection = SelectionFactory.newSelection( "YMD" , clm.getEditorParam() );      // 5.7.7.1 (2014/06/13) バグ修正
    093        }
    094
    095        /**
    096         * 各オブジェクトから自分のインスタンスを返します。
    097         * 自分自身をキャッシュするのか、新たに作成するのかは、各サブクラスの実装に
    098         * まかされます。
    099         *
    100         * @param       clm     DBColumnオブジェクト
    101         *
    102         * @return      CellEditorオブジェクト
    103         */
    104        @Override
    105        public CellEditor newInstance( final DBColumn clm ) {
    106                return new Editor_YMDMENU( clm );
    107        }
    108}