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.plugin.query;
017    
018    import org.opengion.hayabusa.common.HybsSystem;
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.group ãƒ??タ登録
042     *
043     * @version  4.0
044     * @author   Kazuhiko Hasegawa
045     * @since    JDK5.0,
046     */
047    public class DBConstValue_MICS implements DBConstValue {
048            private static final String[] MSTR_INSKEYS =
049                    new String[] { "DELETEFLG","ENTRYDATE","RENEWDATE" };
050    
051            private static final String[] MSTR_UPDKEYS =
052                    new String[] { "RENEWDATE" };
053    
054            private static final String[] MSTR_LOGDELKEYS = // 4.3.7.0 (2009/06/01)
055                    new String[] { "DELETEFLG","RENEWDATE" };
056    
057            private static final String[] ZERO = new String[0] ;
058    
059            private String[] insKeys = ZERO;
060            private String[] insVals = ZERO;
061    
062            private String[] updKeys = ZERO;
063            private String[] updVals = ZERO;
064    
065            private String[] logDelKeys = ZERO; // 4.3.7.0 (2009/06/01)
066            private String[] logDelVals = ZERO; // 4.3.7.0 (2009/06/01)
067    
068            /**
069             * 初期化情報を設定しますã?
070             *
071             * @param       table   ãƒ??ブルå�?
072             * @param       user    ユーザーID
073             * @param       gamen   画面ID
074             */
075            public void init( final String table, final String user, final String gamen ) {
076                    init( table, user, gamen, "" );
077            }
078    
079            /**
080             * 初期化情報を設定しますã?
081             *
082             * @param       table   ãƒ??ブルå�?
083             * @param       user    ユーザーID
084             * @param       gamen   画面ID
085             * @param       pgamen  親画面ID
086             */
087            public void init( final String table, final String user, final String gamen, final String pgamen ) {
088                    if( isUseClm( table ) ) {
089                                                                            // TIMESTAMP型なので '2009-12-22 16:06:32' 形式にするã€?
090                            String timestamp = "'" + HybsSystem.getDate( "yyyy-MM-dd HH:mm:ss" ) + "'" ;
091    
092                            insKeys = MSTR_INSKEYS;
093                            insVals = new String[] {
094                                                             "'0'"                  // DeleteFlg
095                                                            ,timestamp              // EntryDate
096                                                            ,timestamp              // RenewDate
097                            };
098    
099                            updKeys = MSTR_UPDKEYS;
100                            updVals = new String[] {
101                                                             timestamp              // RenewDate
102                            };
103    
104                            // 4.3.7.0 (2009/06/01)
105                            logDelKeys = MSTR_LOGDELKEYS;
106                            logDelVals = new String[] {
107                                                             "'1'"                  // DeleteFlg
108                                                            ,timestamp              // RenewDate
109                            };
110                    }
111            }
112    
113            /**
114             * インサートするå?合ã?キー配å?を返しますã?
115             *
116             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
117             *
118             * @return      インサートするå?合ã?値配å?(非null)
119             */
120            public String[] getInsertKeys() {
121                    return insKeys.clone();
122            }
123    
124            /**
125             * インサートするå?合ã?値配å?を返しますã?
126             *
127             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
128             *
129             * @return      インサートするå?合ã?値配å?(非null)
130             */
131            public String[] getInsertVals() {
132                    return insVals.clone();
133            }
134    
135            /**
136             *アãƒ??ãƒ??トするå?合ã?キー配å?を返しますã?
137             *
138             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
139             *
140             * @return      アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
141             */
142            public String[] getUpdateKeys() {
143                    return updKeys.clone();
144            }
145    
146            /**
147             * アãƒ??ãƒ??トするå?合ã?値配å?を返しますã?
148             *
149             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
150             *
151             * @return      アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
152             */
153            public String[] getUpdateVals() {
154                    return updVals.clone();
155            }
156    
157            /**
158             * ãƒ?ƒªーãƒ?論理削除) する場合ã?キー配å?を返しますã?
159             *
160             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
161             *
162             * @return      ãƒ?ƒªートするå?合ã?キー配å?(非null)
163             */
164            public String[] getLogicalDeleteKeys() {
165                    return logDelKeys.clone();
166            }
167    
168            /**
169             * ãƒ?ƒªーãƒ?論理削除) する場合ã?値配å?を返しますã?
170             *
171             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
172             *
173             * @return      ãƒ?ƒªートするå?合ã?キー配å?(非null)
174             */
175            public String[] getLogicalDeleteVals() {
176                    return logDelVals.clone();
177            }
178    
179            /**
180             * カラãƒ?‚’返すかどã�?�‹を決めるロジãƒ?‚¯
181             *
182             * ãƒ??ブル名よりã?ロジãƒ?‚¯çš?�«導き出しますã?
183             *
184             * @param       table   ãƒ??ブルå�?
185             *
186             * @return      カラãƒ?‚’返すかどã�?�‹(true:カラãƒ?‚’生æ?/false:カラãƒ??生æ?しなã�?
187             */
188            private boolean isUseClm( final String table ) {
189                    boolean flag = ( table != null ) ;
190    
191                    return flag ;
192            }
193    }