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.query;
017
018import org.opengion.fukurou.system.DateSet;                                             // 6.4.2.0 (2016/01/29)
019// import org.opengion.hayabusa.db.DBConstValue;
020
021/**
022 * データベース登録時に、固定値カラムの設定を行う情報を管理するクラスです。
023 * このクラスは、MICS系の管理クラスです。
024 * 具体的には、
025 *     削除フラグ     DeleteFlg   0:通常 1:削除
026 *     登録日時     EntryDate
027 *     更新日時     RenewDate
028 * などの情報を、INSERT、UPDATE の状況に応じて提供します。
029 * INSERT には、登録日時、更新日時にも値をセットします。
030 * これは、UPDATE された日付や時刻で、一覧検索できるようにする為で、
031 * null にしておくと、IS NULL で問い合わせる必要があります。
032 * INSERT データだけ取出す場合は、WHERE EntryDate = RenewDate とします。
033 *
034 * コンストラクターでは、テーブル名、ユーザーID,画面ID を受け取ります。
035 * 登録時刻は、このオブジェクトが生成された時間を通常は使用します。
036 * テーブル名を渡すのは、ワークなど、テーブル単位に処理するカラムが
037 * 異なるので、それへの対応です。
038 * 処理が簡素化できるように、ルールを規定すべきです。
039 *
040 * @og.rev 5.6.2.1 (2013/03/08) 新規追加
041 * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
042 * @og.group データ登録
043 *
044 * @version  4.0
045 * @author   Kazuhiko Hasegawa
046 * @since    JDK5.0,
047 */
048// public class DBConstValue_MICS implements DBConstValue {
049public class DBConstValue_MICS extends AbstractDBConstValue {
050        /** このプログラムのVERSION文字列を設定します。   {@value} */
051        private static final String VERSION = "8.5.6.1 (2024/03/29)" ;
052
053        // 8.5.4.2 (2024/01/12) PMD 7.0.0 UseShortArrayInitializer
054//      private static final String[] MSTR_INSKEYS =
055//              new String[] { "DELETEFLG","ENTRYDATE","RENEWDATE" };
056        private static final String[] MSTR_INSKEYS = { "DELETEFLG","ENTRYDATE","RENEWDATE" };
057
058        // 8.5.4.2 (2024/01/12) PMD 7.0.0 UseShortArrayInitializer
059//      private static final String[] MSTR_UPDKEYS =
060//              new String[] { "RENEWDATE" };
061        private static final String[] MSTR_UPDKEYS = { "RENEWDATE" };
062
063        // 8.5.4.2 (2024/01/12) PMD 7.0.0 UseShortArrayInitializer
064//      private static final String[] MSTR_LOGDELKEYS = // 4.3.7.0 (2009/06/01)
065//              new String[] { "DELETEFLG","RENEWDATE" };
066        private static final String[] MSTR_LOGDELKEYS = { "DELETEFLG","RENEWDATE" };            // 4.3.7.0 (2009/06/01)
067
068//      // 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
069//      private static final String[] ZERO = new String[0] ;
070//
071//      private String[] insKeys = ZERO;
072//      private String[] insVals = ZERO;
073//
074//      private String[] updKeys = ZERO;
075//      private String[] updVals = ZERO;
076//
077//      private String[] logDelKeys = ZERO; // 4.3.7.0 (2009/06/01)
078//      private String[] logDelVals = ZERO; // 4.3.7.0 (2009/06/01)
079
080        /**
081         * デフォルトコンストラクター
082         *
083         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
084         */
085        public DBConstValue_MICS() { super(); }         // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
086
087//      /**
088//       * 初期化情報を設定します。
089//       *
090//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
091//       *
092//       * @param       table   テーブル名
093//       * @param       user    ユーザーID
094//       * @param       gamen   画面ID
095//       */
096//      @Override       // DBConstValue
097//      public void init( final String table, final String user, final String gamen ) {
098//              init( table, user, gamen, "" );
099//      }
100
101        /**
102         * 初期化情報を設定します。
103         *
104         * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。
105         * @og.rev 8.5.6.1 (2024/03/29) abstract なのは、pgamen 引数付きの init メソッドです。
106         *
107         * @param       table   テーブル名
108         * @param       user    ユーザーID
109         * @param       gamen   画面ID
110         * @param       pgamen  親画面ID
111         */
112        @Override       // DBConstValue
113//      public void init( final String table, final String user, final String gamen, final String pgamen ) {
114        public void init( final String table, final String user, final String gamen, final String pgamen ) {
115                if( isUseClm( table ) ) {
116                                                                        // TIMESTAMP型なので '2009-12-22 16:06:32' 形式にする。
117                        final String timestamp = "'" + DateSet.getDate( "yyyy-MM-dd HH:mm:ss" ) + "'" ;         // 6.4.2.0 (2016/01/29)
118
119                        insKeys = MSTR_INSKEYS;
120                        insVals = new String[] {
121                                                         "'0'"                  // DeleteFlg
122                                                        ,timestamp              // EntryDate
123                                                        ,timestamp              // RenewDate
124                        };
125
126                        updKeys = MSTR_UPDKEYS;
127                        updVals = new String[] {
128                                                         timestamp              // RenewDate
129                        };
130
131                        // 4.3.7.0 (2009/06/01)
132                        logDelKeys = MSTR_LOGDELKEYS;
133                        logDelVals = new String[] {
134                                                         "'1'"                  // DeleteFlg
135                                                        ,timestamp              // RenewDate
136                        };
137                }
138        }
139
140//      /**
141//       * インサートする場合のキー配列を返します。
142//       *
143//       * 指定の値がなければ、長さゼロ配列を返します。
144//       *
145//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
146//       *
147//       * @return      インサートする場合の値配列(非null)
148//       */
149//      @Override       // DBConstValue
150//      public String[] getInsertKeys() {
151//              return insKeys.clone();
152//      }
153
154//      /**
155//       * インサートする場合の値配列を返します。
156//       *
157//       * 指定の値がなければ、長さゼロ配列を返します。
158//       *
159//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
160//       *
161//       * @return      インサートする場合の値配列(非null)
162//       */
163//      @Override       // DBConstValue
164//      public String[] getInsertVals() {
165//              return insVals.clone();
166//      }
167
168//      /**
169//       *アップデートする場合のキー配列を返します。
170//       *
171//       * 指定の値がなければ、長さゼロ配列を返します。
172//       *
173//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
174//       *
175//       * @return      アップデートする場合のキー配列(非null)
176//       */
177//      @Override       // DBConstValue
178//      public String[] getUpdateKeys() {
179//              return updKeys.clone();
180//      }
181
182//      /**
183//       * アップデートする場合の値配列を返します。
184//       *
185//       * 指定の値がなければ、長さゼロ配列を返します。
186//       *
187//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
188//       *
189//       * @return      アップデートする場合のキー配列(非null)
190//       */
191//      @Override       // DBConstValue
192//      public String[] getUpdateVals() {
193//              return updVals.clone();
194//      }
195
196//      /**
197//       * デリート(論理削除) する場合のキー配列を返します。
198//       *
199//       * 指定の値がなければ、長さゼロ配列を返します。
200//       *
201//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
202//       *
203//       * @return      デリートする場合のキー配列(非null)
204//       */
205//      @Override       // DBConstValue
206//      public String[] getLogicalDeleteKeys() {
207//              return logDelKeys.clone();
208//      }
209
210//      /**
211//       * デリート(論理削除) する場合の値配列を返します。
212//       *
213//       * 指定の値がなければ、長さゼロ配列を返します。
214//       *
215//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
216//       *
217//       * @return      デリートする場合のキー配列(非null)
218//       */
219//      @Override       // DBConstValue
220//      public String[] getLogicalDeleteVals() {
221//              return logDelVals.clone();
222//      }
223
224//      /**
225//       * カラムを返すかどうかを決めるロジック
226//       *
227//       * テーブル名より、ロジック的に導き出します。
228//       *
229//       * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。
230//       *
231//       * @param       table   テーブル名
232//       *
233//       * @return      カラムを返すかどうか(true:カラムを生成/false:カラムは生成しない)
234//       */
235//      private boolean isUseClm( final String table ) {
236//              return table != null ;                                                  // 6.4.2.0 (2016/01/29) PMD refactoring.
237//      }
238}