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     * こã?クラスは、GrowingMIS Ver6用の管ç�?‚¯ラスですã?
024     * 具体的にはã€?
025     *     物ç�?EQ     SEQxxxx   (xxxxはãƒ??ブルå�?
026     *     作æ?日æ™?   DYSET
027     *     作æ??°?§    PGSET
028     *     作æ?親?°?§  PGPSET
029     *     作æ?社員    USRSET
030     *     更新日æ™?   DYUPD
031     *     更新?°?§    PGUPD
032     *     更新親?°?§  PGPUPD
033     *     更新社員    USRUPD
034     * などのæƒ??をã?INSERT、UPDATE の状況に応じて提供しますã?
035     * INSERT には、すべてのæƒ??(XXUPD)にもå?をセãƒ?ƒˆしますã?
036     * これは、UPDATE された日付や時刻で、ä¸?¦§検索できるようにする為でã€?
037     * null にしておくと、IS NULL で問い合わせるå¿?¦�がありますã?
038     * INSERT ãƒ??タã�?�‘取å?すå?合ã?、WHERE DYSET = DYUPD としますã?
039     * またã? 物ç�?EQは、SEQxxxx(xxxxはãƒ??ブルå�?形式ã?カラãƒ?��としã?
040     * 値は、SEQxxxxS01.NEXTVAL としますã?
041     *
042     * コンストラクターでは、テーブル名ã?ユーザーID,画面ID を受け取りますã?
043     * 登録時刻は、このオブジェクトが生æ?された時間を通常は使用しますã?
044     * ãƒ??ブル名を渡すã?は、ワークなど、テーブル単位に処ç�?�™るカラãƒ?�Œ
045     * 異なるã?で、それへの対応ですã?
046     * 処ç�?�Œ簡ç´?Œ–できるように、ルールを規定すべきですã?
047     *
048     * @og.rev 5.5.1.8 (2012/04/17) 新規追åŠ?
049     * @og.group ãƒ??タ登録
050     *
051     * @version  5.5
052     * @author   Kazuhiko Hasegawa
053     * @since    JDK7.0,
054     */
055    public class DBConstValue_VV implements DBConstValue {
056            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
057            private static final String VERSION = "5.5.1.8 (2012/04/17)" ;
058    
059    //      private static final String[] MSTR_INSKEYS =
060    //              new String[] { "DYSET","PGSET","PGPSET","USRSET","DYUPD","PGUPD","PGPUPD","USRUPD" };
061    
062            private static final String[] MSTR_UPDKEYS =
063                    new String[] { "DYUPD","PGUPD","PGPUPD","USRUPD" };
064    
065            private static final String[] ZERO = new String[0] ;
066    
067            private String[] insKeys = ZERO;
068            private String[] insVals = ZERO;
069    
070            private String[] updKeys = ZERO;
071            private String[] updVals = ZERO;
072    
073            /**
074             * 初期化情報を設定しますã?
075             *
076             * @param       table   ãƒ??ブルå�?
077             * @param       user    ユーザーID
078             * @param       gamen   画面ID
079             */
080            public void init( final String table, final String user, final String gamen ) {
081                    if( isUseClm( table ) ) {
082                            String userID  = "'" + user + "'";
083                            String gamenID = "'" + gamen + "'";
084                            String timestamp = "'" + HybsSystem.getDate( "yyyyMMddHHmmss" ) + "'" ;
085                            String seqID   = "SEQ" + table ;
086                            String seqFanc = "SEQ" + table + "S01.NEXTVAL" ;
087    
088    //                      insKeys = MSTR_INSKEYS;
089                            insKeys = new String[] { seqID, "DYSET","PGSET","PGPSET","USRSET","DYUPD","PGUPD","PGPUPD","USRUPD" };
090                            insVals = new String[] {
091                                                             seqFanc                // SEQ領域の関数
092                                                            ,timestamp              // DYSET
093                                                            ,gamenID                // PGSET
094                                                            ,gamenID                // PGPSET
095                                                            ,userID                 // USRSET
096                                                            ,timestamp              // DYUPD
097                                                            ,gamenID                // PGUPD
098                                                            ,gamenID                // PGPUPD
099                                                            ,userID                 // USRUPD
100                            };
101    
102                            updKeys = MSTR_UPDKEYS;
103                            updVals = new String[] {
104                                                             timestamp              // DYUPD
105                                                            ,gamenID                // PGUPD
106                                                            ,gamenID                // PGPUPD
107                                                            ,userID                 // USRUPD
108                            };
109                    }
110            }
111    
112            /**
113             * インサートするå?合ã?キー配å?を返しますã?
114             *
115             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
116             *
117             * @return      インサートするå?合ã?キー配å?(非null)
118             */
119            public String[] getInsertKeys() {
120                    return insKeys.clone();
121            }
122    
123            /**
124             * インサートするå?合ã?値配å?を返しますã?
125             *
126             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
127             *
128             * @return      インサートするå?合ã?キー配å?(非null)
129             */
130            public String[] getInsertVals() {
131                    return insVals.clone();
132            }
133    
134            /**
135             * アãƒ??ãƒ??トするå?合ã?キー配å?を返しますã?
136             *
137             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
138             *
139             * @return      アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
140             */
141            public String[] getUpdateKeys() {
142                    return updKeys.clone();
143            }
144    
145            /**
146             * アãƒ??ãƒ??トするå?合ã?値配å?を返しますã?
147             *
148             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
149             *
150             * @return      アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
151             */
152            public String[] getUpdateVals() {
153                    return updVals.clone();
154            }
155    
156            /**
157             * ãƒ?ƒªーãƒ?論理削除) する場合ã?キー配å?を返しますã?
158             *
159             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
160             *
161             * @return      ãƒ?ƒªートするå?合ã?キー配å?(非null)
162             */
163            public String[] getLogicalDeleteKeys() {
164                    return ZERO;
165            }
166    
167            /**
168             * ãƒ?ƒªーãƒ?論理削除) する場合ã?値配å?を返しますã?
169             *
170             * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
171             *
172             * @return      ãƒ?ƒªートするå?合ã?キー配å?(非null)
173             */
174            public String[] getLogicalDeleteVals() {
175                    return ZERO;
176            }
177    
178            /**
179             * カラãƒ?‚’返すかどã�?�‹を決めるロジãƒ?‚¯
180             *
181             * ãƒ??ブル名が存在してã�?‚Œば、利用可能と判断しますã?
182             * これは、履歴ãƒ??ブルなど、この処ç�?‚’使わなã�??合にã€?
183             * ãƒ??ブル名から判定するå?合に使ã�?�¾すã?現時点では、履歴ãƒ??ブルは
184             * フレーãƒ?ƒ¯ーク側で変更するのではなくã?トリガ等による自動収é›?�¨
185             * しますã?で、判定対象としてã�?�¾せんã€?
186             *
187             * @param       table   ãƒ??ブルå�?
188             *
189             * @return      カラãƒ?‚’返すかどã�?�‹(true:カラãƒ?‚’生æ?/false:カラãƒ??生æ?しなã�?
190             */
191            private boolean isUseClm( final String table ) {
192                    boolean flag = ( table != null && table.length() > 0 ) ;
193    
194                    return flag ;
195            }
196    }